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()
旋转其实也可以分为自动旋转和通过键盘输入进行旋转;
1 private Transform transform; 2 public float rotSpeed = 100.0F; 3 4 transform = GetComponent<Transform>(); 5 6 transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed* Input.GetAxis("Mouse X")); 7 transform.Rotate(Vector3.forward * Time.deltaTime * rotSpeed);
首先需要定义 Transform 组件,然后获取组件,再通过函数 Rotate() 进行旋转,其中的参数和位置函数 Traslate() 类似
原文:彩色的梦
*** | 以上内容仅为学习参考、学习笔记使用 | ***