我打算从左到右随机地沿x轴移动一批精灵,说0到320和 从右到左说320到0,有一些常数持续时间,
此外,我将每个精灵放置在x轴的随机位置,
但是当我创建我的一批精灵并在每个精灵上应用该障碍时
SKAction *moveRight = [SKAction moveToX:320 duration:walkAnim.duration];
SKAction *moveLeft = [SKAction moveToX:0 duration:walkAnim.duration];
一段时间后,整批精灵正朝着一个方向移动,从左到右,然后从右到左
我知道问题出在我的方法上,moveToX
常量持续时间
在我的情况下,我需要常量持续时间,我们在moveToX
中有什么像我们在
[UIView setAnimationBeginsFromCurrentState:YES]
这样我就可以解决x轴上随机位置的批量精灵的问题
注意当我给每个精灵调用该动作一些空间时,它的工作正常,但我需要一次全部。
可以从here
获取示例应用 修改
我需要更新代码here
但我需要骰子上存在的所有精灵,没有任何Timeinterval,并且对所有精灵都应用相同的动作。
任何建议都将受到赞赏
感谢
Umer
答案 0 :(得分:1)
要获得恒定速度,您需要根据精灵的当前位置计算第一次移动动作的持续时间。完成第一步后,您可以使用moveRight
和moveLeft
操作。以下是开始向右移动的示例。
CGFloat durationForFullDistance = walkAnim.duration;
CGFloat fullDistance = 320;
CGFloat firstDistance = fullDistance - sprite.position.x;
CGFloat durationForFirstMove = durationForFullDistance*firstDistance/fullDistance;
SKAction *firstMoveRight = [SKAction moveToX:320 duration:durationForFirstMove];
SKAction *moveRight = [SKAction moveToX:320 duration:durationForFullDistance];
SKAction *moveLeft = [SKAction moveToX:0 duration:durationForFullDistance];
SKAction *continousMove = [SKAction sequence:@[
firstMoveRight,
[SKAction repeatActionForever:[SKAction sequence:@[
moveLeft,
moveRight
]]]
]];
]]