unity3D中使角色朝着鼠標的方向

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

相關文章
相關標籤/搜索