SpringArm3D
3D-рейкаст, который динамически перемещает свои дочерние элементы вблизи точки столкновения.
3D-рейкаст, который динамически перемещает свои дочерние элементы вблизи точки столкновения.
SpringArm3D проецирует луч или форму вдоль своей оси Z и перемещает всех своих прямых потомков в точку столкновения с необязательным полем. Это полезно для камер от третьего лица, которые приближаются к игроку, когда он находится в тесном пространстве (вам может потребоваться исключить коллайдер игрока из проверки столкновений SpringArm3D).
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
SpringArm3DКонструктор
public SpringArm3D();Свойства4
CollisionMaskСвойство
public uint CollisionMask { get; set; }Биты физических слоёв, в которых проверяются препятствия. Значение 1 проверяет первый слой; 0 исключает все слои. Не связано с Render Layers камеры. Отдельно исключайте тело персонажа через его физический RID.
MarginСвойство
public float Margin { get; set; }Отступ от точки попадания только для ветки ray cast. В проверенной версии при явно назначенной Shape или автоматической форме прямого Camera3D-потомка этот отступ не вычитается. Для формы задавайте подходящий размер; не полагайтесь на Margin как на универсальную защиту камеры.
ShapeСвойство
public Shape3D Shape { get; set; }Форма проверки препятствий. Если null и есть прямой Camera3D-потомок, используется автоматически полученная форма камеры; без такой камеры выполняется луч. При заданной форме Margin не вычитается в проверенной версии. Изменение свойства обрабатывается на физическом шаге.
SpringLengthСвойство
public float SpringLength { get; set; }Требуемая длина проверки вдоль локальной +Z, преобразованной глобальным базисом. Это не текущая дистанция после столкновения. Для предсказуемых единиц оставьте масштаб иерархии равным единице; результат последнего физического шага читает GetHitLength.
Методы12
AddExcludedObjectvoid
public void AddExcludedObject(Rid rID);Исключает физический объект из запросов пружины. Для тела персонажа передавайте body.GetRid(), чтобы камера не сокращала дистанцию из-за собственного персонажа. Это не отключает столкновения самого тела.
| Имя | Тип | По умолчанию |
|---|---|---|
rID | Rid | — |
rIDRID физического тела, полученный через GetRid(); не ID экземпляра Entity и не RID меша.
ClearExcludedObjectsvoid
public void ClearExcludedObjects();Очищает список объектов PhysicsBody3D, исключенных из проверки столкновений.
GetCollisionMaskuint
public uint GetCollisionMask();uintGetHitLengthfloat
public float GetHitLength();Возвращает дистанцию, рассчитанную на последнем физическом обновлении. Изменение SpringLength или Shape не пересчитывает её немедленно. На эту дистанцию перемещаются все прямые Entity3D-потомки, а не только камера.
floatПоследняя вычисленная длина. При отсутствии совпавшего препятствия равна SpringLength; не подменяйте этим значением проверку готовности первого физического шага.
GetLengthfloat
public float GetLength();floatGetMarginfloat
public float GetMargin();floatGetShapeShape3D
public Shape3D GetShape();Shape3DRemoveExcludedObjectbool
public bool RemoveExcludedObject(Rid rID);Удаляет указанный Rid из списка объектов PhysicsBody3D, исключенных из проверки столкновений.
| Имя | Тип | По умолчанию |
|---|---|---|
rID | Rid | — |
boolSetCollisionMaskvoid
public void SetCollisionMask(uint mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | uint | — |
SetLengthvoid
public void SetLength(float length);| Имя | Тип | По умолчанию |
|---|---|---|
length | float | — |
SetMarginvoid
public void SetMargin(float margin);| Имя | Тип | По умолчанию |
|---|---|---|
margin | float | — |
SetShapevoid
public void SetShape(Shape3D shape);| Имя | Тип | По умолчанию |
|---|---|---|
shape | Shape3D | — |