Courbes de tween
Cinq carrés traversent l'écran, un par courbe de transition. Le moyen le plus rapide de voir ce que fait chaque easing.
L'éditeur ci-dessus fait tourner ce projet. Changez une ligne et il se recharge.
Classes Godot utilisées
TweenPolygon2DLabel
Le code
scripts/main.gd
extends Node
const DURATION: float = 1.4
const SIZE: Vector2 = Vector2(56, 56)
const CURVES: Array = [
{name = 'LINEAR', trans = Tween.TRANS_LINEAR},
{name = 'SINE', trans = Tween.TRANS_SINE},
{name = 'BACK', trans = Tween.TRANS_BACK},
{name = 'ELASTIC', trans = Tween.TRANS_ELASTIC},
{name = 'BOUNCE', trans = Tween.TRANS_BOUNCE},
]
func _ready() -> void:
_add_background()
var view: Vector2 = get_viewport().get_visible_rect().size
var margin: float = 120.0
var spacing: float = view.y / (CURVES.size() + 1)
for i in CURVES.size():
var row: float = spacing * (i + 1)
_add_label(CURVES[i].name, Vector2(margin, row - SIZE.y))
var square: Polygon2D = _make_square(Color('#8da5f3'))
square.position = Vector2(margin, row)
add_child(square)
var tween: Tween = create_tween().set_loops()
tween.tween_property(square, 'position:x', view.x - margin, DURATION).set_trans(CURVES[i].trans).set_ease(Tween.EASE_IN_OUT)
tween.tween_property(square, 'position:x', margin, DURATION).set_trans(CURVES[i].trans).set_ease(Tween.EASE_IN_OUT)
func _add_background() -> void:
var background: ColorRect = ColorRect.new()
background.color = Color('#12141a')
add_child(background)
background.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
func _add_label(text: String, at: Vector2) -> void:
var label: Label = Label.new()
label.text = text
label.position = at
label.add_theme_color_override('font_color', Color('#999999'))
add_child(label)
func _make_square(color: Color) -> Polygon2D:
var square: Polygon2D = Polygon2D.new()
square.polygon = PackedVector2Array(
[
-SIZE * 0.5,
Vector2(SIZE.x, -SIZE.y) * 0.5,
SIZE * 0.5,
Vector2(-SIZE.x, SIZE.y) * 0.5,
]
)
square.color = color
return square