1、获得鼠标位置
Vector3 mousePos = Input.mousePosition;
2、首先屏幕是二维的,因此需要将物体的位置转换为屏幕坐标
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
3、要计算相关角度,这里要分清楚方向,最简单的方式就是一开始让对象背对摄像机,即z轴向前,否则旋转方向与鼠标位置不一致,需要进行角度的转换才能正确显示,此处以最简单的方式讨论:

通常是将游戏对象作为原点,当z轴向前时,所求角度即是途中所示角度:
float x1 = mousePos.x - pos.x;
float y1 = mousePos.y - pos.y;
float angle = 90f; ;
if (y1 != 0) {
angle = Mathf.Atan(x1 / y1);
angle = (angle / Mathf.PI) * 180;
}
此处要注意三点:
(1)Mathf.Atan求出的是弧度,要将其转换为角度
(2)分母不能为0,要特殊判断,因此初始化角度为90°
(3)求出的范围只是

本文介绍了如何在Unity中使物体根据鼠标位置进行旋转。通过获取鼠标屏幕坐标,转换为三维空间角度,处理不同象限的旋转方向,并利用四元数进行物体旋转,最终提供了一段完整的代码示例。
最低0.47元/天 解锁文章
311

被折叠的 条评论
为什么被折叠?



