溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

unity3D中使角色朝著鼠標(biāo)的方向

發(fā)布時(shí)間:2020-07-07 20:36:15 來源:網(wǎng)絡(luò) 閱讀:1593 作者:遺失美好COL 欄目:游戲開發(fā)

    思路:首先要獲得鼠標(biāo)的世界坐標(biāo)(鼠標(biāo)的位置坐標(biāo)默認(rèn)的是屏幕坐標(biāo)),當(dāng)鼠標(biāo)點(diǎn)擊時(shí),角色朝著鼠標(biāo)的方向移動(dòng);

input.mousePosition獲得的是鼠標(biāo)的屏幕坐標(biāo);


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面,一般游戲是不會(huì)垂直的,平面不是垂直的,角色就會(huì)出現(xiàn)穿透地面的現(xiàn)象,所以需要改一下代碼;

把world=Camera.main.ScreenToWorldPoint(m_pos);換成下面的就可以了;

world.x=Camera.main.ScreenToWorldPoint(m_pos).x;

world.z=Camera.main.ScreenToWorldPoint(m_pos).z;

world.y=transform.position.y;

也就是說角色的y軸坐標(biāo)保持不變就可以了。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI