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

28 lines
1007 B
GDScript

extends AnimatableBody2D
@export var active := false
@export_enum("Right", "Left", "Up", "Down") var direction := 0
@export_range(1, 4, 1) var strength := 1
func on_switch_hit() -> void:
active = not active
func _physics_process(_delta: float) -> void:
$Particles.amount = strength * 2
$Particles.speed_scale = strength / 2.0
$Sprite.speed_scale = strength / 2.0
if active:
for i in $Hitbox.get_overlapping_areas():
if i.owner is CharacterBody2D:
var wind_velocity = Vector2.RIGHT.rotated(global_rotation) * (strength * 2)
var modifier = Vector2.ONE
if i.owner is Player:
if Global.player_action_pressed("jump", i.owner.player_id):
modifier.y = 2
if Global.player_action_pressed("move_down", i.owner.player_id):
modifier.y = 0.5
var distance = (((i.owner.global_position - global_position) / modifier).length() / 250)
i.owner.velocity += (wind_velocity / distance / Vector2(2, 1))
$Particles.emitting = active
$Sprite.play("On" if active else "Off")