Unity survival shooter tutorial教程中控制人物移动的代码如下:
Vector3 movement;
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
movement.Set (h, 0f, v);
movement = movement.normalized * speed * Time.deltaTime;
playerRigidbody.MovePosition (transform.position + movement);
但是发现当人物掉头之后,按键控制会反过来,即w键
变成向后,s键
向前。原来得到的h,v的正负是世界坐标系的,因此人物掉头,得到的正负就错了。
解决办法
方法1:
if (v > 0)
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
else if (v < 0)
transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);
方法2:
if (v > 0)
transform.position += transform.forward * moveSpeed * Time.deltaTime;
else if (v < 0)
transform.position -= transform.forward *