【问题标题】:Can I move a node across the screen without SKAction?我可以在没有 SKAction 的情况下在屏幕上移动节点吗?
【发布时间】:2015-05-26 01:48:50
【问题描述】:
我正在使用 SpriteKit 和 Objective-c 开发 iPhone 版本的 Android 游戏。 Android 版本是使用 libGDX 开发的。屏幕上的移动是通过在调用预定义的渲染方法时更新坐标值来完成的。在阅读 SpriteKit 中的文档时,我发现这里的节点通过使用 SKAction 在屏幕上移动,其中给出了结束坐标和持续时间,并将操作应用于节点。这是可以移动节点的唯一方法吗?或者即使在将节点添加到父节点之后(没有在任何地方调用 SKAction),我也可以更新坐标(根据时间间隔在更新方法中)?
【问题讨论】:
标签:
ios
objective-c
sprite-kit
【解决方案1】:
有几种方法可以使节点移动。
更改节点的坐标myNode.position = CGPointMake(myNode.position.x+1, myNode.position.y); 会将节点向右移动。无论他们是否有物理实体,此方法都适用。
将速度应用于节点的物理体myNode.physicsBody.velocity = CGVectorMake(100, myNode.physicsBody.velocity.dy); 将节点向右移动。你的节点需要一个物理体才能工作。
应用脉冲[myNode.physicsBody applyImpulse:CGVectorMake(100, myNode.physicsBody.velocity.dy)]; 将节点向右移动。你的节点需要一个物理体才能工作。
施加力[myNode.physicsBody applyForce:CGVectorMake(100, myNode.physicsBody.velocity.dy)]; 将节点向右移动。你的节点需要一个物理体才能工作。
当你施加力时,就像马达一直在推动。如果你施加冲动,就像踢一次球一样。
在 SKPhysicsBody reference 中更详细地了解每种方法。