extends Node # Облёт карты Parkour для скриншотов: телепорт игрока по точкам, кадры пишет Godot (--write-movie). # Запуск (окно мелькнёт): # godot --path . --resolution 1152x648 --fixed-fps 10 --write-movie /tmp/shots/p.png --quit-after 42 res://tools/test/parkour_tour.tscn -- --client # Кадры: p00000005.png и т. д.; точки — массив spots (позиция в координатах Godot, рыскание, наклон головы) var level var p var frame := 0 # позиция центра капсулы (Godot), рыскание в градусах, наклон головы в градусах var spots := [ [Vector3(0, 1.25, 6), 0, 6], [Vector3(0, 11.0, -196), 0, 3], [Vector3(-3.4, 10.0, -222), 0, 0], [Vector3(2, 14.0, -310), 0, 20], [Vector3(0, 46.0, -352), 0, 3], [Vector3(0, 46.0, -400), 0, 0], [Vector3(0, 49.0, -560), 0, 6], [Vector3(0, 76.0, -672), 0, 14], ] func _ready() -> void: level = (load("res://maps/parkour/parkour.tscn") as PackedScene).instantiate() add_child(level) p = level.get_node("Player") p.set_physics_process(false) func _process(_d: float) -> void: frame += 1 var i := int(frame / 5) if i < spots.size() and frame % 5 == 1: var s = spots[i] p.global_position = s[0] p.rotation.y = deg_to_rad(s[1]) p.head.rotation.x = deg_to_rad(s[2])