Геймпад Xbox, меню паузы с настройками, новый хаб с музыкой
- Геймпад: раскладка под паркур и гонки, обзор правым стиком, навигация по меню (A/B/крестовина) - Меню паузы (Esc/Start): выход в хаб, настройки (мышь, стик, FOV, громкость, инверсия), справка по управлению - Хаб 48x32x10 м: колонны, окна с городом, голограмма, лавки; музыка «Local Forecast - Elevator» (Kevin MacLeod, CC-BY) - Тесты: pause_test, pad_menu_test, hub_tour; README обновлён Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
extends Node
|
||||
# Облёт хаба для кадров: телепорт игрока по точкам, кадры пишет Godot (--write-movie).
|
||||
# godot --path . --resolution 1152x648 --fixed-fps 10 --write-movie /tmp/shots/h.png --quit-after 45 res://tools/test/hub_tour.tscn -- --client --server-url=ws://127.0.0.1:1
|
||||
# Меню паузы: добавьте `--menu=main|settings|controls` (тогда в кадре меню на хабе, остальной облёт отключён).
|
||||
# Кадры: h00000005.png и т. д. (каждые 5 кадров — следующая точка из spots).
|
||||
var level
|
||||
var p
|
||||
var frame := 0
|
||||
# позиция центра капсулы, рыскание (0 = на север, к порталам), наклон головы (градусы)
|
||||
var spots := [
|
||||
[Vector3(0, 1.25, 12), 0, 4], [Vector3(-10, 1.25, -6), 90, 8], [Vector3(10, 1.25, 8), -90, 6],
|
||||
[Vector3(0, 1.25, -9), 0, 12], [Vector3(0, 1.25, -5), 180, 10], [Vector3(14, 1.25, -9), 0, 8],
|
||||
[Vector3(-20, 1.25, 2), -90, 0], [Vector3(0, 6.0, 13), 0, -18],
|
||||
]
|
||||
func _ready() -> void:
|
||||
Net.nick_asked = true # без панели «Введите ник»
|
||||
level = (load("res://maps/hub/hub.tscn") as PackedScene).instantiate()
|
||||
add_child(level)
|
||||
p = level.get_node("Player")
|
||||
p.set_physics_process(false)
|
||||
func _process(_d: float) -> void:
|
||||
frame += 1
|
||||
for a in OS.get_cmdline_user_args():
|
||||
if a.begins_with("--menu="):
|
||||
if frame == 3:
|
||||
PauseMenu.open_menu()
|
||||
PauseMenu._show_page(a.substr(7))
|
||||
return
|
||||
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])
|
||||
Reference in New Issue
Block a user