0

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

目前,每次update我检查设备的航向和姿态,然后通过确定新的 x 和 y 位置相应地移动精灵

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

航向的每一度变化对应于屏幕位置的 10 个像素,因此通过以这种方式设置位置,精灵会以 10 个像素的间隔跳跃,这看起来很愚蠢。我想流畅地制作动画,也许通过使用

[spriteObject runAction:[CCMoveTo actionWithDuration:0.2f position:ccp(newX, newY)]];

但这里的问题是,在精灵动画时会出现新的位置更新,这有点搞砸了整个事情。有人知道这个问题的一个很好的解决方案吗?非常感谢任何帮助,因为我已经尝试了许多失败的解决方案。

4

1 回答 1

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)]];
}

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

于 2012-06-14T22:07:52.233 回答