在Unity中让角色看着鼠标

时间:2019-12-08 09:42:10

标签: c# unity3d

因此,我有这段代码,该代码应使角色看起来像鼠标。角色实际上并没有看着鼠标,也不知道是什么原因。

float CameraDistance = Camera.main.transform.position.y - transform.position.y;
Vector3 WorldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);
WorldPoint.z = CameraDistance;

float AngleRad = Mathf.Atan2(WorldPoint.y - transform.position.y, WorldPoint.x - transform.position.x);
float AngleDeg = (180 / Mathf.PI) * AngleRad;

Body.rotation = AngleDeg;

红点实际上是我的鼠标所在的地方。

2 个答案:

答案 0 :(得分:2)

您应该真正地研究数学而不是进行数学运算             transform.LookAt()。这种方法可以解决这个问题

还应该使用 Input.mousePosition

而不是Camera.main
var mousePos = Input.mousePosition;
var wantedPos = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, depth));

Body.LookAt(wantedPos);

答案 1 :(得分:0)

我终于设法解决了。这是代码:

Vector3 WorldPoint = Camera.main.ScreenToWorldPoint(Input.mousePosition);

Vector3 Difference = WorldPoint - transform.position;
Difference.Normalize();

float RotationZ = Mathf.Atan2(Difference.y, Difference.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, RotationZ - 90);

我必须从RotationZ中减去90,以便旋转精确到鼠标位置。