答案 0 :(得分:0)
如果您希望球不在x轴上移动,可以在position.x
函数中将其update()
设置为指定值。
答案 1 :(得分:0)
在SpriteKit中移动节点可以通过以下几种方式完成:
重要的是何时使用什么。
使用物理移动节点
如果您对真实的物理模拟以及接触检测感兴趣,并且您想让球与不同的物体发生碰撞,或者让它受到重力场等的影响,您应该坚持使用applyImpulse:和applyForce:方法(或你甚至可以改变节点物理体的速度矢量。此外,在这种情况下不建议使用SKAction,因为基本上你是在节点与物理模拟不同步(SO上有很多关于此的帖子)。
如果您对真实物理模拟(碰撞等)不感兴趣,但仅在接触检测中,您可以在使用动作移动时将物理实体连接到节点。在这种情况下,您应该将节点物理主体的collisionBitMask
设置为0。
通过更改物理主体的速度属性来移动节点
这是将具有附加物理主体的节点移动到它的常规方法。如果您想要完全控制节点应该随时移动的方式,这可能很有用。如果您正在移动这样的节点,则不应尝试使用操作移动节点(不应混用这两种技术)。
移动带有操作的节点
动作是移动节点的非常方便的方法。如果您只想将节点从A点移动到B点,那么这是最简单的方法。您可以使用名称运行操作,稍后在代码中可以使用该名称访问该操作,这样您就可以完全控制该操作(您可以停止它,暂停或加快它)。
此外,SKAction类中还有一些方法可以让您以简单的方式以多种方式移动节点...例如,您可以使用followPath: duration:方法沿预定义路径移动节点。
通过更改位置属性来移动节点
只有在对真实物理模拟不感兴趣时,才应更改节点的位置属性。您仍然可以利用接触检测并将物理主体连接到节点,同时移动这样的节点。
答案 2 :(得分:0)
SKPhysicsBody
具有一个名为allowsRotation
的属性。将其设置为false
。将此与didSimulatePhysics
答案的更改一起使用。参考
https://developer.apple.com/documentation/spritekit/skphysicsbody/1519986-allowsrotation