Aframe轨道控件围绕其中心旋转对象,同时保持其他对象固定

时间:2018-08-05 15:09:48

标签: three.js aframe

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

<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>

这是codepen:https://codepen.io/nirajupadhyay11/pen/RBBpbd

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

我得到的结果是将盒子和模型固定在各自的位置,但是当拖动鼠标时,盒子应该绕其中心旋转。

我正在尝试使其工作,以便在我正在开发的游戏中,可以基于鼠标拖动将3d枪模型指向不同的方向。它们是游戏中的其他3D模型,例如树木和岩石,但是在拖动鼠标时它们应保持在原处。

以下是我要实现的目标的一个示例-https://codepen.io/jordizle/pen/haIdo

您能帮我吗?

谢谢, 尼拉吉

1 个答案:

答案 0 :(得分:0)

基本上,轨道控件是摄像机在轨道上旋转。因此得名。

如果要使场景“静止”并且仅旋转一个对象,则不能旋转整个摄像机。您需要单独旋转对象。

一种实现所需目标的简单方法是检查鼠标在窗口上的拖动位置

  1. 按下鼠标时获取位置
  2. 在mousemove上检查位置已更改了多少。相应地旋转对象以进行更改。
  3. 释放后,停止听鼠标移动。