我可以在没有SKAction的情况下在屏幕上移动节点吗?

时间:2015-03-23 05:55:11

标签: ios objective-c sprite-kit

我正在使用SpriteKit和objective-c开发Android游戏的iPhone版本。 Android版本是使用libGDX开发的。每当调用预定义的渲染方法时,通过更新坐标值来完成屏幕上的移动。在阅读SpriteKit中的文档时,我发现这里节点通过使用SKAction在屏幕上移动,其中给出了结束坐标和持续时间,并且操作应用于节点。这是节点移动的唯一方法吗?或者我是否可以在将节点添加到父节点之后更新坐标(在更新方法中根据时间间隔)(不在任何地方调用SKAction)?

2 个答案:

答案 0 :(得分:2)

有几种方法可以让节点移动。

  1. 更改节点的坐标myNode.position = CGPointMake(myNode.position.x+1, myNode.position.y);会将节点向右移动。无论是否有物理体,这种方法都适用。

  2. 将速度应用于节点的物理主体myNode.physicsBody.velocity = CGVectorMake(100, myNode.physicsBody.velocity.dy);将节点移动到右侧。您的节点需要物理主体才能工作。

  3. 应用冲动[myNode.physicsBody applyImpulse:CGVectorMake(100, myNode.physicsBody.velocity.dy)];将节点移动到右侧。您的节点需要物理主体才能工作。

  4. 应用力[myNode.physicsBody applyForce:CGVectorMake(100, myNode.physicsBody.velocity.dy)];将节点移动到右侧。您的节点需要物理主体才能工作。

  5. 当你施加力量就像电动机一直在推动。如果你施加冲动就像踢球一样。

    在SKPhysicsBody reference中更详细地阅读每种方法。

答案 1 :(得分:1)

您可以通过指定position属性(see the SKNode documentation

来移动节点
node.position = CGPointMake(x, y);