【问题标题】:Controlling movement of flying a vehicle with SceneKit使用 SceneKit 控制飞行器的运动
【发布时间】:2014-09-17 13:09:17
【问题描述】:

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

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

我尝试了多种动画和物理体力的组合,但都导致了不良结果。

我最接近的是:

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

    [_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 的声明。

【问题讨论】:

    标签: ios 3d core-animation scenekit game-physics


    【解决方案1】:

    如果我理解您要正确实现的目标,您可以试试这个:

    • 将第一个节点添加到场景中,定位在 (0,0,0) 并使用 SCNAction 使其沿 Y 轴永远旋转
    • 将您的船节点添加为第一个节点的子节点。将其定位在 (X,0,0) 处,使其围绕地球运行
    • 使用动作或动画沿 X 轴旋转飞船节点

    【讨论】:

    • 我可能有点不清楚使用轨道来解释我想要达到的效果。当车辆旋转时,我需要改变它的动量方向。
    猜你喜欢
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2016-08-04
    • 2018-12-29
    • 2016-02-28
    • 1970-01-01
    • 2012-03-04
    • 2011-09-21
    相关资源
    最近更新 更多