Как точно расположить Light2D под влиянием Camera2d со сглаживанием

Во-первых, я новичок в Godot и Game Dev. В Godot я использую Light2D, следуя за игроком, действуя как своего рода основной источник света. Корнем проигрывателя сцены является KinematicBody2d, а Light2D и Camera2d - дочерние узлы. Для камеры включено сглаживание. Как объясняется в документации Godot, я могу использовать get_camera_screen_center (), чтобы получить реальное положение камеры. Я думал, что такая простая вещь, как light.position = $"Camera".get_camera_position(), поместит легкую текстуру вправо, но теперь она находится в правом нижнем углу. Что я скучаю? Как рассчитать используемое смещение? Я пробовал половину размера порта просмотра, но это все равно неверно.

Я бы больше всего хотел, чтобы сигнал исходил от Light2D (с реальным положением) каждый раз, когда реальное (сглаженное) положение изменяется. Но это, похоже, не реализовано.


person Tobias    schedule 10.07.2021    source источник


Ответы (1)


Метод get_camera_position даст вам глобальную позицию, а не позицию относительно родительского узла.

Следовательно, вам нужно установить глобальное положение источника света вместо положения источника света. То есть:

$Light2D.global_position = $Camera2D.get_camera_screen_center()
person Theraot    schedule 11.07.2021