示例
using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 挂在需要移动的物体上 /// </summary> public class MoveController : MonoBehaviour { private Transform mTransform; // 移动方向 private Vector3 translation = Vector3.zero; // 按键状态 private bool downA, downS, downD, downW; // 移动方向 private Direction direction = Direction.None; void Awake() { mTransform = this.transform; } void OnGUI() { if (Input.GetKeyDown(KeyCode.W)) downW = true; else if (Input.GetKeyDown(KeyCode.S)) downS = true; else if (Input.GetKeyDown(KeyCode.A)) downA = true; else if (Input.GetKeyDown(KeyCode.D)) downD = true; if (Input.GetKeyUp(KeyCode.W)) downW = false; else if (Input.GetKeyUp(KeyCode.S)) downS = false; else if (Input.GetKeyUp(KeyCode.A)) downA = false; else if (Input.GetKeyUp(KeyCode.D)) downD = false; if (downW) direction = Direction.Forward; else if (downS) direction = Direction.Back; else if (downA) direction = Direction.Left; else if (downD) direction = Direction.Right; else direction = Direction.None; } void Update() { switch (direction) { case Direction.Forward: translation.z = 0.1f; //向前移动 break; case Direction.Back: translation.z = -0.1f; //向后移动 break; case Direction.Left: translation.x = -0.1f; //向左移动 break; case Direction.Right: translation.x = 0.1f; //向右移动 break; case Direction.None: translation.x = 0; translation.z = 0; break; } mTransform.Translate(translation, Space.World); } } // 物体行进方向 public enum Direction { None, Forward, Back, Left, Right }
运行测试