reckfellENGINE

WorldBoundaryShape2D

Бесконечная линия и твёрдая полуплоскость с нормалью наружу.

На этой странице
class WorldBoundaryShape2DReckfellSharpНаследует Shape2D

WorldBoundaryShape2D задаёт бесконечную границу, а не конечную платформу. Normal направлена из твёрдой полуплоскости в свободную; начальное значение (0,-1). Distance изначально 0. При единичной Normal линия удовлетворяет Normal.Dot(point)=Distance, твёрдая сторона — Normal.Dot(point)<Distance.

В 2D ось +Y направлена вниз. Поэтому Normal=(0,-1), Distance=0 задаёт землю на y=0 с твёрдой областью снизу. Для земли на y=5 нужно Distance=-5. Проверенный помощник создаёт такую локальную границу, отбрасывая нечисловое или бесконечное y. Вызывающий код владеет ресурсом:

C#
using System;
using Reckfell;

public static class BoundaryFactory2D
{
    // Local horizontal boundary at y; solid half-space is below it (+Y).
    // The caller owns the resource. This does not create a physics body.
    public static WorldBoundaryShape2D Ground(float y)
    {
        if (!float.IsFinite(y))
            throw new ArgumentOutOfRangeException(nameof(y));
        return new WorldBoundaryShape2D
        {
            Normal = Vector2.Up,
            Distance = -y
        };
    }
}

Нормаль должна быть конечной и единичной. Setter отклоняет нулевой/почти нулевой вектор, но не нормализует остальные: назначенный (0,-2) читается как (0,-2). Без единичной нормали простая интерпретация Distance как расстояния теряется. Для направления вправо Normal=(1,0), Distance=5 линия проходит по x=5, а твёрдая сторона слева.

GetRect() возвращает конечные границы диагностической линии и стрелки. Они не ограничивают физическую полуплоскость: в проверке круг с x=100000 всё ещё сталкивался с землёй далеко за пределами этого Rect2. Для ограниченной платформы используйте другую форму.

Normal/Distance и соответствующие методы обновляют одну геометрию, испуская Changed только при новом значении. Для физического мира назначьте ресурс Shape у CollisionShape2D, который является непосредственным дочерним Entity CollisionObject2D. Создание ресурса не добавляет тело.

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

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

WorldBoundaryShape2DКонструктор
# WorldBoundaryShape2D
C#
public WorldBoundaryShape2D();

Создаёт бесконечную границу с Normal=(0,-1), Distance=0. В локальных координатах свободная сторона сверху, твёрдая — в направлении +Y. Не создаёт физическое тело.

Свойства2

DistanceСвойство
# Distance
C#
public float Distance { get; set; }

Подписанное смещение вдоль единичной Normal, изначально 0. При единичной нормали линия задаётся Normal.Dot(point)=Distance, твёрдая сторона — меньше Distance. Для Normal=(0,-1) земля на y=5 требует Distance=-5. Setter не проверяет конечность; проверяйте вход. Изменение испускает Changed; повтор значения — нет.

NormalСвойство
# Normal
C#
public Vector2 Normal { get; set; }

Нормаль в локальных координатах, изначально (0,-1), направлена из твёрдой полуплоскости в свободную. Нулевой или почти нулевой вектор отклоняется. Ненулевой вектор хранится без автоматической нормализации; задавайте конечную единичную нормаль, чтобы Distance имел смысл подписанного расстояния. Изменение испускает Changed; повтор значения — нет.

Методы4

GetDistancefloat
# GetDistance
C#
public float GetDistance();

Сохранённое подписанное смещение; интерпретируйте вместе с единичной Normal.

Возвращает float

Сохранённое подписанное смещение; интерпретируйте вместе с единичной Normal.

GetNormalVector2
# GetNormal
C#
public Vector2 GetNormal();

Сохранённая локальная нормаль без автоматической нормализации.

Возвращает Vector2

Сохранённая локальная нормаль без автоматической нормализации.

SetDistancevoid
# SetDistance
C#
public void SetDistance(float distance);

Подписанное смещение вдоль единичной Normal, изначально 0. При единичной нормали линия задаётся Normal.Dot(point)=Distance, твёрдая сторона — меньше Distance. Для Normal=(0,-1) земля на y=5 требует Distance=-5. Setter не проверяет конечность; проверяйте вход. Изменение испускает Changed; повтор значения — нет.

Параметры
ИмяТипПо умолчанию
distancefloat—
distance

Конечное подписанное смещение вдоль единичной Normal; может быть отрицательным.

SetNormalvoid
# SetNormal
C#
public void SetNormal(Vector2 normal);

Нормаль в локальных координатах, изначально (0,-1), направлена из твёрдой полуплоскости в свободную. Нулевой или почти нулевой вектор отклоняется. Ненулевой вектор хранится без автоматической нормализации; задавайте конечную единичную нормаль, чтобы Distance имел смысл подписанного расстояния. Изменение испускает Changed; повтор значения — нет.

Параметры
ИмяТипПо умолчанию
normalVector2—
normal

Конечная единичная нормаль из твёрдой стороны в свободную. Setter не нормализует вход.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.