Take damage/Screen shake

This commit is contained in:
2025-11-30 22:35:26 -08:00
parent 8f8cc217dc
commit 4ee4e02a51
5 changed files with 131 additions and 12 deletions

View File

@@ -76,6 +76,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
[Node] private IAnimationPlayer PlayerFXAnimations { get; set; } = default!;
[Node] private IAnimationPlayer TakeDamageAnimationPlayer { get; set; } = default!;
[Node] private Area3D Hitbox { get; set; } = default!;
[Node] private Area3D CollisionDetector { get; set; } = default!;
@@ -87,6 +89,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
[Node] private AudioStreamPlayer3D WalkSFX { get; set; } = default!;
[Node] private CollisionShape3D MainCollision { get; set; } = default!;
[Node] private ShakeCamera _camera3D { get; set; } = default!;
#endregion
@@ -168,7 +172,6 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
public void Activate()
{
MainCollision.Disabled = false;
SetProcessInput(true);
SetPhysicsProcess(true);
SetHealthTimerStatus(HealthTimerIsActive);
@@ -176,7 +179,6 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
public void Deactivate()
{
MainCollision.Disabled = true;
SetProcessInput(false);
SetPhysicsProcess(false);
SetHealthTimerStatus(false);
@@ -197,6 +199,8 @@ public partial class Player : CharacterBody3D, IPlayer, IProvide<IPlayer>
public void TakeDamage(AttackData damage)
{
_camera3D.AddShake(1.0f);
TakeDamageAnimationPlayer.Play("take_damage");
var damageReceived = DamageCalculator.CalculateDamage(damage, DefenseComponent.CurrentDefense.Value + EquipmentComponent.BonusDefense, EquipmentComponent.ElementalResistance);
HealthComponent.Damage(damageReceived);
SfxDatabase.Instance.Play(SoundEffect.TakeDamage);