适用于iOS的Cocos2d中的平滑动画

时间:2011-11-21 20:48:26

标签: animation cocos2d-iphone ccsprite

我使用以下代码在iOS设备的屏幕上移动一个简单的CCSprite

[self schedule:@selector(update:) interval:0.0167];

- (void) update:(ccTime) delta {
    CGPoint currPos = self.position;
    currPos.x += xVelocity;
    currPos.y += yVelocity;

    self.position = currPos;
}

但是这可以使动画不顺畅。 如何改善动画的流畅度?

我的场景非常简单(只有一个全屏CCSprite,背景图片和相对较小的CCSprite,移动速度很快。)

我已经记录了ccTime delta并且它不一致(它几乎总是大于我指定的0.0167的间隔...有时高达4倍)。

我已经考虑将更新方法中的运动定制为增量时间(更大的delta =>更大的运动等)。然而,鉴于我的场景简单,似乎有一种更好的方法(以及我可能遗漏的基本内容)。

2 个答案:

答案 0 :(得分:2)

调度程序将尝试按照您的间隔调整并调用您的选择器,但如果有其他进程正在运行,则可以更早或更晚(因此不一致)。

相反,将xVelocity和yVelocity乘以delta - 这应该将速度缩放为更平滑的运动。

例如:

- (void) update:(ccTime) delta {
    CGPoint currPos = self.position;
    currPos.x += (xVelocity * delta);
    currPos.y += (yVelocity * delta);

    self.position = currPos;
}

答案 1 :(得分:1)

尝试使用默认的[self scheduleUpdate]方法而不是直接调用它,看看是否有所作为。此方法专为您正在进行的操作而设计,可能更顺畅。