Godot Onready var не работает и выдает ошибку Неожиданный «Идентификатор» в теле класса

пытаюсь использовать onready var для запуска raycast для воспроизведения анимации для NPC, но даже если луч работает, он не воспроизводит анимацию

      code:

extends Node3D

enum
{
Attack1,
Death1,
Idle,
Pose,
Walk
}

var state = Idle

onready var raycast = $RayCast3D
onready var ap = $"maxdamage_zombie-low-poly"
func _ready():
pass # Replace with function body.


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):

if raycast.is_colliding():
    state = Attack1
else:
    state = Idle

match state:
    Attack1:
        ap.play("Attack1")
    Death1:
        ap.play("Death1")
    Idle:
        ap.play("Idle")
    Pose:
        ap.play("Pose")
    Walk:
        ap.play("Walk")

Объяснение/Альтернативный простой ответ о том, как исправить код в объяснении начального/среднего уровняyour text

1 ответ

Я исправил эту проблему, поставив «@» передonready.

      @onready var raycast = $RayCast3D

https://docs.godotengine.org/en/latest/tutorials/scripting/gdscript/gdscript_basics.html#onready-annotation

Мне показалось, что «onready» без «@» не работает после обновления до Godot 4.

Другие вопросы по тегам