Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Light2D

继承: Node2D < CanvasItem < Node < Object

派生: DirectionalLight2D, PointLight2D

在 2D 环境中投射光线。

描述

在 2D 环境中投射光线。光线由颜色、能量值、模式(见常量)以及其他各种参数(与范围和阴影有关)来定义。

教程

属性

BlendMode

blend_mode

0

Color

color

Color(1, 1, 1, 1)

bool

editor_only

false

bool

enabled

true

float

energy

1.0

int

range_item_cull_mask

1

int

range_layer_max

0

int

range_layer_min

0

int

range_z_max

1024

int

range_z_min

-1024

Color

shadow_color

Color(0, 0, 0, 0)

bool

shadow_enabled

false

ShadowFilter

shadow_filter

0

float

shadow_filter_smooth

0.0

int

shadow_item_cull_mask

1

方法

float

get_height() const

void

set_height(height: float)


枚举

enum ShadowFilter: 🔗

ShadowFilter SHADOW_FILTER_NONE = 0

不对阴影贴图应用过滤。提供较硬的阴影边缘,渲染速度最快。见 shadow_filter

ShadowFilter SHADOW_FILTER_PCF5 = 1

对阴影贴图使用百分比接近过滤(5 个样本)。与硬阴影渲染相比较慢。见 shadow_filter

ShadowFilter SHADOW_FILTER_PCF13 = 2

对阴影贴图使用百分比接近过滤(13 个样本)。最慢的阴影过滤模式,应谨慎使用。见 shadow_filter


enum BlendMode: 🔗

BlendMode BLEND_MODE_ADD = 0

将 Light2D 对应的像素值与其下方的像素值相加。这是灯的常见行为。

BlendMode BLEND_MODE_SUB = 1

将 Light2D 对应的像素值减去其下方的像素值,产生反光效果。

BlendMode BLEND_MODE_MIX = 2

通过线性插值将 Light2D 对应的像素值与其下方的像素值混合。


属性说明

BlendMode blend_mode = 0 🔗

该 Light2D 的混合模式。取值见 BlendMode 常量。


Color color = Color(1, 1, 1, 1) 🔗

该 Light2D 的颜色 Color


bool editor_only = false 🔗

  • void set_editor_only(value: bool)

  • bool is_editor_only()

如果为 true,Light2D 将只在编辑场景时出现。


bool enabled = true 🔗

  • void set_enabled(value: bool)

  • bool is_enabled()

如果为 true,Light2D 会发光。


float energy = 1.0 🔗

  • void set_energy(value: float)

  • float get_energy()

Light2D 的能量值。该值越大,光线就越强。


int range_item_cull_mask = 1 🔗

  • void set_item_cull_mask(value: int)

  • int get_item_cull_mask()

层遮罩。CanvasItem.light_mask 与之匹配的对象才会被该 Light2D 影响。另见 shadow_item_cull_mask,影响的是哪些对象能够投射阴影。

注意:DirectionalLight2D 会忽略 range_item_cull_mask,始终对 2D 节点进行照明,无论其 CanvasItem.light_mask 的取值。


int range_layer_max = 0 🔗

  • void set_layer_range_max(value: int)

  • int get_layer_range_max()

受 Light2D 影响的对象的最大层数值。


int range_layer_min = 0 🔗

  • void set_layer_range_min(value: int)

  • int get_layer_range_min()

受 Light2D 影响的对象的最小层数值。


int range_z_max = 1024 🔗

  • void set_z_range_max(value: int)

  • int get_z_range_max()

受 Light2D 影响的物体的最大 z 值。


int range_z_min = -1024 🔗

  • void set_z_range_min(value: int)

  • int get_z_range_min()

受 Light2D 影响的物体的最小 z 值。


Color shadow_color = Color(0, 0, 0, 0) 🔗

  • void set_shadow_color(value: Color)

  • Color get_shadow_color()

该 Light2D 投下的影子的颜色 Color


bool shadow_enabled = false 🔗

  • void set_shadow_enabled(value: bool)

  • bool is_shadow_enabled()

如果为 true,则该 Light2D 将投下阴影。


ShadowFilter shadow_filter = 0 🔗

阴影过滤器类型。可能的取值见 ShadowFilter


float shadow_filter_smooth = 0.0 🔗

  • void set_shadow_smooth(value: float)

  • float get_shadow_smooth()

阴影的平滑值。更高的值将导致更柔和的阴影,代价是在阴影渲染中可能出现可见的条纹。只有在 shadow_filterSHADOW_FILTER_PCF5SHADOW_FILTER_PCF13 时,shadow_filter_smooth 才有效果。


int shadow_item_cull_mask = 1 🔗

  • void set_item_shadow_cull_mask(value: int)

  • int get_item_shadow_cull_mask()

阴影遮罩。与 LightOccluder2D 一起使用以投射阴影。只有匹配 CanvasItem.light_mask 的遮挡物才会投射阴影。另见 range_item_cull_mask,它影响哪些对象可以接收光。


方法说明

float get_height() const 🔗

返回该灯光的高度,用于 2D 法线映射。见 PointLight2D.heightDirectionalLight2D.height


void set_height(height: float) 🔗

设置该灯光的高度,用于 2D 法线映射。见 PointLight2D.heightDirectionalLight2D.height