2016-03-11 85 views
1

我试图在我的应用中实现精灵的移动速度。当我将速度应用于精灵时,它会缓慢地增加速度,直到达到最大速度。我正在寻找一种消除速度平滑增加的方法,并且始终具有完全相同的速度(直到我改变速度)Swift 2:删除速度缓慢增加

如果您有任何问题,请随时添加评论。

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) 

} 
+1

精灵的物理特性是什么?你有什么力量(重力,阻尼等)在环境中? – GoZoner

+0

@GoZoner刚刚更新了问题。精灵不受重力的影响。 – Gjeruldsen

+0

你有没有尝试设置physicsBody.dynamic为false?既然你想要一个恒定的速度,这将消除所有施加到它的力量。 – Emptyless

回答

0

而不是改变的速度,你有没有试着用力向量像这样每次更新:

override func update(currentTime: NSTimeInterval) { 

    enemy1.physicsBody!.applyForce = CGVectorMake(70, 0) 

} 
0

我想你代码,它对我来说是正确的(精灵从一开始就有一个恒定的速度)。它总是这样工作。你可以通过在一个空的SpriteKit项目中粘贴你的代码来检查。目前,您所描述的看起来像是实际使用applyForce方法,而不是直接更改速度矢量。

解决方案当然是直接改变速度属性,就像你说你现在正在做的那样。可能你意外地在代码的某处覆盖了这种行为,因为你描述的内容不可重现(使用你提供的代码)。