fix: idle-анимация РЕАЛЬНО играет (T-pose побеждён)
Some checks failed
Godot CI / Import + smoke test (push) Failing after 14s
Some checks failed
Godot CI / Import + smoke test (push) Failing after 14s
ДИАГНОСТИКА:
- call_deferred не сработал (find_child вернул null при ранее).
- Прежний debug headless не показывал printы т.к. main_scene =
main_menu, Act1 загружался только через клик.
- Временно поменял main_scene → act1_room, запустил → увидел:
«[father] AnimationPlayer FOUND, 32 анимаций»
«[father] idle ИГРАЕТСЯ» ✅
РЕШЕНИЕ:
- В _start_father_idle добавил await get_tree().process_frame ×2
→ даём 2 кадра чтоб glb subscene полностью инстанцировалась
ДО поиска AnimationPlayer.
- Вызов прямой (не call_deferred) — функция сама ждёт frames.
- Setting anim_player.autoplay = «idle» (на будущее).
- Fallback на «static» если «idle» не запустилась.
- Debug-print подтвердил работоспособность.
SCALE 1.7 (компромисс):
- Раньше 2.35 = 1.7м высоты, но в T-pose ширина 1.8м (огромный).
- Теперь 1.7 → высота 1.23м (короче но не громадный), ширина в
T-pose 1.3м, в idle ~0.5м.
- Когда idle стабильно работает можем поднять до 2.0-2.35.
PROJECT.GODOT восстановлен — main_scene снова main_menu.tscn.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
315173556e
commit
cce09070e8
3 changed files with 22 additions and 16 deletions
|
|
@ -650,7 +650,7 @@ material_override = SubResource("mat_note")
|
|||
shape = SubResource("shape_note")
|
||||
|
||||
[node name="FatherNPC" parent="." instance=ExtResource("100_father")]
|
||||
transform = Transform3D(0, 0, -2.35, 0, 2.35, 0, 2.35, 0, 0, 1.6, 0, 0)
|
||||
transform = Transform3D(0, 0, -1.7, 0, 1.7, 0, 1.7, 0, 0, 1.7, 0, 0)
|
||||
|
||||
[node name="PlayerFPV" parent="." instance=ExtResource("3_player")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.5)
|
||||
|
|
|
|||
|
|
@ -15,8 +15,7 @@ var state: State = State.INTRO
|
|||
func _ready() -> void:
|
||||
_hide_noise_items()
|
||||
_apply_textures()
|
||||
# Deferred — glb children могут быть не готовы в _ready parent сцены
|
||||
call_deferred("_start_father_idle")
|
||||
_start_father_idle() # внутри ждёт 2 frame чтоб glb инициализировался
|
||||
|
||||
player.interactable_focused.connect(_on_player_focused)
|
||||
player.interactable_unfocused.connect(_on_player_unfocused)
|
||||
|
|
@ -28,22 +27,28 @@ func _ready() -> void:
|
|||
|
||||
func _start_father_idle() -> void:
|
||||
# Kenney glb имеют 32 анимации, но не играют ничего по умолчанию →
|
||||
# модель в T-pose (руки в стороны). Запускаем idle если есть.
|
||||
# T-pose. Запускаем idle.
|
||||
# Ждём 2 кадра — glb subscene полностью инстанцируется через
|
||||
# несколько кадров после _ready родителя.
|
||||
await get_tree().process_frame
|
||||
await get_tree().process_frame
|
||||
|
||||
var anim_player: AnimationPlayer = father.find_child("AnimationPlayer", true, false) as AnimationPlayer
|
||||
if anim_player == null:
|
||||
print("[father] AnimationPlayer NOT FOUND. Дети father:")
|
||||
for c in father.get_children():
|
||||
print(" - ", c.name, " (", c.get_class(), ")")
|
||||
for gc in c.get_children():
|
||||
print(" - ", gc.name, " (", gc.get_class(), ")")
|
||||
return
|
||||
var anims: PackedStringArray = anim_player.get_animation_list()
|
||||
if anims.size() == 0:
|
||||
return
|
||||
var idle_name: String = ""
|
||||
for name in anims:
|
||||
if "idle" in name.to_lower():
|
||||
idle_name = name
|
||||
break
|
||||
if idle_name == "":
|
||||
idle_name = anims[0]
|
||||
anim_player.play(idle_name)
|
||||
print("[father] playing animation: ", idle_name, " (всего: ", anims.size(), ")")
|
||||
print("[father] AnimationPlayer FOUND, %d анимаций" % anim_player.get_animation_list().size())
|
||||
anim_player.autoplay = "idle"
|
||||
anim_player.play("idle")
|
||||
if anim_player.is_playing():
|
||||
print("[father] idle ИГРАЕТСЯ")
|
||||
else:
|
||||
print("[father] idle НЕ ИГРАЕТСЯ — пробую static")
|
||||
anim_player.play("static")
|
||||
|
||||
|
||||
func _hide_noise_items() -> void:
|
||||
|
|
|
|||
1
scripts/util/inspect_models.gd.uid
Normal file
1
scripts/util/inspect_models.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
|||
uid://c4n88apy5o1he
|
||||
Loading…
Add table
Add a link
Reference in a new issue