reckfellENGINE

CapsuleShape2D

Вертикальная капсула: радиус, полная высота и прямой участок.

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

Капсула вытянута вдоль локальной оси Y и центрирована в начале координат. Radius задаёт радиус закруглений; ширина равна 2×Radius. Height включает оба закругления. MidHeight — только прямой участок: Height−2×Radius. По умолчанию Radius=10, Height=30, MidHeight=10. GetRect() имеет позицию (-Radius,-Height/2) и размер (2×Radius,Height).

Размеры связаны. Увеличение Radius сверх Height/2 поднимает Height до диаметра. Уменьшение Height ниже диаметра уменьшает Radius. Поэтому Radius=20, затем Height=10 даёт радиус 5 и высоту 10; обратный порядок даёт радиус 20 и высоту 40.

Если известны радиус и высота прямого участка, сначала задайте Radius, затем MidHeight. Полный проверенный помощник валидирует вход до создания native-ресурса. Вызывающий код владеет результатом:

C#
using System;
using Reckfell;

public static class ShapeFactory2D
{
    // The caller owns the resource. Width is twice the radius;
    // middleHeight excludes the two rounded ends.
    public static CapsuleShape2D Capsule(float radius, float middleHeight)
    {
        if (!float.IsFinite(radius) || radius <= 0)
            throw new ArgumentOutOfRangeException(nameof(radius));
        if (!float.IsFinite(middleHeight) || middleHeight < 0 ||
            !float.IsFinite(middleHeight + 2 * radius))
            throw new ArgumentOutOfRangeException(nameof(middleHeight));

        var shape = new CapsuleShape2D();
        shape.Radius = radius;
        shape.MidHeight = middleHeight;
        return shape;
    }
}

ShapeFactory2D.Capsule(8,24) создаёт ширину 16 и общую высоту 40. MidHeight=0 убирает прямой участок. MidHeight доступно в C#, хотя не показывается как обычное поле Inspector. Повтор Radius или Height не испускает Changed; повтор MidHeight испускает.

Чтобы включить форму в физический мир, назначьте её Shape у CollisionShape2D внутри CollisionObject2D. Общий ресурс остаётся общим: создавайте отдельные экземпляры для независимых размеров.

Проверены порядок setter, границы, события, валидация помощника и прямые пересечения с кругом. Движение персонажа, ступеньки, склоны, разрешение контактов и визуальное качество не проверялись.

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

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

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

Создаёт вертикальную капсулу с Radius=10, Height=30, MidHeight=10. Центр находится в локальном начале координат. Это ресурс геометрии, не физическое тело.

Свойства3

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

Полная высота вдоль локальной оси Y, включая оба закругления; изначально 30. Если новая высота меньше 2×Radius, радиус уменьшается до Height/2. Отрицательное значение отклоняется. Изменение испускает Changed; повтор значения — нет. Это не высота прямого участка.

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

Высота прямого участка без закруглений: Height−2×Radius, изначально 10. Назначение сохраняет Radius и устанавливает Height=MidHeight+2×Radius. Отрицательное значение отклоняется; 0 убирает прямой участок. Setter испускает Changed даже при повторном значении. Свойство доступно в C#, хотя не показывается как обычное поле Inspector.

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

Радиус закруглений и половина ширины, изначально 10. Если новая величина превышает Height/2, общая высота увеличивается до 2×Radius. Отрицательное значение отклоняется. При изменении испускается Changed; при повторе значения — нет. Порядок назначения Radius и Height влияет на результат.

Методы6

GetHeightfloat
# GetHeight
C#
public float GetHeight();

Текущая полная высота вместе с закруглениями; может измениться после назначения Radius.

Возвращает float

Текущая полная высота вместе с закруглениями; может измениться после назначения Radius.

GetMidHeightfloat
# GetMidHeight
C#
public float GetMidHeight();

Текущая высота прямого участка: Height−2×Radius. Вычисляется из актуальных размеров.

Возвращает float

Текущая высота прямого участка: Height−2×Radius. Вычисляется из актуальных размеров.

GetRadiusfloat
# GetRadius
C#
public float GetRadius();

Текущий радиус в локальных единицах 2D. Чтение не изменяет форму.

Возвращает float

Текущий радиус в локальных единицах 2D. Чтение не изменяет форму.

SetHeightvoid
# SetHeight
C#
public void SetHeight(float height);

Полная высота вдоль локальной оси Y, включая оба закругления; изначально 30. Если новая высота меньше 2×Radius, радиус уменьшается до Height/2. Отрицательное значение отклоняется. Изменение испускает Changed; повтор значения — нет. Это не высота прямого участка.

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

Полная высота с закруглениями, положительная и конечная. При необходимости уменьшает Radius до половины высоты.

SetMidHeightvoid
# SetMidHeight
C#
public void SetMidHeight(float midHeight);

Высота прямого участка без закруглений: Height−2×Radius, изначально 10. Назначение сохраняет Radius и устанавливает Height=MidHeight+2×Radius. Отрицательное значение отклоняется; 0 убирает прямой участок. Setter испускает Changed даже при повторном значении. Свойство доступно в C#, хотя не показывается как обычное поле Inspector.

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

Конечная неотрицательная высота прямого участка; к ней добавляется диаметр. Суммарная высота также должна оставаться конечной.

SetRadiusvoid
# SetRadius
C#
public void SetRadius(float radius);

Радиус закруглений и половина ширины, изначально 10. Если новая величина превышает Height/2, общая высота увеличивается до 2×Radius. Отрицательное значение отклоняется. При изменении испускается Changed; при повторе значения — нет. Порядок назначения Radius и Height влияет на результат.

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

Новый радиус; используйте положительное конечное значение. У капсулы может увеличить Height до диаметра.

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

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

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

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