单击并旋转空白游戏对象

时间:2018-08-01 10:46:10

标签: c# unity3d

我在一个场景中有许多对象,这些对象在逻辑上被分组为一个空游戏对象,作为一个层。

如果用户单击场景中的任意位置并水平移动鼠标,我希望该空白游戏对象绕y轴旋转,以便其中的所有对象也旋转。

我成功地将旋转脚本(请参见下文)应用于多维数据集,但是当应用于空游戏对象时,相同的脚本似乎不起作用。我尝试在其上添加盒式对撞机,以为它会记录点击次数,但没有帮助。

知道我可能要去哪里了吗?我在这里采用错误的方法吗?

作为参考,这是我的拖动脚本:

void OnMouseDrag() {
  float rotationX = Input.GetAxis("Mouse X") * 20f * Mathf.Deg2Rad;

  transform.RotateAround(Vector3.up, -rotationX);
}

1 个答案:

答案 0 :(得分:1)

  

如果用户单击场景中的任何地方并移动鼠标   我希望水平的空游戏对象绕y轴旋转   使其内部的所有对象也旋转。但是当应用于空游戏对象时,相同的脚本似乎不起作用

OnMouseDrag功能在屏幕上任何地方都不起作用。仅当您要检测对GUIElement或带有Collider的对象的单击时,此方法才有效。更像是您只想检测何时在屏幕上的任意位置按住鼠标。在这种情况下,应使用Input.GetMouseButton函数。还应该在Update函数中使用它,以便代码将在每一帧运行,并使用Input.GetAxis("Mouse X")获得拖动速度。

void Update()
{
    if (Input.GetMouseButton(0))
    {
        float rotationX = Input.GetAxis("Mouse X") * 20f * Mathf.Deg2Rad;
        transform.RotateAround(Vector3.up, -rotationX);
    }
}