using System; using Movement; using UnityEngine; using UnityEngine.InputSystem; namespace Player { public class PlayerController : MonoBehaviour, IMovement, Input.PlayerInput.IPlayerControlActions { private Input.PlayerInput _controls; private Rigidbody2D _playerRigidbody2D; private SpriteRenderer _playerSpriteRenderer; private bool _moveKeyPressed; private bool _jumpKeyPressed; private bool _canJump = true; private bool _isOnAir; private float _xAxisValue; private void Awake() { this._playerRigidbody2D = GameObject.Find("Player").GetComponent(); } private void OnEnable() { if (_controls == null) { _controls = new Input.PlayerInput(); _controls.PlayerControl.SetCallbacks(this); } _controls.PlayerControl.Enable(); } private void OnDisable() { _controls.Disable(); } private void FixedUpdate() { if (_moveKeyPressed) Move(_xAxisValue); else _playerRigidbody2D.velocity = new Vector2(0.0f, _playerRigidbody2D.velocity.y); if (_jumpKeyPressed) Jump(); } // PAUSE METHODS public bool IsPaused { get; } public void Pause() { throw new NotImplementedException(); } public void Resume() { throw new NotImplementedException(); } // MOVE METHODS public float BaseSpeed { get; set; } public void Move(float value) { switch (_xAxisValue) { case < 0: _playerSpriteRenderer.flipX = true; break; case > 0: _playerSpriteRenderer.flipX = false; break; } _playerRigidbody2D.velocity = new Vector2(BaseSpeed * _xAxisValue * Time.fixedDeltaTime, _playerRigidbody2D.velocity.y); } private void Jump() { throw new NotImplementedException(); } private void Climb() { throw new NotImplementedException(); } // INPUT HANDLING public void OnMove(InputAction.CallbackContext context) { switch (context.canceled) { case true: _moveKeyPressed = false; break; case false: _moveKeyPressed = true; _xAxisValue = context.ReadValue(); break; } } public void OnJump(InputAction.CallbackContext context) { switch (context.canceled) { case true: _jumpKeyPressed = false; _canJump = true; break; case false: _jumpKeyPressed = true; break; } } } }