Unity3d复习之移动

  • A+
所属分类:Unity3d 原创文章

今天复习三种移动,第一种直接的就是Translate了,新建一个场景,并把场景和主角构建成这样子

Unity3d复习之移动

Unity3d复习之移动

 

一、Translate的方式

Plane是地面,Capsule就是主角了,头上的小帽子就是前进的方向,对Capsule添加脚本TranslateMove.cs,代码为:

运行,我们主角可以移动了,float h = Input.GetAxis("Horizontal");,float v = Input.GetAxis("Vertical");。这两个是获取方向键的输入,h,v会以-1,0,1代表是否按下和方向

 

二、CharacterController

接下来,移除脚本TranslateMove.cs,添加ChaControllerMove.cs,自动添加CharacterController组件,来看看第二种CharacterController的移动方法,代码:

代码都差不多,这里用了角色控制器,在Start方法中先取得CharacterController组件,然后获取输入,调用SimpleMove方法。

有一点奇怪的是这里用的是transform.forward,就是指角色自身向前的方向,而Translate方法中用的是Vector3.forward,也就是(0,0,1),为什么两个不同。我尝试过调换它们,控制起来就会不正常。我仔细的y研究了下,发现Translate方法针对的是局部坐标,所以只需要提供一个自身的朝向vector3.forward。而SimpleMove方法针对的是世界坐标,所以要提供一个自身在世界朝向transform.forward。

 

三、Rigidbody

接着,到第三种移动,就是通过刚体组件进行移动,移除第二种添加的脚本跟组件,添加刚体组件Rigidbody,脚本RigidbodyMove.cs,代码:

 

代码都大同小异,不同的就是,_rigidbody.velocity = transform.forward*_speed;  给刚体附一个带方向的速度。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: