首先明确效果,如孤胆枪手那样任务随鼠标方向转向的效果
要实现此效果我们首先要知道鼠标的位置
话不多说直接上代码
Vector3 point = Input.mousePosition;
//注意,此时的Point并非鼠标的世界坐标,而是屏幕坐标
point.z = 10;
//这里是一个小坑,point.z初始为0
//在3D条件下、Camera的Z轴为-10,如果不设置point的Z轴坐标那么经过下面转换后得到的世界坐标会变成(0,0,-10),原因是Z轴的转化规则为point的Z轴值+Camera的Z轴值
//2D条件下无影响,但还是推荐设置Z轴信息
point = Camera.main.ScreenToWorldPoint(point);
//使用函数ScreenToWorldpoint对point坐标转化,屏幕坐标转化为世界坐标
//此外Camer中还要其他位置的转化函数,可以去试试
此时我们便获得了鼠标的世界坐标信息,想要让物体跟随鼠标转动我们需要对物体使用transform.LookAt函数
point.z=0;
//对2D作用,可以修改其值
transfom.LookAt(Vector3 worldPositin);
//此函数是将物体的Z轴对准某个点,一般用于摄像头的对焦
//此外,它还有一个重载函数
transform.LookAt(Vector3 worldPosition,Vector3 worldUp);
//作用为在物体Z轴转动至worldPosition后,将Y轴转动至worldUP方向
//一般可以将worldUp赋值为Vector3.back或Vector3.forward,将Y轴锁定
//如果好奇也可以试试Vector.left之类的参数
我们要使用的就是重载函数
transform.LookAt(point,Vector.back);
这样一来我们的物体随鼠标转向的方法就做好了。需要注意的就是3D中对鼠标屏幕坐标转化为世界坐标方法以及在设置了Z轴的方向后也要设置Y轴方向,否则物体会“翻面”