Aframe orbit-controls 围绕其中心旋转物体,同时保持其他物体固定

Aframe orbit-controls rotate object around its center while keeping other objects fixated

我正在尝试围绕其中心旋转一个盒子,同时保持其余模型固定不动。这是我的代码 -

<head>
  <title>My A-Frame Scene</title>
  <script src="https://aframe.io/releases/0.8.2/aframe.min.js"></script>
  <script src="https://unpkg.com/aframe-orbit-controls@1.0.0/dist/aframe-orbit-controls.min.js"></script>
  <script src="https://unpkg.com/aframe-supercraft-loader@1.1.3/dist/aframe-supercraft-loader.js"></script>
</head>

<body>
  <a-scene>
    <a-entity id="super" supercraft-loader="name: better-reaction" ></a-entity>

    <a-entity camera look-controls orbit-controls="target: 0 1.6 -0.5; minDistance: 0.5; maxDistance: 180; initialPosition: 0 5 15">
        <a-box position="0 1.6 -21" color="red"></a-box>
    </a-entity>
  </a-scene>

</body>

这是代码笔:https://codepen.io/nirajupadhyay11/pen/RBBpbd

但是,拖动鼠标时整个模型会旋转,而不仅仅是框。

我想要的结果是让盒子和模型固定在各自的位置,但是当拖动鼠标时,盒子应该围绕它的中心旋转。

我正在努力让它发挥作用,以便在我正在开发的游戏中,我可以根据鼠标拖动使 3d 枪支模型指向不同的方向。它们是游戏中的其他 3d 模型,例如树木和岩石,但是当鼠标被拖动时它们应该保持在它们的位置。

这是我正在努力实现的一个例子 - https://codepen.io/jordizle/pen/haIdo

你能帮我解决这个问题吗?

谢谢, 尼拉吉

轨道控制基本上是一个在轨道上旋转的相机。因此得名。

如果你想要场景"still"并且只有一个物体旋转,你不能旋转整个相机。您需要单独旋转对象。

实现您想要的效果的一种简单方法是检查鼠标在 window

上拖动的位置
  1. 当鼠标按下时,获取位置
  2. 在 mousemove 上检查位置改变了多少。根据变化相应地旋转对象。
  3. 释放后,停止监听鼠标移动。