我正在使用 SpriteKit 和 objective-c 开发 Android 游戏的 iPhone 版本。 Android 版本是使用 libGDX 开发的。每当调用预定义的渲染方法时,通过更新坐标值来完成屏幕上的移动。在阅读 SpriteKit 中的文档时,我发现这里的节点是通过使用 SKAction 在屏幕上移动的,其中给出了结束坐标和持续时间,并将 Action 应用于节点。这是移动节点的唯一方法吗?或者即使在将节点添加到父节点之后(无需在任何地方调用 SKAction),我也可以更新坐标(根据时间间隔在更新方法中)吗?
最佳答案
有几种方法可以使节点移动。
更改节点的坐标
myNode.position = CGPointMake(myNode.position.x+1, myNode.position.y);
会将节点向右移动。无论他们是否有物理 body ,这种方法都适用。将速度应用于节点的物理体
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 中更详细地阅读每种方法.
关于ios - 我可以在没有 SKAction 的情况下在屏幕上移动节点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29204024/