我在背部手术期间一直在学习 Swift,非常感谢任何对此方面的帮助。
问题描述: 我有一个函数,可以在击中时将 Sprite 向后推。当我使用时
self.runAction(jumpBackSequence)
我得到了想要的行为。 ( Sprite 被推回一段距离。)
现在,当我更新它以使用“withKey”时(因为我需要能够在下一次接触时再次停止前进 Action ,前进运动会大大减弱。
self.runAction(jumpBackSequence, withKey: "moveStraightLine")
创建此操作的函数如下:
func pushBack(){
self.removeActionForKey("moveStraightLine")
let height:CGFloat = 5
let jumpDistanceA:CGFloat = 20
let jumpDistanceB:CGFloat = 20
let duration:NSTimeInterval = 0.15
let jumpUp = SKAction.moveByX(0, y:height, duration:duration)
let moveBack = SKAction.moveByX(jumpDistanceA, y: 0, duration: duration)
let jStep1 = SKAction.group([jumpUp, moveBack])
let jumpDown = SKAction.moveByX(0, y:(height * -1), duration:duration)
let moveBack2 = SKAction.moveByX(jumpDistanceB, y: 0, duration: duration)
let jStep2 = SKAction.group([jumpDown, moveBack2])
let moveZombie1 = SKAction.moveToX(0, duration: spawnSpeed1() )
let removeZombie1 = SKAction.removeFromParent()
let moveAndRemoveZombie1 = SKAction.sequence([moveZombie1, removeZombie1])
let jumpBackSequence = SKAction.sequence([jStep1, jStep2, moveAndRemoveZombie1])
self.runAction(jumpBackSequence)
// self.runAction(jumpBackSequence, withKey: "moveStraightLine")
}
最佳答案
您使用的是 moveTo,而不是 moveBy,因此当您重新添加 Action 来移动僵尸时,您现在是说从较近的位置开始,花费 X 秒移动到末尾,而不是花费 X 秒 - 时间已经旅行过了。由于您看到的效果,您不希望出现这种情况。使用moveBy,僵尸速度会保持一致
关于swift - SKAction 按键改变 Sprite 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847941/