27 lines
731 B
GDScript
27 lines
731 B
GDScript
extends NinePatchRect
|
|
|
|
var max_displacement : float = 50
|
|
var speed : float = 10
|
|
var move_dir : Vector2
|
|
var start_position : Vector2
|
|
|
|
|
|
func _ready() -> void:
|
|
start_position = position
|
|
move_dir = Vector2.UP.rotated(randf() * 2 * PI)
|
|
|
|
func _process(delta: float) -> void:
|
|
var offset = (position - start_position).length() / max_displacement
|
|
var turn = randf_range(-PI / 6.0, PI / 6.0) * offset
|
|
var a_dir = move_dir.rotated(turn)
|
|
var b_dir = move_dir.rotated(-turn)
|
|
var ap = position + speed * delta * a_dir
|
|
var bp = position + speed * delta * b_dir
|
|
var mpsq = max_displacement * max_displacement
|
|
if ap.distance_squared_to(start_position) < mpsq:
|
|
position = ap
|
|
move_dir = a_dir
|
|
else:
|
|
position = bp
|
|
move_dir = b_dir
|