SpringArm3D

Наследует: Node3D < Node < Object

3D-рейкаст, который динамически перемещает свои дочерние элементы вблизи точки столкновения.

Описание

SpringArm3D проецирует луч или форму вдоль своей оси Z и перемещает всех своих прямых потомков в точку столкновения с необязательным полем. Это полезно для камер от третьего лица, которые приближаются к игроку, когда он находится в тесном пространстве (вам может потребоваться исключить коллайдер игрока из проверки столкновений SpringArm3D).

Обучающие материалы

Свойства

int

collision_mask

1

float

margin

0.01

Shape3D

shape

float

spring_length

1.0

Методы

void

add_excluded_object(RID: RID)

void

clear_excluded_objects()

float

get_hit_length()

bool

remove_excluded_object(RID: RID)


Описания свойств

int collision_mask = 1 🔗

  • void set_collision_mask(value: int)

  • int get_collision_mask()

The layers against which the collision check will be done. See Collision layers and masks in the documentation for more information.


float margin = 0.01 🔗

  • void set_margin(value: float)

  • float get_margin()

При проверке столкновения задается длина кандидата для SpringArm3D.

Затем поле вычитается из этой длины, и перемещение применяется к дочерним объектам SpringArm3D.

Это поле полезно, когда у SpringArm3D есть Camera3D в качестве дочернего узла: без поля Camera3D будет размещено точно в точке столкновения, тогда как с полем Camera3D будет размещено близко к точке столкновения.


Shape3D shape 🔗

Shape3D для использования в SpringArm3D.

Когда форма задана, SpringArm3D будет отбрасывать Shape3D на свою ось z вместо выполнения отбрасывания луча.


float spring_length = 1.0 🔗

  • void set_length(value: float)

  • float get_length()

Максимальный размер SpringArm3D. Используется как длина как для луча, так и для приведения формы, используемого внутренне для расчета желаемого положения дочерних узлов SpringArm3D.

Чтобы узнать больше о том, как выполнить приведение формы или луча, обратитесь к документации PhysicsDirectSpaceState3D.


Описания метода

void add_excluded_object(RID: RID) 🔗

Добавляет объект PhysicsBody3D с заданным RID в список объектов PhysicsBody3D, исключенных из проверки столкновений.


void clear_excluded_objects() 🔗

Очищает список объектов PhysicsBody3D, исключенных из проверки столкновений.


float get_hit_length() 🔗

Возвращает текущую длину пружинного рычага.


bool remove_excluded_object(RID: RID) 🔗

Удаляет указанный RID из списка объектов PhysicsBody3D, исключенных из проверки столкновений.