using UnityEngine; namespace Class03 { // 입력 방향에 따라 Rigidbody에 힘을 가하는 역할만 합니다. [RequireComponent(typeof(Rigidbody), typeof(KeyboardMoveInput))] public sealed class BallMotor : MonoBehaviour { [SerializeField] private float acceleration = 18f; [SerializeField] private float maximumSpeed = 7f; private Rigidbody body; private KeyboardMoveInput input; private void Awake() { body = GetComponent(); input = GetComponent(); } private void FixedUpdate() { Vector2 direction = input.Direction; body.AddForce(new Vector3(direction.x, 0f, direction.y) * acceleration, ForceMode.Acceleration); Vector3 velocity = body.linearVelocity; Vector3 horizontal = Vector3.ClampMagnitude(new Vector3(velocity.x, 0f, velocity.z), maximumSpeed); body.linearVelocity = new Vector3(horizontal.x, velocity.y, horizontal.z); } } }