我正在尝试在 box2d 世界中使用两个动作序列移动相机。目标是要有一个平滑的过渡,让用户在相机平移时看到整个游戏空间。第一个序列包含一个短暂的延迟动作,然后是一个将相机从右向左移动的动作。第二个序列包含相同的短延迟动作,然后是缩小动作和放大动作。缩小和放大的组合持续时间等于平移动作。不幸的是,两个序列中的动作都没有对齐。相反,一个序列的一部分将运行,然后另一个序列的一部分将运行,最后它们以同步方式运行序列的最后一部分。以下是我正在使用的代码:
[self runAction:
[CCSequence actions:
[CCDelayTime actionWithDuration:0.5],
[CCMoveBy actionWithDuration: 1.0f
position:ccp(-lastXPositionForCamera, 0)],
[CCCallFunc actionWithTarget:self
selector:@selector(startOver)],
nil]];
// Run a second action at the same time.
// This second action will cause the camera to zoom out and then back in
[self runAction:
[CCSequence actions:
[CCDelayTime actionWithDuration:0.5],
[CCScaleTo actionWithDuration: 0.5f scale:0.5f],
[CCScaleTo actionWithDuration: 0.5f scale:1.0f], nil]];
所以会发生以下情况:相机缩小后会有轻微的延迟。相机缩小后,相机将开始从右向左平移,同时重新放大。
如果我将初始 CCDelayTime 更改为 0.4,则行为会略有不同。在这种情况下,摄像机会在短暂延迟后开始从右向左平移。然后在相机缩小时停止平移。最后,相机将继续从右向左平移,同时重新放大。
如果上面的代码没有任何问题,那么有没有更好的方法来进行包含缩放动作和平移动作的平滑过渡?