Portal

Inherits: Spatial < Node < Object

门户节点用于实现房间Room之间的可见性。

描述

Portal 是一种特殊类型的 MeshInstance,允许门户剔除系统从一个空间“看到”到另一个空间。它们通常对应于水平几何中的门窗。只允许 Camera 透过传送门看到,这允许系统剔除空间中无法透过传送门看到的所有物体。这是遮挡剔除的一种形式,可以大大提高性能。

Portal的形式有一些限制:

它们必须是单面凸多边形,并且通常您会将它们的正面 向外 从它们所在的 Room 定向。顶点应该位于一个平面上(尽管它们的位置不必完美)。

无需在相邻空间放置对面的传送门,它们会自动建立双向链接。

属性

NodePath

linked_room

NodePath(“”)

PoolVector2Array

points

PoolVector2Array( 1, -1, 1, 1, -1, 1, -1, -1 )

bool

portal_active

true

float

portal_margin

1.0

bool

two_way

true

bool

use_default_margin

true

方法

void

set_point ( int index, Vector2 position )

属性说明

Default

NodePath(“”)

Setter

set_linked_room(value)

Getter

get_linked_room()

这是在Portal的名称中设置链接Room的快捷方式(名称在转换过程中使用)。


Default

PoolVector2Array( 1, -1, 1, 1, -1, 1, -1, -1 )

Setter

set_points(value)

Getter

get_points()

定义 Portal 多边形形状的点(应该是凸面)。

这些是在 2D 中定义的,0,0Portal 节点的 Spatial.global_transform 的原点。

注意: 这些原始点会被整理以便在内部缠绕顺序。


Default

true

Setter

set_portal_active(value)

Getter

get_portal_active()

可以在运行时打开和关闭通过 Portal 的可见性 - 这对于具有可关闭的门很有用。


Default

1.0

Setter

set_portal_margin(value)

Getter

get_portal_margin()

有些物体非常大,以至于它们可能会出现在不止一个 Room中(“蔓延”)。由于我们通常不希望将*只是*突破边缘的对象分配给相邻的房间,因此您可以通过 Portal 分配额外的边距,以允许对象在不蔓延的情况下突破。


Default

true

Setter

set_two_way(value)

Getter

is_two_way()

Portal默认为双向 - 在两个方向都可以看到,但是您可以将它们设为一种从源房间可见的方式。


  • bool use_default_margin

Default

true

Setter

set_use_default_margin(value)

Getter

get_use_default_margin()

在大多数情况下,您会希望在Portal中使用默认的 Portal 边距(这是在 RoomManager 中设置的)。

如果要覆盖这个默认值,把这个值设置为false,本地的portal_margin就会生效。

方法说明

设置单个点。主要供编辑器使用。