Attack damage scales quadratic with time until at damageStrength

This commit is contained in:
2024-10-27 00:18:18 -07:00
parent 3dd0e0f439
commit 6f5114b495
2 changed files with 9 additions and 7 deletions

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
);
}
}