SceneKit - 修改节点朝向方向的速度



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

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

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

这导致坦克以所需的速度移动,但它的方向不正确。据我了解,-z 方向是正向方向。苹果关于局部空间与世界空间的文档非常模糊,在网上环顾四周后,我发现这篇堆栈溢出文章 SceneKit 物理增加了局部空间的速度。我尝试转换为父节点,但仍然没有达到预期的效果。我还尝试使用表示节点的物理主体,该物理体具有更新的值,但这两种方式都会导致抖动、不均匀和不可预测的运动。

我会使用力,但是我希望SCNode有一个非常直接和卡通化的运动,没有加速。任何帮助了解正在发生的事情以及 SceneKit 处理运动的方式将不胜感激。

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

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

最新更新