2017-01-03 75 views
2

我想知道如何对弹丸(特别是SKSpriteNode)施加一个力或推力,使它不断移动直至碰到某物。我已经尝试了一些方法,如设置的速度是这样的:Swift 3(SpriteKit):制作弹丸移动

let node = SKSpriteNode(imageNamed: "node") 
node.physicsBody = SKPhysicsBody(rectangleOf: node.size) 
node.physicsBody.velocity = CGVector(dx: 5, dy: 5) 

或代替末改变节点的速度值,我想:

node.physicsBody?.applyImpulse(CGVector(dx: 5, dy: 5)) 

node.physicsBody?.applyForce(CGVector(dx: 5, dy: 5)) 

无这些实际上移动了射弹。我甚至试图用SKAction添加相同的冲动并永远强制每一帧,并且仍然没有移动。我真的很感激任何帮助:)谢谢。

回答

2

尝试增加一个确保消防活力对象:

let node = SKSpriteNode(imageNamed: "node") 
node.physicsBody = SKPhysicsBody(rectangleOf: node.size) 
// add this, to ensure dynamism: 
node.physicsBody.isDynamic = true 

现在所有的力量和冲动应该工作。虽然我建议使用更大的数字。取决于物体的大小和质量,但您可能需要高出几个数量级的数字才能快速移动。

+0

'isDynamic'的默认值是'true' – 0x141E

+0

我已经将它设置为false,非常感谢:)没有意识到。 –