SceneKit - 修改节点所面向方向的速度

时间:2017-08-26 19:13:17

标签: ios swift scenekit

我目前正在使用SceneKit处理ARKit游戏,但我无法控制和移动节点。游戏的布局非常简单,我有一个节点代表一个具有动态物理体的坦克。我可以成功地将节点添加到地图中,但是我想使用操纵杆控制节点。

我正在尝试修改坦克的速度属性,以便当操纵杆向上推时,坦克朝向其面向的方向向前移动。为此,我首先尝试简单地将velocity属性设置为:

t.physicsBody?.velocity = SCNVector3Make(0, 0, -0.15)

这导致水箱以所需的速度移动,但它没有朝正确的方向移动。据我所知,-z方向是前向方向。 Apple的本地与世界空间的文档非常模糊,在网上浏览后,我发现了这个堆栈溢出文章SceneKit physics add velocity in local space。我已经尝试过转换到父节点仍然没有达到预期效果的节点。我也尝试使用演示节点的物理体,它已经更新了值,但两种方式都引起了抖动,不均匀和不可预测的运动。

我会使用力量,但是我希望SCNode能够在没有加速的情况下进行非常直接的卡通动作。任何帮助了解正在发生的事情以及SceneKit处理运动的方式都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我猜你使用的是iOS11,所以我认为你可以使用SCNNode.convertVector。

let velocityInLocalSpace = SCNVector3(0, 0, -0.15)
let velocityInWorldSpace = t.presentation.convertVector(velocityInLocalSpace, to: nil)
t.physicsBody?.velocity = velocityInWorldSpace