Unity3D进阶(七)

人物控制器的Move方法及Transform.transformDirection()方法


welcome

CharacterController.Move

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private CharacterController cc;
//获取当前组件的人物控制器
cc=gameObject.getCompenent<CharacterController>();
void Update()
{
//获取水平方向上的变化值
int x=Input.getAxis("Horizontal;");
//或取垂直方向上的变化值
int y=Input.getAxis("vertical");
//使用move方法进行移动
cc.Move(new Vector3(x*speed,0,y*speed));
}

Transform.transformDirection

如果你使用上面的方法进行人物的移动,你会发现控制的物体发生旋转后,移动的方向是基于世界坐标系的,如果你想让物体按照自身的坐标系进行移动,你需要这个新的方法

1
2
3
4
//使用transformDirection方法将给定的世界坐标转换成自身的坐标
cc.Move(cc.transform.transformDirection(new Vector3(x*speed,0,y*speed)));
//这个方法还可以获取指定transform组件的某个方向
transform.transformDirection(new Vector3(1,0,0));

简单来说:

  1. 给定一个基于自身的向量Vector3(比如说我要向我的右边走)
  2. 把这个向量转换成世界的向量(方法将右边这个概念转换成世界坐标系中的明确方向)
  3. 向转换后的世界方向进行移动

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. CharacterController.Move
  2. 2. Transform.transformDirection