日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3d鼠标点击屏幕来控制人物的走动

發布時間:2023/11/30 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3d鼠标点击屏幕来控制人物的走动 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?? 今天呢,我們來一起實現一個在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"); } } } ? ? ? ?將腳本綁定到角色上以后,我們就能看到下面的效果啦,哈哈:)


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

總結

以上是生活随笔為你收集整理的Unity3d鼠标点击屏幕来控制人物的走动的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。