годот туториал 2д.Tween 3

Сегодня мы заново соберём проект из туториала по Tween в Godot: разберём код, настройки и анимации.годот туториал 2д.Tween 3

Для этого создадим проект Tween Demo Experiment. Добавим на сцену корневой узел Node2D, внутрь которого поместим Path2D и Sprite2D

Сохраним сцену как tween.tscn. Теперь добавим к корневому узлу Node2D скрипт

extends Node2D

var tween:Tween
@onready var icon:Sprite2D = $Sprite2D
@onready var icon_start_position = icon.position

func _ready() -> void:
reset()
tween=create_tween().set_speed_scale(2)
var tweener:=tween.tween_property(icon,^"position",Vector2(300,300),2)
tweener.set_ease(Tween.EASE_IN)
tweener.set_trans(Tween.TRANS_LINEAR)

func reset()->void:
icon.position = icon_start_position

Спрайт icon перемещается из начальной точки в конечную с помощью анимации Tween

В функции _ready создаётся объект Tween и задаётся тип перемещения. Теперь добавим опорные точки для Path2D и заставим Tween двигать спрайт по кривой

extends Node2D

var tween:Tween
@onready var icon:Sprite2D = $Sprite2D
@onready var icon_start_position = icon.position
@onready var path:Path2D = $Path2D

func _ready() -> void:
reset()
tween=create_tween().set_speed_scale(2)
var tweener:=tween.tween_property(icon,^"position",Vector2(300,300),2)
tweener.set_ease(Tween.EASE_IN)
tweener.set_trans(Tween.TRANS_LINEAR)

var tweener2 := tween.tween_method(
func(v: float) -> void:
icon.position = path.position + path.curve.sample_baked(v),
0.0,
path.curve.get_baked_length(), 60.0
).set_delay(0.5)
tweener2.set_ease(Tween.EASE_OUT)
tweener2.set_trans(Tween.TRANS_BOUNCE)



func reset()->void:
icon.position = icon_start_position

Создаём второй объект Tween (tweener2) и переменную path, ссылающуюся на узел Path2D. Теперь после перемещения в заданную точку иконка начинает движение по нарисованной кривой

годот туториал 2д.Tween 3.Конец

На этом туториал по Tween завершён. В следующий раз мы приступим к разработке игры «Сокобан» — это будет мой тестовый урок. Спасибо за внимание!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх