34 lines
923 B
GDScript
34 lines
923 B
GDScript
#*
|
|
#* hitbox.gd
|
|
#* =============================================================================
|
|
#* Copyright 2021-2024 Serhii Snitsaruk
|
|
#*
|
|
#* Use of this source code is governed by an MIT-style
|
|
#* license that can be found in the LICENSE file or at
|
|
#* https://opensource.org/licenses/MIT.
|
|
#* =============================================================================
|
|
#*
|
|
class_name Hitbox
|
|
extends Area2D
|
|
## Area that deals damage.
|
|
|
|
@export var damage: float = 1.0
|
|
@export var knockback_enabled: bool = false
|
|
@export var knockback_strength: float = 500.0
|
|
|
|
func _ready() -> void:
|
|
area_entered.connect(_area_entered)
|
|
|
|
|
|
func _area_entered(hurtbox: Hurtbox) -> void:
|
|
if hurtbox.owner == owner:
|
|
return
|
|
hurtbox.take_damage(damage, get_knockback())
|
|
|
|
|
|
func get_knockback() -> Vector2:
|
|
var knockback: Vector2
|
|
if knockback_enabled:
|
|
knockback = Vector2.RIGHT.rotated(global_rotation) * knockback_strength
|
|
return knockback
|