Files
Super-Mario-Bros.-Remastere…/Scripts/Classes/Components/BlockBouncingDetection.gd
2025-09-13 16:30:32 +01:00

34 lines
927 B
GDScript

class_name BlockBouncingDetection
extends Node
@export_enum("Collision", "Hitbox") var detection_type := 0
@export var hitbox: Area2D = null
@export var can_change_direction := false
signal block_bounced(block: Block)
func _physics_process(_delta: float) -> void:
if detection_type == 0:
collision_detect()
else:
hitbox_detect()
func collision_detect() -> void:
var collision: KinematicCollision2D = owner.move_and_collide(Vector2.DOWN, true)
if is_instance_valid(collision):
if collision.get_collider() is Block:
if collision.get_collider().bouncing:
block_bounced.emit(collision.get_collider())
return
func hitbox_detect() -> void:
if is_instance_valid(hitbox) == false: return
for i in hitbox.get_overlapping_bodies():
if i is Block:
if i.bouncing:
block_bounced.emit(i)
if can_change_direction:
owner.direction = sign(owner.global_position.x - i.global_position.x)
return