我在一个场景中有许多对象,这些对象在逻辑上被分组为一个空游戏对象,作为一个层。
如果用户单击场景中的任意位置并水平移动鼠标,我希望该空白游戏对象绕y轴旋转,以便其中的所有对象也旋转。
我成功地将旋转脚本(请参见下文)应用于多维数据集,但是当应用于空游戏对象时,相同的脚本似乎不起作用。我尝试在其上添加盒式对撞机,以为它会记录点击次数,但没有帮助。
知道我可能要去哪里了吗?我在这里采用错误的方法吗?
作为参考,这是我的拖动脚本:
void OnMouseDrag() {
float rotationX = Input.GetAxis("Mouse X") * 20f * Mathf.Deg2Rad;
transform.RotateAround(Vector3.up, -rotationX);
}
答案 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);
}
}