因此,我有这段代码,该代码应使角色看起来像鼠标。角色实际上并没有看着鼠标,也不知道是什么原因。
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;
红点实际上是我的鼠标所在的地方。
答案 0 :(得分:2)
您应该真正地研究数学而不是进行数学运算 transform.LookAt()。这种方法可以解决这个问题
还应该使用 Input.mousePosition
而不是Camera.mainvar 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,以便旋转精确到鼠标位置。