代碼
var v = Input.GetAxis("Vertical");
var h = Input.GetAxis("Horizontal");
transform.Translate(transform.forward * Time.deltaTime * moveSpeed * v, Space.World);
transform.Rotate(transform.up * Time.deltaTime * rotateSpeed * h);
也可以換成
var v = Input.GetAxis("Vertical");
var h = Input.GetAxis("Horizontal");
transform.Translate(new Vector3(0, 0, 1) * Time.deltaTime * moveSpeed * v);
transform.Rotate(transform.up * Time.deltaTime * rotateSpeed * h);
注意點
Translate
函數默認模式是Space.Self
,此時移動方向需要為人物坐標系下的人物前進方向Vector3(0, 0, 1)
;如果模式指定為Space.World
,移動方向應該為世界坐標系下的人物前進方向transform.forward
,transform.forward
在人物轉向過程中會改變。如果不注意這個問題,人物轉向后前進動作會出問題,比如斜著前進或者橫著走。文章來源:http://www.zghlxwxcb.cn/news/detail-512307.html
Rotate
函數則沒有這個問題,這是因為在人物轉向過程,Rotate
函數的旋轉軸不會變化,所以transform.up
和Vector3(0, 1, 0)
可以和Space.World
或Space.Self
任意組合。文章來源地址http://www.zghlxwxcb.cn/news/detail-512307.html
到了這里,關于Unity3D方向鍵控制人物移動的代碼的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!