Unity中鼠标外观脚本中的延迟旋转

时间:2018-09-28 00:14:13

标签: c# unity3d

我的对象应该是看着鼠标,而是向后看。

我的代码:

var dir = Input.mousePosition - Camera.main.WorldToScreenPoint(transform.position);
var angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);

它看起来像: enter image description here

(我必须画鼠标,因为我使用的照片工具没有放在鼠标中)

有没有办法让它直接看它,而不是每当我将鼠标移到它后面时?如果您使用其他方法,能否请您解释为什么我的方法不起作用,并说明您的方法为什么如此?不过,我还是希望保留我的方法。

2 个答案:

答案 0 :(得分:2)

尝试使用Transform.LookAt,您需要做的就是将对象要面对的位置传递给它。

您的代码应如下所示:

public void Update {
     Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
     transform.LookAt(mousePos);
}

如果只希望对象旋转而不向上\向下查看,则保持对象在相同y值上的位置。

答案 1 :(得分:0)

尝试增加90度或45度来固定旋转。