extends Node3D @export var orbit_radius := 1.2 @export var orbit_speed := 0.45 @export var bob_height := 0.35 @export var phase := 0.0 @onready var left_wing: MeshInstance3D = $LeftWing @onready var right_wing: MeshInstance3D = $RightWing var _center := Vector3.ZERO var _elapsed := 0.0 func _ready() -> void: _center = position _elapsed = phase func _process(delta: float) -> void: _elapsed += delta var angle := _elapsed * orbit_speed position = ( _center + Vector3( cos(angle) * orbit_radius, sin(_elapsed * 1.7) * bob_height, sin(angle) * orbit_radius * 0.65 ) ) rotation.y = -angle + PI * 0.5 var flap := 22.0 + sin(_elapsed * 10.0) * 34.0 left_wing.rotation_degrees.z = flap right_wing.rotation_degrees.z = -flap