mirror of
				https://github.com/JHDev2006/Super-Mario-Bros.-Remastered-Public.git
				synced 2025-11-04 08:35:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			927 B
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			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
 |