代码
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
在人物转向过程中会改变。如果不注意这个问题,人物转向后前进动作会出问题,比如斜着前进或者横着走。文章来源:https://www.toymoban.com/news/detail-512307.html
Rotate
函数则没有这个问题,这是因为在人物转向过程,Rotate
函数的旋转轴不会变化,所以transform.up
和Vector3(0, 1, 0)
可以和Space.World
或Space.Self
任意组合。文章来源地址https://www.toymoban.com/news/detail-512307.html
到了这里,关于Unity3D方向键控制人物移动的代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!