思路:首先要得到鼠标的世界坐标(鼠标的位置坐标默认的是屏幕坐标),当鼠标点击时,角色朝着鼠标的方向移动;
c#
input.mousePosition得到的是鼠标的屏幕坐标;ide
Vector3 world; public float speed; void Update() { if(Input.GetMouseButtonDown(0)) { Vector3 m_pos=Input.mousePosition; Vector3 player_pos=Camera.main.WorldToScreenPoint(transform.position); m_pos.z=player_pos.z; world=Camera.main.ScreenToWorldPoint(m_pos); speed=8.0f; transform.LookAt(world); transform.translate(Vector3.forward*speed*Time.deltaTime); } }
注:以上方法只适用于垂直平面,即摄像头垂直于x—z面,通常游戏是不会垂直的,平面不是垂直的,角色就会出现穿透地面的现象,因此须要改一下代码;spa
把world=Camera.main.ScreenToWorldPoint(m_pos);换成下面的就能够了;orm
world.x=Camera.main.ScreenToWorldPoint(m_pos).x;
游戏
world.z=Camera.main.ScreenToWorldPoint(m_pos).z;input
world.y=transform.position.y;it
也就是说角色的y轴坐标保持不变就能够了。io