26 lines
819 B
GDScript
26 lines
819 B
GDScript
extends Node2D
|
|
|
|
@export var viewport_x_div: float
|
|
@export var viewport_y_div: float
|
|
@export var x_offset: float = 0.0
|
|
|
|
var sway_amplitude = 20
|
|
var sway_speed = 1.0
|
|
var tilt_amplitude = 0.1
|
|
var tilt_lerp_speed = 5.0
|
|
|
|
var time := 0.0
|
|
var base_position := Vector2.ZERO
|
|
|
|
func _ready():
|
|
var viewport_size = get_viewport_rect().size
|
|
base_position = Vector2(viewport_size.x / viewport_x_div + x_offset, viewport_size.y / viewport_y_div)
|
|
position = base_position
|
|
|
|
func _process(delta):
|
|
time += delta
|
|
var sway_offset = sin(time * sway_speed) * sway_amplitude
|
|
position.x = base_position.x + sway_offset
|
|
var sway_velocity = cos(time * sway_speed) * sway_speed
|
|
var target_rotation = clamp(sway_velocity * tilt_amplitude, -tilt_amplitude, tilt_amplitude)
|
|
rotation = lerp(rotation, target_rotation, delta * tilt_lerp_speed)
|