【问题标题】:Rotating an empty game object on click and drag单击并拖动旋转一个空的游戏对象
【发布时间】:2018-08-01 19:15:29
【问题描述】:

我在一个场景中有许多对象,我在一个空的游戏对象中逻辑地组合在一起作为一个层。

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

我成功地将旋转脚本(见下文)应用到立方体,但当应用到空游戏对象时,相同的脚本似乎不起作用。我尝试向它添加一个盒子对撞机,以为它会注册点击,但它没有帮助。

知道我哪里可能出错了吗?我在这里采取了错误的方法吗?

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

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

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

【问题讨论】:

    标签: c# unity3d


    【解决方案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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多