Improved jumping and moving
This commit is contained in:
parent
cb09cfa4a7
commit
9d0f9e620c
|
@ -123,7 +123,7 @@ Transform:
|
||||||
m_GameObject: {fileID: 7008207192594766305}
|
m_GameObject: {fileID: 7008207192594766305}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: -4.55, y: 0.41, z: 0}
|
m_LocalPosition: {x: -4.55, y: 0.41, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 2, z: 1}
|
m_LocalScale: {x: 1, y: 1.5, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 7008207193600475140}
|
- {fileID: 7008207193600475140}
|
||||||
|
@ -197,7 +197,6 @@ MonoBehaviour:
|
||||||
m_Script: {fileID: 11500000, guid: 1e9f5de2199c4784abce74247804ce87, type: 3}
|
m_Script: {fileID: 11500000, guid: 1e9f5de2199c4784abce74247804ce87, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
speed: 0
|
|
||||||
--- !u!50 &7008207192594766309
|
--- !u!50 &7008207192594766309
|
||||||
Rigidbody2D:
|
Rigidbody2D:
|
||||||
serializedVersion: 4
|
serializedVersion: 4
|
||||||
|
|
|
@ -9,17 +9,20 @@ namespace Player
|
||||||
{
|
{
|
||||||
public class PlayerController : MonoBehaviour, IMovement, PlayerInput.IPlayerControlActions
|
public class PlayerController : MonoBehaviour, IMovement, PlayerInput.IPlayerControlActions
|
||||||
{
|
{
|
||||||
private const float DefaultJumpForce = 25.0f;
|
private const float DefaultJumpForce = 26.0f;
|
||||||
private const float DefaultMass = 80.0f;
|
private const float DefaultMass = 80.0f;
|
||||||
private const float MaxSpeed = 500.0f;
|
private const float MaxSpeed = 700.0f;
|
||||||
private const float DefaultAirSpeed = 300.0f;
|
private const float MaxAirSpeed = 500.0f;
|
||||||
private const float GravityScale = 5.0f;
|
private const float GravityScale = 6.0f;
|
||||||
private const float AccelerationScale = 40.0f;
|
private const float AccelerationScale = 40.0f;
|
||||||
private const float DecelerationScale = 60.0f;
|
private const float DecelerationScale = 60.0f;
|
||||||
private const float RespawnLimit = -60.0f;
|
private const float RespawnLimit = -60.0f;
|
||||||
|
|
||||||
private const float FallMultiplier = 5.0f;
|
//Took from tutorial : https://www.youtube.com/watch?v=7KiK0Aqtmzc
|
||||||
private const float LowJumpMultiplier = 20.0f;
|
private const float FallMultiplier = 3.0f;
|
||||||
|
|
||||||
|
private const float LowJumpMultiplier = 40.0f;
|
||||||
|
//End of credits
|
||||||
|
|
||||||
private PlayerInput _controls;
|
private PlayerInput _controls;
|
||||||
private Rigidbody2D _playerRigidbody2D;
|
private Rigidbody2D _playerRigidbody2D;
|
||||||
|
@ -27,6 +30,8 @@ namespace Player
|
||||||
|
|
||||||
private CollisionChecker _playerGroundTrigger;
|
private CollisionChecker _playerGroundTrigger;
|
||||||
private CollisionChecker _playerInteractableTrigger;
|
private CollisionChecker _playerInteractableTrigger;
|
||||||
|
private CollisionChecker _playerWallTriggerLeft;
|
||||||
|
private CollisionChecker _playerWallTriggerRight;
|
||||||
|
|
||||||
private Orientation _orientation;
|
private Orientation _orientation;
|
||||||
|
|
||||||
|
@ -34,7 +39,7 @@ namespace Player
|
||||||
private bool _jumpKeyPressed;
|
private bool _jumpKeyPressed;
|
||||||
|
|
||||||
private float _xAxisValue;
|
private float _xAxisValue;
|
||||||
public float speed;
|
private float _speed;
|
||||||
|
|
||||||
private bool _isOnAir;
|
private bool _isOnAir;
|
||||||
private bool _canJump;
|
private bool _canJump;
|
||||||
|
@ -46,6 +51,8 @@ namespace Player
|
||||||
_playerSpriteRenderer = GetComponent<SpriteRenderer>();
|
_playerSpriteRenderer = GetComponent<SpriteRenderer>();
|
||||||
_playerGroundTrigger = GameObject.Find("PlayerGroundTrigger").GetComponent<CollisionChecker>();
|
_playerGroundTrigger = GameObject.Find("PlayerGroundTrigger").GetComponent<CollisionChecker>();
|
||||||
_playerInteractableTrigger = GameObject.Find("PlayerInteractableTrigger").GetComponent<CollisionChecker>();
|
_playerInteractableTrigger = GameObject.Find("PlayerInteractableTrigger").GetComponent<CollisionChecker>();
|
||||||
|
_playerWallTriggerLeft = GameObject.Find("PlayerWallTriggerLeft").GetComponent<CollisionChecker>();
|
||||||
|
_playerWallTriggerRight = GameObject.Find("PlayerWallTriggerRight").GetComponent<CollisionChecker>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
|
@ -81,6 +88,7 @@ namespace Player
|
||||||
|
|
||||||
private void FixedUpdate()
|
private void FixedUpdate()
|
||||||
{
|
{
|
||||||
|
//Took from tutorial : https://www.youtube.com/watch?v=7KiK0Aqtmzc
|
||||||
switch (_playerRigidbody2D.velocity.y)
|
switch (_playerRigidbody2D.velocity.y)
|
||||||
{
|
{
|
||||||
case < 0:
|
case < 0:
|
||||||
|
@ -92,13 +100,14 @@ namespace Player
|
||||||
Vector2.up * (Physics2D.gravity.y * (LowJumpMultiplier - 1) * Time.fixedDeltaTime);
|
Vector2.up * (Physics2D.gravity.y * (LowJumpMultiplier - 1) * Time.fixedDeltaTime);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
//End of credits
|
||||||
|
|
||||||
if (_moveKeyPressed)
|
if (_moveKeyPressed)
|
||||||
Move(_xAxisValue);
|
Move(_xAxisValue);
|
||||||
else
|
else
|
||||||
_playerRigidbody2D.velocity = new Vector2(0.0f, _playerRigidbody2D.velocity.y);
|
_playerRigidbody2D.velocity = new Vector2(0.0f, _playerRigidbody2D.velocity.y);
|
||||||
|
|
||||||
if (_jumpKeyPressed && _canJump && _playerGroundTrigger.IsCollided)
|
if (_jumpKeyPressed && _playerGroundTrigger.IsCollided && _canJump)
|
||||||
Jump();
|
Jump();
|
||||||
|
|
||||||
if (_afterMoving)
|
if (_afterMoving)
|
||||||
|
@ -137,15 +146,26 @@ namespace Player
|
||||||
|
|
||||||
public float BaseSpeed
|
public float BaseSpeed
|
||||||
{
|
{
|
||||||
get => speed;
|
get => _speed;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
speed = speed switch
|
switch (_isOnAir)
|
||||||
{
|
{
|
||||||
> MaxSpeed => MaxSpeed,
|
case false when value > MaxSpeed:
|
||||||
< 0 => 0,
|
_speed = MaxSpeed;
|
||||||
_ => value
|
break;
|
||||||
};
|
case true when value > MaxAirSpeed:
|
||||||
|
_speed = MaxAirSpeed;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
if (value < 0)
|
||||||
|
_speed = 0;
|
||||||
|
else
|
||||||
|
_speed = value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -156,18 +176,20 @@ namespace Player
|
||||||
case < 0:
|
case < 0:
|
||||||
_playerSpriteRenderer.flipX = true;
|
_playerSpriteRenderer.flipX = true;
|
||||||
_orientation = Orientation.Left;
|
_orientation = Orientation.Left;
|
||||||
|
//prevent player from sticking to wall while moving to its direction in the air
|
||||||
|
if (!_playerGroundTrigger.IsCollided && _playerWallTriggerLeft.IsCollided)
|
||||||
|
return;
|
||||||
break;
|
break;
|
||||||
case > 0:
|
case > 0:
|
||||||
_playerSpriteRenderer.flipX = false;
|
_playerSpriteRenderer.flipX = false;
|
||||||
_orientation = Orientation.Right;
|
_orientation = Orientation.Right;
|
||||||
break;
|
//prevent player from sticking to wall while moving to its direction in the air
|
||||||
default:
|
if (!_playerGroundTrigger.IsCollided && _playerWallTriggerRight.IsCollided)
|
||||||
_playerSpriteRenderer.flipX = _playerSpriteRenderer.flipX;
|
return;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!_isOnAir)
|
BaseSpeed += AccelerationScale;
|
||||||
BaseSpeed += AccelerationScale;
|
|
||||||
_playerRigidbody2D.velocity = new Vector2(BaseSpeed * _xAxisValue * Time.fixedDeltaTime,
|
_playerRigidbody2D.velocity = new Vector2(BaseSpeed * _xAxisValue * Time.fixedDeltaTime,
|
||||||
_playerRigidbody2D.velocity.y);
|
_playerRigidbody2D.velocity.y);
|
||||||
}
|
}
|
||||||
|
@ -183,7 +205,7 @@ namespace Player
|
||||||
|
|
||||||
private void Jump()
|
private void Jump()
|
||||||
{
|
{
|
||||||
BaseSpeed = DefaultAirSpeed;
|
BaseSpeed = MaxAirSpeed;
|
||||||
_playerRigidbody2D.velocity = Vector2.up.normalized * DefaultJumpForce;
|
_playerRigidbody2D.velocity = Vector2.up.normalized * DefaultJumpForce;
|
||||||
_canJump = false;
|
_canJump = false;
|
||||||
}
|
}
|
||||||
|
@ -220,7 +242,8 @@ namespace Player
|
||||||
_canJump = true;
|
_canJump = true;
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
_jumpKeyPressed = true;
|
if (_playerGroundTrigger.IsCollided)
|
||||||
|
_jumpKeyPressed = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ MonoBehaviour:
|
||||||
m_MinSize: {x: 300, y: 200}
|
m_MinSize: {x: 300, y: 200}
|
||||||
m_MaxSize: {x: 24288, y: 16192}
|
m_MaxSize: {x: 24288, y: 16192}
|
||||||
vertical: 0
|
vertical: 0
|
||||||
controlID: 509
|
controlID: 6655
|
||||||
--- !u!114 &2
|
--- !u!114 &2
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -142,7 +142,7 @@ MonoBehaviour:
|
||||||
m_MinSize: {x: 100, y: 200}
|
m_MinSize: {x: 100, y: 200}
|
||||||
m_MaxSize: {x: 8096, y: 16192}
|
m_MaxSize: {x: 8096, y: 16192}
|
||||||
vertical: 1
|
vertical: 1
|
||||||
controlID: 465
|
controlID: 6632
|
||||||
--- !u!114 &4
|
--- !u!114 &4
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -162,8 +162,8 @@ MonoBehaviour:
|
||||||
y: 0
|
y: 0
|
||||||
width: 303.2
|
width: 303.2
|
||||||
height: 381.6
|
height: 381.6
|
||||||
m_MinSize: {x: 200, y: 200}
|
m_MinSize: {x: 201, y: 221}
|
||||||
m_MaxSize: {x: 4000, y: 4000}
|
m_MaxSize: {x: 4001, y: 4021}
|
||||||
m_ActualView: {fileID: 5}
|
m_ActualView: {fileID: 5}
|
||||||
m_Panes:
|
m_Panes:
|
||||||
- {fileID: 5}
|
- {fileID: 5}
|
||||||
|
@ -202,7 +202,7 @@ MonoBehaviour:
|
||||||
scrollPos: {x: 0, y: 0}
|
scrollPos: {x: 0, y: 0}
|
||||||
m_SelectedIDs:
|
m_SelectedIDs:
|
||||||
m_LastClickedID: 0
|
m_LastClickedID: 0
|
||||||
m_ExpandedIDs: 0afbffff0cfbfffff6620000
|
m_ExpandedIDs: ecfaffff0afbffff0cfbfffff6620000
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
m_UserAcceptedRename: 0
|
m_UserAcceptedRename: 0
|
||||||
m_Name:
|
m_Name:
|
||||||
|
@ -245,8 +245,8 @@ MonoBehaviour:
|
||||||
y: 381.6
|
y: 381.6
|
||||||
width: 303.2
|
width: 303.2
|
||||||
height: 349.19998
|
height: 349.19998
|
||||||
m_MinSize: {x: 230, y: 250}
|
m_MinSize: {x: 231, y: 271}
|
||||||
m_MaxSize: {x: 10000, y: 10000}
|
m_MaxSize: {x: 10001, y: 10021}
|
||||||
m_ActualView: {fileID: 7}
|
m_ActualView: {fileID: 7}
|
||||||
m_Panes:
|
m_Panes:
|
||||||
- {fileID: 7}
|
- {fileID: 7}
|
||||||
|
@ -334,7 +334,7 @@ MonoBehaviour:
|
||||||
m_ResourceFile:
|
m_ResourceFile:
|
||||||
m_AssetTreeState:
|
m_AssetTreeState:
|
||||||
scrollPos: {x: 0, y: 0}
|
scrollPos: {x: 0, y: 0}
|
||||||
m_SelectedIDs: 06fbffff
|
m_SelectedIDs: fc620000
|
||||||
m_LastClickedID: 0
|
m_LastClickedID: 0
|
||||||
m_ExpandedIDs: ffffffff000000004c630000a6630000a8630000aa630000ac630000ae630000b0630000b2630000b4630000b6630000b8630000ba630000bc630000be630000c2630000c4630000
|
m_ExpandedIDs: ffffffff000000004c630000a6630000a8630000aa630000ac630000ae630000b0630000b2630000b4630000b6630000b8630000ba630000bc630000be630000c2630000c4630000
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
|
@ -361,8 +361,8 @@ MonoBehaviour:
|
||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_ResourceFile:
|
m_ResourceFile:
|
||||||
m_ListAreaState:
|
m_ListAreaState:
|
||||||
m_SelectedInstanceIDs: 06fbffff
|
m_SelectedInstanceIDs: fc620000
|
||||||
m_LastClickedInstanceID: -1274
|
m_LastClickedInstanceID: 25340
|
||||||
m_HadKeyboardFocusLastEvent: 0
|
m_HadKeyboardFocusLastEvent: 0
|
||||||
m_ExpandedInstanceIDs: c6230000d03c0000
|
m_ExpandedInstanceIDs: c6230000d03c0000
|
||||||
m_RenameOverlay:
|
m_RenameOverlay:
|
||||||
|
@ -444,7 +444,7 @@ MonoBehaviour:
|
||||||
m_MinSize: {x: 100, y: 200}
|
m_MinSize: {x: 100, y: 200}
|
||||||
m_MaxSize: {x: 8096, y: 16192}
|
m_MaxSize: {x: 8096, y: 16192}
|
||||||
vertical: 1
|
vertical: 1
|
||||||
controlID: 510
|
controlID: 6656
|
||||||
--- !u!114 &10
|
--- !u!114 &10
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 52
|
m_ObjectHideFlags: 52
|
||||||
|
@ -603,7 +603,7 @@ MonoBehaviour:
|
||||||
containerId: overlay-container--right
|
containerId: overlay-container--right
|
||||||
floating: 0
|
floating: 0
|
||||||
collapsed: 0
|
collapsed: 0
|
||||||
displayed: 1
|
displayed: 0
|
||||||
snapOffset: {x: 0, y: 0}
|
snapOffset: {x: 0, y: 0}
|
||||||
snapOffsetDelta: {x: 0, y: 0}
|
snapOffsetDelta: {x: 0, y: 0}
|
||||||
snapCorner: 0
|
snapCorner: 0
|
||||||
|
@ -719,9 +719,9 @@ MonoBehaviour:
|
||||||
m_PlayAudio: 0
|
m_PlayAudio: 0
|
||||||
m_AudioPlay: 0
|
m_AudioPlay: 0
|
||||||
m_Position:
|
m_Position:
|
||||||
m_Target: {x: -17.629921, y: 0.48958027, z: -0.22409801}
|
m_Target: {x: -25.330248, y: -2.0593255, z: -0.20706767}
|
||||||
speed: 2
|
speed: 2
|
||||||
m_Value: {x: -17.629921, y: 0.48958027, z: -0.22409801}
|
m_Value: {x: -25.330248, y: -2.0593255, z: -0.20706767}
|
||||||
m_RenderMode: 0
|
m_RenderMode: 0
|
||||||
m_CameraMode:
|
m_CameraMode:
|
||||||
drawMode: 0
|
drawMode: 0
|
||||||
|
@ -772,9 +772,9 @@ MonoBehaviour:
|
||||||
speed: 2
|
speed: 2
|
||||||
m_Value: {x: 0, y: 0, z: 0, w: 1}
|
m_Value: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_Size:
|
m_Size:
|
||||||
m_Target: 21.067785
|
m_Target: 14.378537
|
||||||
speed: 2
|
speed: 2
|
||||||
m_Value: 21.067785
|
m_Value: 14.378537
|
||||||
m_Ortho:
|
m_Ortho:
|
||||||
m_Target: 1
|
m_Target: 1
|
||||||
speed: 2
|
speed: 2
|
||||||
|
@ -853,8 +853,8 @@ MonoBehaviour:
|
||||||
y: 399.2
|
y: 399.2
|
||||||
width: 879.99994
|
width: 879.99994
|
||||||
height: 331.59998
|
height: 331.59998
|
||||||
m_MinSize: {x: 200, y: 200}
|
m_MinSize: {x: 202, y: 221}
|
||||||
m_MaxSize: {x: 4000, y: 4000}
|
m_MaxSize: {x: 4002, y: 4021}
|
||||||
m_ActualView: {fileID: 2}
|
m_ActualView: {fileID: 2}
|
||||||
m_Panes:
|
m_Panes:
|
||||||
- {fileID: 2}
|
- {fileID: 2}
|
||||||
|
@ -879,8 +879,8 @@ MonoBehaviour:
|
||||||
y: 0
|
y: 0
|
||||||
width: 352.80005
|
width: 352.80005
|
||||||
height: 730.8
|
height: 730.8
|
||||||
m_MinSize: {x: 275, y: 50}
|
m_MinSize: {x: 276, y: 71}
|
||||||
m_MaxSize: {x: 4000, y: 4000}
|
m_MaxSize: {x: 4001, y: 4021}
|
||||||
m_ActualView: {fileID: 15}
|
m_ActualView: {fileID: 15}
|
||||||
m_Panes:
|
m_Panes:
|
||||||
- {fileID: 15}
|
- {fileID: 15}
|
||||||
|
@ -920,8 +920,8 @@ MonoBehaviour:
|
||||||
m_CachedPref: 160
|
m_CachedPref: 160
|
||||||
m_ControlHash: -371814159
|
m_ControlHash: -371814159
|
||||||
m_PrefName: Preview_InspectorPreview
|
m_PrefName: Preview_InspectorPreview
|
||||||
m_LastInspectedObjectInstanceID: -1274
|
m_LastInspectedObjectInstanceID: 25340
|
||||||
m_LastVerticalScrollValue: 334.40002
|
m_LastVerticalScrollValue: 0
|
||||||
m_GlobalObjectId:
|
m_GlobalObjectId:
|
||||||
m_InspectorMode: 0
|
m_InspectorMode: 0
|
||||||
m_LockTracker:
|
m_LockTracker:
|
||||||
|
|
Loading…
Reference in New Issue