【问题标题】:iOS Animation 2D gameiOS 动画 2D 游戏
【发布时间】:2013-02-04 19:14:48
【问题描述】:

我正在为 iPhone 制作一个 2D 游戏的应用程序。 我已经完成了所有的 spritesheets,但现在我需要特别为其中的一些设置动画: 我的游戏是你的英雄应该避开一些障碍的游戏。边界应该移动,以通过增加速度来给人一种游戏更加困难的印象(所以英雄看起来越来越快)。我有我的边框图像,但真的不知道如何动态为其设置动画,当图像结束时,将图像的顶部放在它后面。

注意:我知道如何进行翻译,为图像设置动画,但在这里我需要越来越快地对其进行动画处理,以便动态改变动画的速度。

感谢您的帮助!

代码或 UIImageView :

nuages_bas2 = [[UIImageView alloc] initWithFrame:CGRectMake(-100, 0, 160, 1000)];
UIImage * ImageNuages = [UIImage imageNamed:@"Menu_nuage.png"];
nuages_bas2.image = ImageNuages;
nuages_bas2.alpha = 0.0f;
[menu_principale addSubview:nuages_bas2];
[nuages_bas2 release];

其中一个动画的代码:

- (void)AnimationNuagesBas2
{
nuages_bas2.alpha = 1.0f;
CABasicAnimation * nuagesbas2 = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
nuagesbas2.fromValue = [NSNumber numberWithFloat:480.0f];
nuagesbas2.toValue = [NSNumber numberWithFloat:-960.0f];
nuagesbas2.duration = 35.0f;
nuagesbas2.repeatCount = 10;
[nuages_bas2.layer addAnimation:nuagesbas2 forKey:@"nuagesbas2"];
}

【问题讨论】:

  • 你能发布一些你正在使用的代码吗?所以我们知道你用什么类来做动画等等......
  • 完成。我的 UIImageView 在翻译结束时必须重复,并且翻译的动画必须具有动态持续时间。
  • 只是澄清一下,您是否希望它在每次重复后变得更快(因此使用您当前的代码,它会变得越来越快 10 倍)。还是您希望它在每次重复时逐渐加快速度?
  • 我只想在每次重复后逐步加快速度。

标签: ios objective-c animation scroll


【解决方案1】:

首先,如果您正在制作游戏,您可能不应该使用 UIKit,除非它非常简单。你应该看看像cocos2d这样的库

至于这个问题,你不妨看看CAKeyframeAnimation。我将尝试勾勒出一些可以执行此类操作的代码,但您可能需要对其进行修改(另外,我没有办法对其进行测试)。

请注意,下面的内容是一个 hack,它包括创建一个关键帧动画,其中对象每次都以较短的持续时间来回移动。

- (void)AnimationNuagesBas2
{
    nuages_bas2.alpha = 1.0f;
    CAKeyframeAnimation * nuagesbas2 = [CAKeyframeAnimation animationWithKeyPath:@"transform.translation.y"];
    float from = [NSNumber numberWithFloat:480];
    float to = [NSNumber numberWithFloat:-960];
    int repeatCount = 10;
    float duration = 6;
    float durationDecrease = 0.5;
    float t = 0;
    NSMutableArray * values = [NSMutableArray array];
    NSMutableArray * times = [NSMutableArray array];
    [values addObject:from];
    [times addObject:[NSNumber numberWithFloat:0]];
    for (int i = 0; i < repeatCount; i++){
        t += duration/2;
    [values addObject:to];
    [times addObject:[NSNumber numberWithFloat:t]];
        t += duration/2;
    [values addObject:from];
    [times addObject:[NSNumber numberWithFloat:t]];
    duration -= durationDecrease;
    }

    [nuages_bas2.layer addAnimation:nuagesbas2 forKey:@"nuagesbas2"];
}

另一种方法是将自己设置为CABasicAnimation 的代理,并将其repeatCount 设置为0。然后,每次完成时,您都以更短的持续时间重新启动它。

【讨论】:

  • 今天下午我会试试你的解决方案。您对如何使用 UIImageView 使背景移动有任何想法吗?并且在第一个图像结束后图像重新启动?所以我可以用一张图片做一个无限大的背景
  • 我不确定你的背景移动是什么意思(这不是像在其他所有移动的东西后面都有一个 UIImageView 一样简单吗?)。至于无限重复,最好的办法似乎是有一个非常大的repeatCount
  • 是的,仅此而已,我想要一个 UIImageView 制作一个可以移动的背景!但我不知道如何只用一张图片来制作这个?
  • 有一个比屏幕宽的图像并移动它吗?没有更详细的解释你的意思很难说。检查此答案以获取有关如何在 fromValue 和 toValue 之间来回进行无限重复的示例:stackoverflow.com/questions/784365/…(使用animation.autoreverses)
  • 我知道这很难,而且由于没有声望点,我无法发布一些图片来解释你:/我会在你的帮助下尝试看看,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-04
相关资源
最近更新 更多