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

42 lines
1.1 KiB
GDScript

extends AnimatableBody2D
@export var bounce_height := -500
var players := []
func on_area_entered(area: Area2D) -> void:
pass
func _physics_process(_delta: float) -> void:
for i in $Hitbox.get_overlapping_areas():
if i.owner is Player and i.owner.is_on_floor():
if i.owner.spring_bouncing or i.owner.velocity.y < 0:
continue
i.owner.velocity.x = 0
if players.has(i.owner) == false:
players.append(i.owner)
$Animation.play("Bounce")
i.owner.spring_bouncing = true
for i in players:
i.global_position.y = $PlayerCollision/PlayerJoint.global_position.y
func bounce_players() -> void:
var high_bounce := false
for player in players:
if Global.player_action_pressed("jump", player.player_id):
high_bounce = true
player.velocity.y = bounce_height
player.gravity = player.JUMP_GRAVITY
player.has_jumped = true
else:
player.velocity.y = -300
if high_bounce:
AudioManager.play_sfx("spring", global_position)
else:
AudioManager.play_sfx("bump", global_position)
players.clear()
func on_area_exited(area: Area2D) -> void:
if area.owner is Player:
area.owner.spring_bouncing = false