Unity初学者对物体移动的总结

Unity小白笔记文章,请大家多多指教!

关于Unity3D控制物体移动的常用方法:

首先控制物体移动即控制物体的空间坐标变化。

在这里首先我们要知道Input输入事件:一般大家先想到的都是按一个按键去控制物体移动,Unity里也给我们提供了这种方法—> Input.GetKey(KeyCode.这里填想要的按键);

但是一般使用的是Input.GetAxis(这里填控制轴的名字)这里的控制轴由我们自己定义,如何定义?首先我们进入Unity操作界面,点击面板最上端Edit,选择Project Setting,再选择Input Manager,在这里我们就可以对Axis控制轴进行设置。

通过Input.GetAxis()方法得到的值以float形式在-1到1之间变化。

想控制物体空间坐标的变化我们有以下三种方法:

  • 利用Transform组件

以下我以Input.GetAxis()方法介绍,speed是我定义的一个float变量,以此控制移动速度。

首先是transform.Translate()方法

注意:通过第二个参数判断,我们需要相对于世界坐标移动,还是自身的坐标移动!

或者是利用transform.position这个值,来对物体进行坐标变化。

通过不断给原本物体的坐标进行求和计算,来控制物体坐标改变。这里需要注意的是:不可以只控制position的单个X或Y或Z改变,必须要一整个三维坐标改变。

这里顺便提一个transform.position = Vector3.SmoothDamp()这个方法一般用于控制相机移动。

  • 利用Rigidbody组件

严谨来说通过Rigidbody去控制物体移动的代码,要放在FixedUpdate方法中不过放在Update中也不会报错。

以下的force是我定义的一个float变量,控制力的大小。

首先是通过AddForce()方法,给刚体某个方向一个力。

 

或者用velocity给刚体某个方向一个速度。

或者利用MovePosition()将刚体移动到某个想要的位置,用法和改变Position相似。

  • 利用CharacterController组件

先给需要控制的物体加上CharacterController组件。

利用SimpleMove方法:

以上总结的方法不够全面,但是应该已经足够使用。如果有什么总结的不对的地方,请大家请教。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>