Unity 物体移动的理解

 

Unity通过内置的Input类获取外部输入,具体查看:

Editor---Project Setting---Input,常见的输入比如:Vertical、Horizontal、Fire1、Jump等;

 

物体移动:

1、物体自己移动

private Transform transform;
transform = GetComponent<Transform>();

transform.position += new Vector3(0, 0, 1);
transform.Translate(Vector3.forward);

首先定义Transform组件,再获取组件;

1)可以改变组件的位置属性进行移动,Vector3(0,0,1)表示物体沿z轴的正方向移动,其他类似Vector3(1,0,0)表示沿x的正方向移动;

2)使用组件的Translate()函数进行移动,函数的传值Vector3.forward其实等价与Vector3(0,0,1),当然还有Vector3.left=Vector3(-1,0,0)等;

 

2、键盘控制物体移动

private Transform transform;
private float v = 0.0F; private float h = 0.0F; v = Input.GetAxis("Vertical"); h = Input.GetAxis("Horizontal"); transform.Translate(Vector3.forward*v); transform.Translate(Vector3.left*h); transform.Translate(Vector3.forward*v*Speed*Time.deltaTime);

1)分别获取x轴和z轴的方向

同样定义组件和获取组件,接下来需要获取水平和垂直坐标,直接乘到Vector3.*向量就可以实现,值得注意的是Vector3.*获取的只是方向;

总之是方向*坐标轴即可移动;

最后可以看到加入的移动速度和Time.daltaTime同样改变游戏移动速度的参数,以每秒10个单位的速度前进;

2)用向量moveDir获取x轴和z轴的方向,更加简练

v = Input.GetAxis("Vertical");
h = Input.GetAxis("Horizontal");

Vector3 moveDir = (Vector3.forward*v) + (Vector3.right*h);
transform.Translate(moveDir.normalized*Speed * Time.deltaTime );

 

 

三、物体旋转

其实在transform组件中除了位置外,还有一个重要的属性,旋转Rotate();

旋转其实也可以分为自动旋转和通过键盘输入进行旋转;

 

private Transform transform;
public float rotSpeed = 100.0F;

transform = GetComponent<Transform>();
transform.Rotate(Vector3.forward
* Time.deltaTime * rotSpeed* Input.GetAxis("Mouse X")); transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed);

首先需要定义Transform组件,然后获取组件,再通过函数Rotate()进行旋转,其中的参数和位置函数Traslate()类似。

 

posted @ 2019-04-01 20:42  彩色的梦  阅读(1314)  评论(0编辑  收藏  举报