首页 文章

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

提问于
浏览
0

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

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

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

这导致油箱以所需的速度移动,但是它没有朝正确的方向移动。据我所知,-z 方向是朝前的方向。 Apple 的本地与世界空间的文档非常模糊,在网上浏览后我发现这个堆栈溢出文章SceneKit 物理在局部空间中添加速度。我试过转换到父节点仍然没有达到预期的效果。我也尝试使用演示节点的物理主体,它具有更新的值,但两种方式都会导致抖动,non-uniform 和不可预测的移动。

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

1 回答

  • 0

    我猜你使用 iOS11,所以我认为你可以使用 SCNNode.convertVector 来实现你的目的。

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

相关问题