var timer: Timer = Timer.new() add_child(timer) timer.start(3.0) # секунды await timer.timeout
Даже авторы уже рекомендуют не пользоваться нодами для создания таймеров через код, а просто воспользоваться get_tree().create_timer()
лично я так и делаю только интересно насколько это эффективнее по памяти и скорости? там ведь под капотом создается целый новый объект по идее и если допустим какую нибудь задержку между выстрелами вызывают каждые например 0.2 секунды то получается страшная картина если это никак не оптимизировано
ты в своём примере кода тоже каждый раз новый таймер создаешь, по сути. Задержку между выстрелами вообще можно крайне упростить, используя вместо таймера обычную переменную, хранящую, условно говоря, значение в секундах до следующего выстрела. Можно либо после каждого выстрела выставлять её равной задержке между выстрелами и уменьшать на дельту каждый кадр, или ставить на ноль и увеличивать, пока значение не дойдёт до времени задержки (по вкусу). Как только это условие выполняется, игрок может делать ещё один выстрел.
я просто показал как таймер создается и что с ним делать потом, это то ясно разве такой подход проще казалось бы самого прямого: создать под это дело специальный таймер и привязаться к нему? откуда сурс что разработчики советуют использовать scenetreeшный create timer? и почему? хотелось бы почитать очень
Загляни в документацию, и примеры кода await
Чисто поржать можно повесить на завершение проигрывания аудио перезарядки
Обсуждают сегодня