我试图在我的应用中影响精灵的移动速度。当我对精灵施加速度时,速度会慢慢增加,直到达到最大速度。我正在寻找一种方法来消除速度的平滑增加,并且始终保持完全相同的速度(直到我改变速度)
如果您有任何问题,请随时添加评论。
enemy1 = SKSpriteNode(texture: enemyTexture)
enemy1.position = CGPoint(x: CGRectGetMidX(self.frame) - 300, y: CGRectGetMidY(self.frame) - 300)
enemy1.physicsBody = SKPhysicsBody(texture: enemyTexture, size: enemyTexture.size())
enemy1.physicsBody!.affectedByGravity = false
enemy1.physicsBody!.allowsRotation = false
self.addChild(enemy1)
这是我应用于精灵的速度。我正在更新功能中继续移动速度:
override func update(currentTime: NSTimeInterval) {
enemy1.physicsBody!.velocity = CGVectorMake(70, 0)
}
答案 0 :(得分:0)
您是否尝试为每个更新应用力矢量,而不是更改速度:
override func update(currentTime: NSTimeInterval) {
enemy1.physicsBody!.applyForce = CGVectorMake(70, 0)
}
答案 1 :(得分:0)
我尝试了你的代码,它对我来说正常工作(精灵从一开始就具有恒定的速度)。它总是像那样工作。您可以通过在空的SpriteKit项目中粘贴代码来检查这一点。目前,您所描述的内容看起来实际上是在使用applyForce
方法,而不是直接更改速度矢量。
解决方案当然是直接改变速度属性,就像你说你现在正在做的那样。您可能会意外地在代码中的某处覆盖此行为,因为您所描述的内容不可重现(使用您提供的代码)。