Set up framework for more advance pickup behaviours.
This commit is contained in:
parent
a0df0be862
commit
935b61bd3b
16 changed files with 485 additions and 20 deletions
43
resources/pickups/pickup_behavior.gd
Normal file
43
resources/pickups/pickup_behavior.gd
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
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
|
||||
## Optional fade-out duration when the pickup is about to be collected
|
||||
## (used by controller; 0 = no fade).
|
||||
@export var fade_out_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
|
||||
Loading…
Add table
Add a link
Reference in a new issue