Не могу сделать так что бы голова персонажа поворачивалась за курсором в 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 шт):

Автор решения: Donovan
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. Если несколько причин для этого:

  1. $Golova - это нода, к которой прикреплен ваш скрипт, советую прикреплять скрипт к главной ноде (на изображении Main), либо обращаться к этой ноде через self (self.posiotion или просто position)
  2. Неправильный путь к ноде (На изображении есть две разных ноды с одинаковым именем, если вызывать их через главную ноду, то они будут вызваны как $Golova и $Player/Golova
  3. Ваша нода находится на другой сцене

Дерево сцен

(Ошибка Invalid get index 'position' (on base: 'null instance') вызвана ошибкой ненахождения ноды и пропадет при её решении)

P.s: Если что-то не понятно или решение проблемы не удалось, свяжитесь со мной через telegram, для более удобного взаимодействия

→ Ссылка