gpt4 book ai didi

swift - SKAction 按键改变 Sprite 行为

转载 作者:行者123 更新时间:2023-11-30 10:02:10 25 4
gpt4 key购买 nike

我在背部手术期间一直在学习 Swift,非常感谢任何对此方面的帮助。

问题描述:我有一个函数,可以在击中时将 Sprite 向后推。当我使用时

self.runAction(jumpBackSequence)

我得到了想要的行为。 ( Sprite 被推回一段距离。)

enter image description here

现在,当我更新它以使用“withKey”时(因为我需要能够在下一次接触时再次停止前进 Action ,前进运动会大大减弱。

self.runAction(jumpBackSequence, withKey: "moveStraightLine")

enter image description here

创建此操作的函数如下:

 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com