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() 类似

原文:彩色的梦

*** |  以上内容仅为学习参考、学习笔记使用  | ***

原文地址:https://www.cnblogs.com/ChenZiRong1999/p/13401855.html