Не могу сделать так что бы голова персонажа поворачивалась за курсором в Godot GDScript
Я сделал игру, потом захотел что бы голова персонажа следила за мышкой, я обыскал все видео, форумы, и т.д., и так не нашёл как это сделать, потому что не работает...
Код для головы:
extends Sprite
func _process(delta):
var Golova = $Golova
var rotation = get_global_mouse_position()
if rotation > 0:
$Golova.flip_h = false
else:
$Golova.flip_h = true
В итоге она просто смотрит в одну точку. Помогите пожалуйста, заранее спасибо.
Ответы (1 шт):
extends Node2D # "extends Sprite" в Вашем коде
@onready var head = $BasicFurniture # "var Golova = $Golova" в Вашем коде, я перенес её из функции, вместо "$BasicFurniture" Пишете нужный объект
func _process(delta):
# Убрал "var rotation = get_global_mouse_position()", использую её напрямую, в условии:
if head.position < get_global_mouse_position(): # Ваше условие
head.flip_h = true # Тут меняете значение, если смотрит в обратную сторону от мыши
else:
head.flip_h = false # На другое соответственно
Всё делалось на Godot 4.0, отличие от Godot 3.5 только в строке @onready var head = $BasicFurniture, в старых версиях писалось без @
E 0:00:00.927 get_node: (Node not found: "Golova"
Ваша ошибка указывает на ненахождение ноды $Golova. Если несколько причин для этого:
$Golova- это нода, к которой прикреплен ваш скрипт, советую прикреплять скрипт к главной ноде (на изображенииMain), либо обращаться к этой ноде черезself(self.posiotionили простоposition)- Неправильный путь к ноде (На изображении есть две разных ноды с одинаковым именем, если вызывать их через главную ноду, то они будут вызваны как
$Golovaи$Player/Golova - Ваша нода находится на другой сцене
(Ошибка Invalid get index 'position' (on base: 'null instance') вызвана ошибкой ненахождения ноды и пропадет при её решении)
P.s: Если что-то не понятно или решение проблемы не удалось, свяжитесь со мной через telegram, для более удобного взаимодействия
