cannot stomp component

This commit is contained in:
2025-02-09 07:09:31 +01:00
parent a9b195500a
commit 402b819f05
2 changed files with 13 additions and 6 deletions

View File

@@ -0,0 +1,2 @@
class_name CannotStompComponent
extends Node

View File

@@ -5,6 +5,7 @@ extends Node
@export var area2d: Area2D @export var area2d: Area2D
@export var root: Node2D @export var root: Node2D
func _ready() -> void: func _ready() -> void:
if not area2d: if not area2d:
printerr("No area2d assigned!") printerr("No area2d assigned!")
@@ -12,31 +13,35 @@ func _ready() -> void:
if not root: if not root:
printerr("No root assigned!") printerr("No root assigned!")
return return
area2d.body_entered.connect(on_area2d_body_entered) area2d.body_entered.connect(on_area2d_body_entered)
func deal_damage(target: HealthComponent) -> void: func deal_damage(target: HealthComponent) -> void:
target.decrease_health(damage) target.decrease_health(damage)
func on_area2d_body_entered(body: Node2D) -> void: func on_area2d_body_entered(body: Node2D) -> void:
if body.has_node("HealthComponent"): if body.has_node("HealthComponent"):
var health_component: HealthComponent = body.get_node("HealthComponent") var health_component: HealthComponent = body.get_node("HealthComponent")
if not health_component: if not health_component:
printerr("No HealthComponent assigned!") printerr("No HealthComponent assigned!")
return return
var cannot_stomp_component: CannotStompComponent = body.get_node_or_null("CannotStompComponent")
if cannot_stomp_component:
return
if root.global_position.y < body.global_position.y: if root.global_position.y < body.global_position.y:
if root is PlayerController: if root is PlayerController:
var velocity: Vector2 = root.previous_velocity var velocity: Vector2 = root.previous_velocity
if velocity.y > 0.0: if velocity.y > 0.0:
deal_damage(health_component) deal_damage(health_component)
var damage_component: DamageComponent = body.get_node_or_null("DamageComponent") var damage_component: DamageComponent = body.get_node_or_null("DamageComponent")
if not damage_component: if not damage_component:
return return
damage_component.set_process(false) damage_component.set_process(false)
await get_tree().process_frame await get_tree().process_frame
damage_component.set_process(true) damage_component.set_process(true)