aboutsummaryrefslogtreecommitdiffstats
path: root/Assets/Scripts/Actors/Actor.cs
diff options
context:
space:
mode:
authorNeil Kollack <nkollack@gmail.com>2022-04-16 16:33:55 -0500
committerNeil Kollack <nkollack@gmail.com>2022-04-16 16:33:55 -0500
commit5339e773f247bdf81fa3b30a4a03c748732b5046 (patch)
treedc733314de0dc1d261db2531c739788b167635b1 /Assets/Scripts/Actors/Actor.cs
parent92690dd53e3bfc05bbd8b7338f6e57961eb08b93 (diff)
fix: feedback(easier trap section + better damage)
Diffstat (limited to 'Assets/Scripts/Actors/Actor.cs')
-rw-r--r--Assets/Scripts/Actors/Actor.cs30
1 files changed, 23 insertions, 7 deletions
diff --git a/Assets/Scripts/Actors/Actor.cs b/Assets/Scripts/Actors/Actor.cs
index 9a4b338..6b82060 100644
--- a/Assets/Scripts/Actors/Actor.cs
+++ b/Assets/Scripts/Actors/Actor.cs
@@ -15,6 +15,7 @@ namespace MontanaJohns.Actors
[SerializeField] protected float gravityScale = 1.5f;
[SerializeField] protected Stats baseStats = Stats.DefaultBaseStats();
[SerializeField] protected Transform groundCheckPoint;
+ [SerializeField] protected float invulnTime = 0f;
protected Rigidbody2D _rigidBody;
protected SpriteRenderer _renderer;
@@ -32,6 +33,8 @@ namespace MontanaJohns.Actors
public Stats stats;
public int health;
+ public bool invuln;
+
protected virtual void Awake()
{
_rigidBody = GetComponent<Rigidbody2D>();
@@ -39,10 +42,7 @@ namespace MontanaJohns.Actors
_renderer = GetComponent<SpriteRenderer>();
_animator = GetComponent<Animator>();
groundLayers = LayerMask.GetMask("Grapple", "Ground");
- }
- protected virtual void Start()
- {
_rigidBody.freezeRotation = true;
_rigidBody.collisionDetectionMode = CollisionDetectionMode2D.Continuous;
_rigidBody.gravityScale = gravityScale;
@@ -53,6 +53,11 @@ namespace MontanaJohns.Actors
jumpCount = stats.maxJumps;
}
+ protected virtual void Start()
+ {
+
+ }
+
protected virtual void FixedUpdate()
{
if (!_animator.GetBool("airborn") && !Physics2D.OverlapCircle(groundCheckPoint.position, 0.2f, groundLayers))
@@ -137,18 +142,29 @@ namespace MontanaJohns.Actors
public virtual void TakeDamage(int damage)
{
- health -= damage;
- StartCoroutine(DamageAnimation());
+ StartCoroutine(Damage(damage));
+ }
+
+ private IEnumerator Damage(int damage)
+ {
+ if(!invuln)
+ {
+ invuln = true;
+ health -= damage;
+ StartCoroutine(DamageAnimation());
+ yield return new WaitForSeconds(invulnTime);
+ invuln = false;
+ }
}
- IEnumerator DamageAnimation()
+ private IEnumerator DamageAnimation()
{
_renderer.color = Color.red;
yield return new WaitForSeconds(0.5f);
_renderer.color = Color.white;
}
- IEnumerator Falling()
+ private IEnumerator Falling()
{
_animator.SetBool("airborn", true);