35 lines
751 B
GDScript
35 lines
751 B
GDScript
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
|