点击并拖动时旋转一个空的游戏对象



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

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

我成功地将旋转脚本(见下文(应用于立方体,但当应用于空游戏对象时,相同的脚本似乎不起作用。我试着给它添加一个盒子碰撞器,以为它会让它记录点击,但无济于事。

知道我哪里可能出错了吗?我是不是走错了路?

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

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

如果用户在场景中的任何地方点击并移动鼠标水平方向,我希望空的游戏对象围绕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);
}
}

最新更新