unity3d之角色的移动篇 -- 俯视视角下的键盘移动
生活随笔
收集整理的這篇文章主要介紹了
unity3d之角色的移动篇 -- 俯视视角下的键盘移动
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個知識點我想分成幾個章節來寫,分別記錄不同情況下不同的移動方式。
首先是在俯視角攝像機下的鍵盤控制角色移動(如下圖), 先寫一個最簡單的移動腳本吧(這個腳本也可以用于平常的小測試)
在這之前先得為角色掛上character controller組件,然后獲取它。
void move(){//首先獲取橫縱軸的方向float h = Input.GetAxis ("Horizontal");float v = Input.GetAxis("Vertical");//設置好移動的方向Vector3 forward = transform.TransformDirection (Vector3.forward);//設置好移動的速度float currentSpeed = moveSpeed * v;//方向*速度就是角色的移動距離了cc.SimpleMove (forward * currentSpeed);}這個還是比較簡單的,平常需要一些角色移動的測試可以用這個腳本,但是不嚴謹,仔細研究會發現經不起推敲,于是經過我的一番改造有了以下的代碼:
IEnumerator move_(){//首先獲取橫縱軸的方向float h = Input.GetAxis ("Horizontal");float v = Input.GetAxis("Vertical"); //判斷縱軸(W前進,S后退)方向的正負 if(v>0){animation.Play(run.name); //方向向前Vector3 forward = transform.TransformDirection (Vector3.forward);
//計算速度float currentSpeed = moveSpeed * v;//獲取水平方向后以一定速度沿著Y軸旋轉this.transform.Rotate(0,trunspeed*Time.deltaTime*h,0);//開始移動cc.SimpleMove (forward * currentSpeed);//設置一個標示判斷是否需要轉身,在else里需要進行判斷靜止狀態下的水平控制旋轉方向isTurn = false;//一個默認為true的旋轉標示if(isRot){
//如果需要轉身,方向為模型正前方,即0度,使用四元數對角色旋轉進行插值運算Quaternion target = Quaternion.Euler(0,0,0);this.transform.rotation = Quaternion.Slerp(this.transform.rotation,target,0.3f);
//等待0.3秒完成插值運算后關閉該標示下的行為(PS:這個方法是在update下運行的)yield return new WaitForSeconds(0.3f);isRot = false;}}
//方法基本同上,除了一些特別需要說明的之外其余不再累述else if(v<0){animation.Play(run.name); //既然方向相反,那么真實方向也需要改變Vector3 back = transform.TransformDirection (Vector3.back);float currentSpeed = moveSpeed * v;//這里獲取了水平方向后沿著Y軸旋轉需要乘以-1,方向相反,水平軸也需要相反,不然沿著Y軸左右旋轉會反 this.transform.Rotate(0,trunspeed*Time.deltaTime*h*-1,0);cc.SimpleMove (back * currentSpeed);isTurn = true;if(isRot){Quaternion target = Quaternion.Euler(0,180,0);this.transform.rotation = Quaternion.Slerp(this.transform.rotation,target,0.3f);yield return new WaitForSeconds(0.3f);isRot = false;}}
//沒有進行操作設置成空閑狀態,在此狀態下 isRot需要初始化,用于下次旋轉else{if(isTurn == false){this.transform.Rotate(0,trunspeed*Time.deltaTime*h,0);}else{this.transform.Rotate(0,trunspeed*Time.deltaTime*h*-1,0);}isRot = true;animation.Play(idle.name); }}
?
?
?
轉載于:https://www.cnblogs.com/hellozzz/p/4179941.html
總結
以上是生活随笔為你收集整理的unity3d之角色的移动篇 -- 俯视视角下的键盘移动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言变量类型及其表示范围
- 下一篇: 2021年大连12中高考成绩查询,202