diff options
author | Neil Kollack <nkollack@gmail.com> | 2022-04-17 19:15:56 -0500 |
---|---|---|
committer | Neil Kollack <nkollack@gmail.com> | 2022-04-17 19:15:56 -0500 |
commit | 4e6d25526f52dd2db06bc58f04c6e51272b049ea (patch) | |
tree | 7dffa644f219cc6eb4149f42233f16ecae28c7d8 /Assets/Scripts/Actors/Actor.cs | |
parent | 729c9e5b461966381af7c2464712fb8a23a6f4aa (diff) |
fix: improve slope collision
Diffstat (limited to 'Assets/Scripts/Actors/Actor.cs')
-rw-r--r-- | Assets/Scripts/Actors/Actor.cs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/Assets/Scripts/Actors/Actor.cs b/Assets/Scripts/Actors/Actor.cs index 30721a5..3acd51c 100644 --- a/Assets/Scripts/Actors/Actor.cs +++ b/Assets/Scripts/Actors/Actor.cs @@ -14,7 +14,8 @@ namespace MontanaJohns.Actors { [SerializeField] protected float gravityScale = 1.5f; [SerializeField] protected Stats baseStats = Stats.DefaultBaseStats(); - [SerializeField] protected Transform groundCheckPoint; + [SerializeField] protected Transform groundCheckPoint1; + [SerializeField] protected Transform groundCheckPoint2; [SerializeField] protected float invulnTime = 0f; protected Rigidbody2D _rigidBody; @@ -33,7 +34,7 @@ namespace MontanaJohns.Actors public Stats stats; public int health; - public bool invuln; + private bool invuln; protected virtual void Awake() { @@ -60,7 +61,7 @@ namespace MontanaJohns.Actors protected virtual void FixedUpdate() { - if (!_animator.GetBool("airborn") && !Physics2D.OverlapCircle(groundCheckPoint.position, 0.2f, groundLayers)) + if (!_animator.GetBool("airborn") && !(Physics2D.OverlapCircle(groundCheckPoint1.position, 0.2f, groundLayers) || Physics2D.OverlapCircle(groundCheckPoint2.position, 0.2f, groundLayers))) { _animator.SetTrigger("fall"); StartCoroutine(Falling()); @@ -98,7 +99,9 @@ namespace MontanaJohns.Actors public virtual void Jump() { - if(Physics2D.OverlapCircle(groundCheckPoint.position, 0.2f, groundLayers)) + if (isGrappling) + Use(); + if(Physics2D.OverlapCircle(groundCheckPoint1.position, 0.2f, groundLayers) || Physics2D.OverlapCircle(groundCheckPoint2.position, 0.2f, groundLayers)) { jumpCount = stats.maxJumps; } @@ -180,8 +183,11 @@ namespace MontanaJohns.Actors { _animator.SetBool("airborn", true); - while (!Physics2D.OverlapCircle(groundCheckPoint.position, 0.2f, groundLayers)) + bool falling = true; + while (falling) { + if (Physics2D.OverlapCircle(groundCheckPoint1.position, 0.2f, groundLayers) || Physics2D.OverlapCircle(groundCheckPoint2.position, 0.2f, groundLayers)) + falling = false; yield return new WaitForEndOfFrame(); } |