我想在屏幕上向左或向右滑动时旋转球,所以我将脚本设置为波纹管,但是只有当我直接在屏幕上而不是屏幕上的任何地方直接滑动时,球才旋转。 ?
球形脚本:
private float baseAngle = 0.0f;
public Camera cam;
void OnMouseDown()
{
Vector3 pos = cam.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
baseAngle = Mathf.Atan2(pos.y, pos.x) * Mathf.Rad2Deg;
baseAngle -= Mathf.Atan2(transform.right.y, transform.right.x) * Mathf.Rad2Deg;
}
void OnMouseDrag()
{
Vector3 pos = cam.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
float ang = Mathf.Atan2(pos.y, pos.x) * Mathf.Rad2Deg - baseAngle;
transform.rotation = Quaternion.AngleAxis(-ang, Vector3.up);
}
答案 0 :(得分:0)
您的麻烦是您提供的脚本已附加到球本身,因此触摸(单击)仅由球处理。换句话说,OnMouseDown
和OnMouseDrag
仅在触摸(点击)击中球时被调用。请参见Documentation。它说:
当用户在GUIElement或Collider上方按下鼠标按钮时,会调用OnMouseDown。
至少有一些方法可以获取想要的东西:
Input
类中的方法代替OnMouseDown
和OnMouseDrag
。例如Input.GetMouseButton-每当用户单击鼠标按钮(或触摸)时,无论单击什么,它都会被调用。