2

我目前有一个场景,它在场景的根部包含一个具有类地几何形状的中心节点和一个代表飞行器的节点。

但是我找不到控制车辆运动的正确方法。我需要在以静态高度和速度进行轨道运行时左右转的能力。

我尝试了许多动画和物理体力的组合,所有这些都导致了不良结果。

我最接近的是:

  • 将车辆的 pivot 属性设置为场景的中心
  • 然后设置一个像下面这样的动作来控制前进

    [_vehicleNode runAction:[SCNAction repeatActionForever:[SCNAction rotateByX:-1 y:0 z:0 duration:10.0]]];
    
  • 然后最后施加力左转和右转

    [_vehicleNode.physicsBody applyTorque:SCNVector4Make(0, 1, 0, 1) impulse:YES];
    

但是,我似乎无法将枢轴和/或位置设置为正确的值以获得所需的结果。

编辑:似乎上述方法将是我正在寻找的解决方案,但是由于某种原因,当我将几何图形添加到车辆节点时,它在场景图中的位置发生了巨大变化。当我添加硬编码按钮以将其位置更改为它所属的位置时,它仅对那个单帧显示正确,然后直接回到不知名的地方。

编辑2:用原始球体替换所有几何体以测试节点现在按预期旋转,但现在不受物理力的影响,似乎忽略了它作为dynamicBody的声明。

4

1 回答 1

0

如果我了解您要正确实现的目标,则可以尝试以下操作:

  • 将第一个节点添加到场景中,位于 (0,0,0) 并使用SCNAction
  • 将您的船节点添加为第一个节点的子节点。将其定位在 (X,0,0) 处,使其绕地球运行
  • 使用动作或动画沿 X 轴旋转您的船节点
于 2014-07-25T17:12:40.553 回答