在每个更新上为CCSprite设置动画

时间:2012-06-14 19:41:36

标签: cocos2d-iphone augmented-reality

我有一个CCSprite对象,我需要尽快更新屏幕(x,y)位置。它是一个增强现实应用程序,因此屏幕上的位置需要看起来固定在现实世界的位置。

目前,在每个update期间,我检查设备的标题和姿态,然后通过确定新的x和y位置来相应地移动精灵

[spriteObject setPosition:ccp(newX, newY)];

标题中的每个度数变化对应于屏幕位置上的10个像素,因此通过以这种方式设置位置,精灵以10个像素的间隔跳跃,看起来很愚蠢。我想通过使用

来平滑地制作动画
[spriteObject runAction:[CCMoveTo actionWithDuration:0.2f position:ccp(newX, newY)]];

但问题在于,当精灵是动画时会出现一个新的位置更新,它会使整个过程变得紧张。有人知道这个问题的一个很好的解决方案吗?任何帮助都非常感谢,因为我已经尝试了许多失败的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以尝试将精灵动作设置为动画。我的意思是,你可以在一秒钟内多次运行动画位置校正,持续时间为1 / numberOfUpdates,在一秒钟内完成。像

这样的东西
- (void) onEnter
{
    [super onEnter];
    [self schedule:@selector(updatePositionAnimated) interval:0.2f];

}

- (void) updatePositionAnimated
{
    [spriteObject runAction:[CCMoveTo actionWithDuration:0.2f position:ccp(newX, newY)]];
}

我想,在这种情况下你会有足够平滑的动画