Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

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 ( float height )


枚举

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)

  • void set_color ( Color value )

  • Color get_color ( )

该 Light2D 的颜色 Color


bool editor_only = false

  • void set_editor_only ( bool value )

  • bool is_editor_only ( )

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


bool enabled = true

  • void set_enabled ( bool value )

  • bool is_enabled ( )

如果为 true,Light2D 会发光。


float energy = 1.0

  • void set_energy ( float value )

  • float get_energy ( )

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


int range_item_cull_mask = 1

  • void set_item_cull_mask ( int value )

  • 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 ( int value )

  • int get_layer_range_max ( )

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


int range_layer_min = 0

  • void set_layer_range_min ( int value )

  • int get_layer_range_min ( )

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


int range_z_max = 1024

  • void set_z_range_max ( int value )

  • int get_z_range_max ( )

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


int range_z_min = -1024

  • void set_z_range_min ( int value )

  • int get_z_range_min ( )

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


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

  • void set_shadow_color ( Color value )

  • Color get_shadow_color ( )

该 Light2D 投下的影子的颜色 Color


bool shadow_enabled = false

  • void set_shadow_enabled ( bool value )

  • bool is_shadow_enabled ( )

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


ShadowFilter shadow_filter = 0

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


float shadow_filter_smooth = 0.0

  • void set_shadow_smooth ( float value )

  • 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 ( int value )

  • 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 ( float height )

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