Я пытаюсь изменить скорость передвижения игрока в зависимости от того, в кустах он или нет. Это суть того, что я пытаюсь достичь:
const Grass = preload("res://World/Grass/Grass.tscn")
onready var grass = Grass.instance()
func move():
grass = Grass.instance()
if grass.player_in_grass():
velocity = move_and_slide(velocity / BUSH_FRICTION_MULTIPLIER)
else:
velocity = move_and_slide(velocity)
Проблема, с которой я столкнулся, заключается в том, что я не могу понять, каким должен быть код для проверки. Я попытался создать зону обнаружения игрока для травы, переключая ее значение внутри нее:
var player = null
func player_is_visible():
return player != null
func _on_PlayerDetectionZone_body_entered(body):
player = body
func _on_PlayerDetectionZone_body_exited(body):
player = null
А мой Grass.gd выглядит так:
onready var playerDetectionZone = $PlayerDetectionZone
func player_in_grass():
if playerDetectionZone.player != null:
return true
else:
return false
После всего этого у меня появляется ошибка:
Invalid get index 'player' (on base: 'Nil').
Ошибка перенаправляет меня на «if playerDetectionZone.player! = Null:».
Что я делаю неправильно? Следует ли мне проверять это / делать это другим, более простым способом, о котором вы знаете? Все отзывы приветствуются. Спасибо.