Unity3d滑鼠點擊螢幕來控制人物的走動

來源:互聯網
上載者:User

   今天呢,我們來一起實現一個在RPG中遊戲中十分常見的功能,通過滑鼠點擊螢幕來控制人物的走動。首先來說一下原理,當我們點擊螢幕時,我們按照一定的方法,將螢幕上的二維座標轉化為三維座標,然後我們從攝像機位置發射 一條經過該點的射線,則這條射線與大地平面的交點,就是我們的目標位置。那麼確定了這個位置以後,我們需要做的就是讓角色從原來的位置移動到這個位置,並在其間添加角色動畫即可。對於角色移動的問題,如果複雜點的畫我們可能要計算移動的方向向量,並針對起點和終點進行插值計算來實現,這裡我們選擇一種相對簡單的辦法,在Unity3D中,有一個LookAt()方法,該方法可以使物體發生旋轉,使其z軸始終指向目標物體。再完成了旋轉後,我們需要讓物體沿著Z軸方向(forward)移動。這樣就實現了滑鼠點擊控制人物走動這一功能。好了,下面我們來一起看今天的內容吧。

     首先建立一個情境,我們準備一個地形Terrain和平行光Direction Light,並拖入我們事先準備好的人物模型,如圖:


   接下來為模型添加動畫組件,並將動畫的類型設定為Legacy模式,如圖所示:



     我們設定預設的動畫為idle,接下來,我們來編寫指令碼代碼:

using UnityEngine;using System.Collections;public class PeopleControl : MonoBehaviour {     //目標點座標  private Vector3 mTargetPos;    void Start ()   {     }    void Update ()   {    //按下滑鼠右鍵時    if(Input.GetMouseButton(1))  {     //擷取螢幕座標     Vector3 mScreenPos=Input.mousePosition;     //定義射線     Ray mRay=Camera.main.ScreenPointToRay(mScreenPos);     RaycastHit mHit;     //判斷射線是否擊中地面     if(Physics.Raycast(mRay,out mHit))     {      if(mHit.collider.gameObject.tag=="Terrain")      {         //擷取目標座標         mTargetPos=mHit.point;         //讓主角面朝目標座標並向目標移動         transform.LookAt(mTargetPos);         //播放奔跑動畫         transform.gameObject.GetComponent<Animation>().Play("run");       transform.Translate(Vector3.forward * 0.5F);      }     }    }    //鬆開滑鼠右鍵時    if(Input.GetMouseButtonUp(1))    {      transform.gameObject.GetComponent<Animation>().Play("idle");    }  }}
       將指令碼綁定到角色上以後,我們就能看到下面的效果啦,哈哈:)


       這就是今天的內容啦,當然我們還需要解決的問題還有如何在控制人物走動的時候避免和其它物體發生碰撞,以及後續的最佳化問題,這些內容我們會在後面的文章中為大家解答,謝謝大家。喜歡我請記住我的名字

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.