【发布时间】:2019-01-20 01:03:00
【问题描述】:
我搜索了一段时间,但不知道如何解决这个讨厌的错误。我使用的是自上而下的视图(指向 -z),基本上是 2d,3d 对象和相机处于透视模式。
我需要将一个对象指向鼠标,忽略 z 方向,因为一切都在同一平面上移动。
我正在使用以下代码:
Vector3 mouseToWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, 1f));
mouseToWorld.z = 0f;
Vector3 difference = mouseToWorld - transform.position;
difference.Normalize();
float angle = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, angle - 90);
不幸的是它只在物体静止时起作用,并且在速度> 0时立即中断;
任何提示将不胜感激:)
附言我将 1 添加到 z 然后重置它,因为否则无论我移动指针,mouseToWorld 始终为 0。
【问题讨论】:
-
您最好使用
screenPointToRay之类的东西并进行光线投射以与您的地形相交。见docs.unity3d.com/ScriptReference/Camera.ScreenPointToRay.html
标签: c# visual-studio unity3d vector euler-angles