欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Unity3D實(shí)現(xiàn)人物轉(zhuǎn)向與移動(dòng)

 更新時(shí)間:2020年01月20日 08:35:11   作者:weixin_34233421  
這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)人物轉(zhuǎn)向與移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在網(wǎng)上有非常多通過射線方式實(shí)現(xiàn)的人物行走控制腳本,可是假設(shè)僅僅是想通過鍵盤按鍵來控制的話。比方進(jìn)行第三人稱視角控制,事實(shí)上僅僅須要進(jìn)行簡單的角度變換就可以。思路例如以下:

1、依照順時(shí)針方向設(shè)定前、右、后、左分別為0,1,2,3。

2、設(shè)定狀態(tài)初值0,即朝向前方。

3、通過當(dāng)前方向值減去前一次方向值,乘以90°即為轉(zhuǎn)向角,然后進(jìn)行旋轉(zhuǎn)變換就可以。

using UnityEngine;
using System.Collections;
using System.Linq;
public class move: MonoBehaviour
{
 private int State;//角色狀態(tài)
 private int oldState=0;//前一次角色的狀態(tài)
 private int UP = 0;//角色狀態(tài)向前
 private int RIGHT =1;//角色狀態(tài)向右
 private int DOWN = 2;//角色狀態(tài)向后
 private int LEFT = 3;//角色狀態(tài)向左
 
 public float speed=8;
 
 void Start()
 {
 }
 void Update()
 {
 if (Input.GetKey("w"))
 {
  setState(UP);
 }
 else if (Input.GetKey("s"))
 {
  setState(DOWN);
 }
 
 if (Input.GetKey("a"))
 {
  setState(LEFT);
 }
 else if (Input.GetKey("d"))
 {
  setState(RIGHT);
 }
 
 }
 
 
 void setState(int currState)
 {
 Vector3 transformValue = new Vector3();//定義平移向量
 int rotateValue = (currState - State) * 90;
 transform.animation.Play("walk");//播放角色行走動(dòng)畫
 switch (currState)
 {
 case 0://角色狀態(tài)向前時(shí),角色不斷向前緩慢移動(dòng)
  transformValue = Vector3.forward * Time.deltaTime * speed;
  break;
 case 1://角色狀態(tài)向右時(shí)。角色不斷向右緩慢移動(dòng)
  transformValue = Vector3.right * Time.deltaTime * speed;
  break;
 case 2://角色狀態(tài)向后時(shí)。角色不斷向后緩慢移動(dòng)
  transformValue = Vector3.back * Time.deltaTime * speed;
  break;
 case 3://角色狀態(tài)向左時(shí),角色不斷向左緩慢移動(dòng)
  transformValue = Vector3.left * Time.deltaTime * speed;
  break;
 }
 transform.Rotate(Vector3.up, rotateValue);//旋轉(zhuǎn)角色
 transform.Translate(transformValue, Space.World);//平移角色
 oldState = State;//賦值,方便下一次計(jì)算
 State = currState;//賦值,方便下一次計(jì)算
 }
 
 
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論