//获取横向移动
float horizontalInput = Input.GetAxis("Horizontal");
//获取纵向移动
float verticalInput = Input.GetAxis("Vertical");
//将移动的方向生成一个向量
Vector3 movementDirection = new Vector3(horizontalInput, 0, verticalInput);
//Normalize 可以设置这个移动的值最大为1,避免对角线:同时按下 W A 时,移动速度更快的问题
// 因为 Horizontal Vertical 轴的每次移动都为1
//横向移动时,X轴每次移动1,但是Y轴不变,那么,移动的长度就是1,(X₀,0) = 1,Y轴移动同理(0,Y₀) =1
// 当 X轴和Y轴同时移动时,他们移动的距离如下
// |
// Y____ Z
// | / |
// | / |
// |/___|X
// 此时,物体移动的速度其实是Z,也就是坐标(X,Y)
// 使用 Normalize ,此时,对角线移动,将会将X,Y轴的移动小于1,然后变成(X₁,Y₁) = 1
// 这样就保证了移动速度均衡了
movementDirection.Normalize();
Debug.Log(movementDirection);
transform.Translate(movementDirection * Time.deltaTime * speed);
【Unity笔记】Normalize 是什么?
最新推荐文章于 2024-09-01 16:54:00 发布