EnemyPlayerDetection.gd 713 B

12345678910111213141516171819202122232425
  1. class_name EnemyPlayerDetection
  2. extends Node
  3. @export var hitbox: Area2D = null
  4. @export var height := 4
  5. signal player_hit(player: Player)
  6. signal player_stomped_on(player: Player)
  7. signal invincible_player_hit(player: Player)
  8. func _ready() -> void:
  9. hitbox.area_entered.connect(area_entered)
  10. func area_entered(area: Area2D) -> void:
  11. if area.owner is Player:
  12. player_entered(area.owner)
  13. func player_entered(player: Player) -> void:
  14. if player.is_invincible or player.has_hammer:
  15. invincible_player_hit.emit(player)
  16. elif (player.velocity.y >= 15 or (player.global_position.y + height < owner.global_position.y)) and player.in_water == false:
  17. player_stomped_on.emit(player)
  18. else:
  19. player_hit.emit(player)