Improved jumping and added TODOs
This commit is contained in:
@@ -8,15 +8,19 @@ namespace Player
|
||||
{
|
||||
public class PlayerController : MonoBehaviour, IMovement, PlayerInput.IPlayerControlActions
|
||||
{
|
||||
private const float DefaultJumpForce = 9.81f;
|
||||
private const float DefaultMass = 80.0f;
|
||||
private const float DefaultJumpForce = 10.0f;
|
||||
private const float DefaultMass = 40.0f;
|
||||
private const float DefaultSpeed = 500.0f;
|
||||
private const float GravityScale = 1.0f;
|
||||
|
||||
private Input.PlayerInput _controls;
|
||||
private const float FallMultiplier = 3f;
|
||||
private const float LowJumpMultiplier = 3f;
|
||||
|
||||
private PlayerInput _controls;
|
||||
private Rigidbody2D _playerRigidbody2D;
|
||||
private SpriteRenderer _playerSpriteRenderer;
|
||||
|
||||
private CollisionChecker _playerGroundTrigger;
|
||||
private CollisionChecker _playerInteractableTrigger;
|
||||
|
||||
private bool _moveKeyPressed;
|
||||
private bool _jumpKeyPressed;
|
||||
@@ -24,18 +28,17 @@ namespace Player
|
||||
private bool _isOnAir;
|
||||
|
||||
private float _xAxisValue;
|
||||
private PlayerInput.IPlayerControlActions _playerControlActionsImplementation;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
_playerRigidbody2D = gameObject.GetComponent<Rigidbody2D>();
|
||||
_playerRigidbody2D = GetComponent<Rigidbody2D>();
|
||||
_playerSpriteRenderer = GetComponent<SpriteRenderer>();
|
||||
_playerGroundTrigger = GameObject.Find("PlayerGroundTrigger").GetComponent<CollisionChecker>();
|
||||
_playerSpriteRenderer = gameObject.GetComponent<SpriteRenderer>();
|
||||
_playerInteractableTrigger = GameObject.Find("PlayerInteractableTrigger").GetComponent<CollisionChecker>();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_playerRigidbody2D.gravityScale = GravityScale;
|
||||
_playerRigidbody2D.mass = DefaultMass;
|
||||
BaseSpeed = DefaultSpeed;
|
||||
}
|
||||
@@ -58,15 +61,33 @@ namespace Player
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
switch (_playerRigidbody2D.velocity.y)
|
||||
{
|
||||
case < 0:
|
||||
_playerRigidbody2D.velocity +=
|
||||
Vector2.up * (Physics2D.gravity.y * (FallMultiplier - 1) * Time.fixedDeltaTime);
|
||||
break;
|
||||
case > 0 when !_jumpKeyPressed:
|
||||
_playerRigidbody2D.velocity +=
|
||||
Vector2.up * (Physics2D.gravity.y * (LowJumpMultiplier - 1) * Time.fixedDeltaTime);
|
||||
break;
|
||||
}
|
||||
|
||||
if (_moveKeyPressed)
|
||||
Move(_xAxisValue);
|
||||
else
|
||||
_playerRigidbody2D.velocity = new Vector2(0.0f, _playerRigidbody2D.velocity.y);
|
||||
|
||||
//TODO prevent jumping while keep pressing the button
|
||||
if (_jumpKeyPressed && _playerGroundTrigger.IsCollided)
|
||||
Jump();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
//TODO calculate is on air based on wall and ground triggers
|
||||
}
|
||||
|
||||
// PAUSE METHODS
|
||||
|
||||
public bool IsPaused { get; private set; }
|
||||
@@ -101,8 +122,9 @@ namespace Player
|
||||
|
||||
private void Jump()
|
||||
{
|
||||
_playerRigidbody2D.velocity = new Vector2(_playerRigidbody2D.velocity.x, 0);
|
||||
_playerRigidbody2D.AddForce(Vector2.up.normalized * DefaultJumpForce * DefaultMass, ForceMode2D.Impulse);
|
||||
//_playerRigidbody2D.velocity = new Vector2(_playerRigidbody2D.velocity.x, 0);
|
||||
//_playerRigidbody2D.AddForce(Vector2.up.normalized * DefaultJumpForce * DefaultMass, ForceMode2D.Impulse);
|
||||
_playerRigidbody2D.velocity = Vector2.up * DefaultJumpForce;
|
||||
}
|
||||
|
||||
private void Climb()
|
||||
@@ -141,7 +163,8 @@ namespace Player
|
||||
|
||||
public void OnInteract(InputAction.CallbackContext context)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
if (_playerInteractableTrigger.IsCollided)
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user