4 Commits

Author SHA1 Message Date
7b15dbb593 Dashing into enemies creates a shockwave that pushes them away
You don't take damage from this
2024-10-27 21:27:38 -07:00
Iazubi
77f507183d Merge pull request #9 from ProtoSharkk/mainMenu
Main menu and Lore UI
2024-10-27 00:33:21 -07:00
Iazubi
c50d56fb65 Merge pull request #8 from ProtoSharkk/stab
Rework attacking
2024-10-27 00:30:05 -07:00
6f5114b495 Attack damage scales quadratic with time until at damageStrength 2024-10-27 00:18:18 -07:00
2 changed files with 23 additions and 9 deletions

View File

@@ -33,6 +33,7 @@ public class Ratbot : MonoBehaviour
// Die if health below zero
public void Damage(float hurtyAmount) {
Debug.Log(hurtyAmount);
health -= hurtyAmount;
if (health <= 0) {
Destroy(gameObject);

View File

@@ -10,7 +10,6 @@ public class Teo : MonoBehaviour
public float swingDistance = 10;
public float damageStrength = 10;
public float attackCooldownSeconds = 10;
public float spamPunishMultiplier = 0.5F;
public float dashDistance = 5F;
public float dashCooldownSeconds = 5;
public float lastAttackTime = 0;
@@ -68,13 +67,15 @@ public class Teo : MonoBehaviour
Input.mousePosition.x - Screen.width/2
)) > swingRangeDeg * Mathf.Deg2Rad
) continue;
// Apply a multiplier to damageStrength based on attack cooldown.
// If multiplier > 1, just do damageStrength
float damageAmount = damageStrength * (Time.fixedTime - lastAttackTime)/attackCooldownSeconds;
// Apply x^2 multiplier to damage if not fully charged
// Just use damageStrength if fully charged
float timeWaited = Time.fixedTime - lastAttackTime;
ratbot.Damage(
(damageAmount > damageStrength)
? damageStrength
: damageAmount * spamPunishMultiplier
(timeWaited < attackCooldownSeconds)
? Mathf.Pow(timeWaited, 2) *
damageStrength /
Mathf.Pow(attackCooldownSeconds, 2)
: damageStrength
);
}
}
@@ -93,9 +94,21 @@ public class Teo : MonoBehaviour
).normalized * dashDistance);
// Wait 0.2 seconds before ending the dash
yield return new WaitForSeconds(0.2F);
// Re enable collision and linearDamping after dash complete
// Re enable collision and linearDamping after dash
dashing = false;
collider.enabled = true;
controller.linearDamping = 15;
// Push enemies away at end of dash
foreach (Collider2D hit in Physics2D.OverlapCircleAll(
transform.position, 3
)) {
if (hit.tag != "Ratbot") continue;
hit.GetComponent<Rigidbody2D>().AddRelativeForce(
(hit.transform.position - transform.position)
.normalized * dashDistance
);
}
// Don't take damage at end of dash
yield return new WaitForSeconds(0.2F);
collider.enabled = true;
}
}