37 lines
838 B
C#
37 lines
838 B
C#
using Godot;
|
|
|
|
public partial class BasicEnemy : Node3D
|
|
{
|
|
[Export]
|
|
private HealthPoints _hp;
|
|
|
|
protected GameManager _gameManager;
|
|
|
|
public override void _Ready()
|
|
{
|
|
_gameManager = GetTree().Root.GetNode<GameManager>("Main/GameManager");
|
|
}
|
|
|
|
public void OnEnemyHit(Node3D node)
|
|
{
|
|
_hp.TakeDamage(1);
|
|
|
|
if (_hp.CurrentHP <= 0)
|
|
{
|
|
var currentLevel = (Level)GetTree().GetFirstNodeInGroup("Level");
|
|
currentLevel.OnEnemyDefeated(this);
|
|
QueueFree();
|
|
}
|
|
}
|
|
|
|
public void OnPlayerHit(Node3D node)
|
|
{
|
|
GD.Print("Collision with player");
|
|
if (node is Character character && character.HasMethod(Character.MethodName.OnHit))
|
|
{
|
|
GD.Print("Player hit: " + character.Name);
|
|
character.Call(Character.MethodName.OnHit, node);
|
|
}
|
|
}
|
|
}
|