сбой игры get_node при удалении узла - PullRequest
0 голосов
/ 23 апреля 2020

Прежде всего, я новичок в программировании в целом, поэтому я полагаю, что есть простой ответ на этот вопрос, я просто не мог найти его где-нибудь. Я делаю простую платформерную игру с врагами, которые движутся навстречу игроку. Я использовал этот код в скрипте врага под процессом физики, чтобы получить позицию игрока:

player_position = get_parent().get_node("Player").get_position

Однако, когда игрок становится queue_freed, когда здоровье достигает 0, игра сразу вылетает, и я получаю нулевую ошибку из-за чтобы не было узла Player. Как я могу обойти это?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Когда вы уничтожаете игрока, функция физического процесса все еще пытается получить узел игрока, даже если он не существует. Итак, как сказал Лукас, вы можете заменить:

player_position = get_parent().get_node("Player").get_position

чем-то вроде ...

if get_parent().has_node("Player"):
    player_position = get_parent().get_node("Player").get_position

(Перед настройкой player_position он проверит, существует ли узел игрока даже )

0 голосов
/ 24 апреля 2020

Вы можете просто установить $Player.visibility в false вместо освобождения, или вы можете проверить, существует ли игрок первым, используя get_parent().has_node("Player")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...