1

用户控制在球体表面上移动的蛇。我将相机和蛇的头部连接到一个与可见球体大小相同的假想球体上:

    headNode.addChildNode(cameraNode)
    controlNode.addChildNode(headNode)
    scene.rootNode.addChildNode(controlNode)

用户点击两个按钮来左右旋转蛇。我使用一些基本的三角函数将这个“2D”旋转转换为它的组件,我用它来旋转每帧的 controlNode:

    velocity.x = cos(rotation)
    velocity.y = sin(rotation)

    controlNode.eulerAngles.x += velocity.x
    controlNode.eulerAngles.y += velocity.y

当在球体的大部分上移动时,这非常顺利,但在球体的两个极点(沿 y 轴),蛇的行为很奇怪。这是一个 gif,显示了球体大部分的正常运动,然后是两极的奇怪运动:

gif 太大,无法上传,所以在 imgur 上

它移动的方式就像它从杆子上反弹一样,我一辈子都无法解决它。如果有人建议以更简单的方法完成任务,将不胜感激!

4

1 回答 1

0

万向节锁是问题所在。我通过使用节点的变换组件来修复它。

于 2015-01-10T11:07:08.607 回答