思路:首先要得到鼠標的世界座標(鼠標的位置座標默認的是屏幕座標),當鼠標點擊時,角色朝着鼠標的方向移動;
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