Для того чтобы свет в Godot 2D не проходил сквозь твердые объекты, такие как земля с камнями, вы можете использовать узел LightOccluder2D. Этот узел создает тени и блокирует свет, что позволяет избежать эффекта XRay. Вам нужно прикрепить узел LightOccluder2D к вашим твердым объектам и настроить его форму так, чтобы она соответствовала контуру объекта. Таким образом, когда узел Light2D освещает эти объекты, он будет создавать реалистичные тени, предотвращая проникновение света.
Вот пример кода, который поможет вам настроить LightOccluder2D:
# Создаем LightOccluder2D и добавляем его как дочерний узел к твердому объекту
var occluder = LightOccluder2D.new()
occluder.set_polygon(your_polygon_shape)
your_solid_object.add_child(occluder)
# Настройка Light2D
var light = Light2D.new()
light.set_texture(your_light_texture) # Установите текстуру света
light.set_enabled(true) # Включаем свет
light.set_energy(1.0) # Устанавливаем интенсивность света
light.set_color(Color(1, 1, 1, 1)) # Устанавливаем цвет света
light.set_range(200) # Устанавливаем дальность света
light.set_layer_range(1, 1) # Устанавливаем слои, на которых будет работать свет
light.set_shadow_enabled(true) # Включаем тени
add_child(light)
Этот код создаст узел LightOccluder2D и настроит его, чтобы свет не проходил сквозь твердые объекты. Убедитесь, что вы настроили форму полигона в соответствии с формой вашего объекта.