我正在使用SpriteKit和objective-c开发Android游戏的iPhone版本。 Android版本是使用libGDX开发的。每当调用预定义的渲染方法时,通过更新坐标值来完成屏幕上的移动。在阅读SpriteKit中的文档时,我发现这里节点通过使用SKAction在屏幕上移动,其中给出了结束坐标和持续时间,并且操作应用于节点。这是节点移动的唯一方法吗?或者我是否可以在将节点添加到父节点之后更新坐标(在更新方法中根据时间间隔)(不在任何地方调用SKAction)?
答案 0 :(得分:2)
有几种方法可以让节点移动。
更改节点的坐标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中更详细地阅读每种方法。
答案 1 :(得分:1)
您可以通过指定position
属性(see the SKNode
documentation)
node.position = CGPointMake(x, y);