Sprite Kit缓动/暂停问题

4
我正在尝试为我的游戏实现一个暂停功能。目前我已经通过将精灵的速度设置为“0”来使其正常工作。但是当按下暂停按钮(速度= 0)时,应用了缓动效果的精灵会表现出奇怪的行为;它们的位置和旋转都会在动作中跳到另一个时间 / 地点,无论速度设置为“0”还是重置为“1”。我非常感谢您对此问题的帮助-可以修复我的代码或更好的解决方法 :)
我的精灵移动代码:
SKAction* _movePlayerUp = [SKAction moveToY:200 duration:3];
movePlayerUp.timingMode = SKActionTimingEaseOut;
[_playerSprite runAction: movePlayerUp];

启用暂停功能的函数:

  _playerSprite.speed = 0;

禁用暂停功能的函数:

  _playerSprite.speed = 1;

提前感谢你!

问候, Espen


5
速度不是为了暂停,使用 node.paused=YES。 - CodeSmile
非常感谢你帮助这个新手!运行得很好 :) 你们真的很有帮助,而且显然很有才华! - ezprado
1个回答

2

LearnCocos2D 是正确的(因为 Setffen Itterheim 从未错过),他们说将 _playerSprite 对象暂停的正确方式是将 paused 属性设置为 YES。但如果你想要暂停整个场景,最好的方法是在包含运行中 SKSceneSKView 上设置 paused 属性。在 SKAction 上使用的 speed 属性用于调整动作的时间,而不是真正的开始或停止它们。


OP 正在设置节点的速度(SKNode 的属性),而不是动作。 - 0x141E
谢谢!我不暂停SKView的原因是当启用暂停时,我有一个动画,而当禁用暂停时,我有一个倒计时。希望这样说得清楚 :) - ezprado
有道理。那么你可以将所有想要暂停的内容放在一个容器节点中,并暂停该节点(所有SKNode都有paused属性)。然后在其上运行动画。 - doctorBroctor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接