using UnityEngine; public class RotateByKeyboardInput : MonoBehaviour { public enum XSpace { self, world } public enum YSpace { self, world } public bool useX; public XSpace xSpace; public Vector3 xVector; public bool useY; public YSpace ySpace; public Vector3 yVector; [Header("Control")] public bool needControl; public bool needAlive; private HasControl hasControl; private PlayerDeath death; private float m = 1f; private void Start() { if (needControl) { hasControl = base.transform.root.GetComponent(); } if (needAlive) { death = base.transform.root.GetComponent(); } } private void LateUpdate() { Vector3 zero = Vector3.zero; if (Input.GetKey(KeyCode.W)) { zero += Vector3.forward; } if (Input.GetKey(KeyCode.S)) { zero -= Vector3.forward; } if (Input.GetKey(KeyCode.D)) { zero += Vector3.right; } if (Input.GetKey(KeyCode.A)) { zero += Vector3.left; } zero = zero.normalized; if (needControl && !hasControl.hasControl) { return; } if (needAlive) { m = Mathf.Clamp(death.muscleFunction * 2f, 0f, 1f); if (death.dead) { return; } } if (useX) { Vector3 vector = xVector; if (xSpace == XSpace.self) { vector = base.transform.TransformDirection(vector); } base.transform.Rotate(vector * zero.x * m * 0.8f, Space.World); } if (useY) { Vector3 vector2 = yVector; if (ySpace == YSpace.self) { vector2 = base.transform.TransformDirection(vector2); } base.transform.Rotate(vector2 * zero.y * m * 0.8f, Space.World); } } }