using System; using UnityEngine; [RequireComponent(typeof(PlayerControl))] [RequireComponent(typeof(Rigidbody))] public class PlayerMovement : MonoBehaviour { public float movementSpeed; public float movementSpeedOnGrabbing; private PlayerControl _playerControl; private Rigidbody _rigidbody; private void Awake() { _playerControl = GetComponent(); _rigidbody = GetComponent(); } private void FixedUpdate() { FixedUpdateMovement(); } private void FixedUpdateMovement() { var velocity = _rigidbody.linearVelocity; var speed = _playerControl.grabbing ? movementSpeedOnGrabbing : movementSpeed; var direction = new Vector3( _playerControl.movementHorizontal, 0, _playerControl.movementVertical) .normalized; var playerVelocity = speed * direction + velocity.y * Vector3.up; _rigidbody.linearVelocity = playerVelocity; } }