facsimile-wing/resources/pickups/pickup_behavior.gd

40 lines
1.2 KiB
GDScript

class_name PickupBehavior extends Resource
## Base resource that defines how a pickup moves and looks on screen.
## Assign to [member pickup_behavior] on a PickupBehaviorController.
@export_group("Animation")
## Whether the pickup bobs up and down in place.
@export var bob_enabled: bool = true
## Bob oscillation frequency in cycles per second.
@export var bob_frequency: float = 2.0
## Bob vertical amplitude in pixels (peak-to-center).
@export var bob_amplitude: float = 4.0
## Whether the pickup subtly shakes (jitter) in place.
@export var shake_enabled: bool = false
## Shake frequency in Hz (how fast the jitter oscillates).
@export var shake_frequency: float = 8.0
## Shake amplitude in pixels (peak-to-center).
@export var shake_amplitude: float = 1.5
## Optional fade-in duration (0 = no fade).
@export var fade_in_duration: float = 0.0
var _elapsed: float = 0.0
func start() -> void:
_elapsed = 0.0
func process(delta: float) -> float:
# Returns the current opacity factor (0..1) based on fade timers.
_elapsed += delta
var target_alpha: float = 1.0
if fade_in_duration > 0 and _elapsed < fade_in_duration:
target_alpha = clampf(_elapsed / fade_in_duration, 0.0, 1.0)
return target_alpha