Unity 6.3
0 онлайн 53 гостей 3 в системе
Вход

Создать объект с LowLevelPhysics2D API

Примечание: Эта документация посвящена написанию C# скрипты с использованием LowLevelPhysics2D API. Использовать 2D физики в Unity Editor используя компоненты, такие как Rigidbody 2D компонент, см. 2D физика вместо этого.

После того, как вы создали мир физики, вы можете добавить физические объекты в мир.

Объект обычно состоит из двух частей:

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

Вы можете добавить любое количество фигур к физическому телу. Вы можете создать фигуры со следующими геометриями:

Создание физического тела и физической формы

Выполните следующие действия:

  1. Создайте объекты, которые содержат свойства тела и форм. Сделайте их полями public, чтобы они отображали свои свойства в окне Inspector. Например:

    public PhysicsBodyDefinition bodyDefinition = new PhysicsBodyDefinition();
    public PhysicsShapeDefinition shapeDefinition = new PhysicsShapeDefinition();
    

    Новое определение имеет набор значений по умолчанию. Дополнительные сведения об определениях и изменении значений по умолчанию см. в Настройка физических свойств 2D с помощью определения.

    Вы также можете использовать PhysicsBody.defaultDefinition для получения объекта определения со значениями по умолчанию.

  2. Используйте метод CreateBody объекта world для добавления тела к миру и передайте определение тела.

    PhysicsBody myObject = world.CreateBody(bodyDefinition);
    
  3. Создайте фигуру с помощью геометрии объекта, например, объекта CircleGeometry. Например, следующая команда создает окружность с радиусом 2 метра.

    CircleGeometry circleShape = new CircleGeometry { radius = 2f };
    
  4. Присоедините форму к телу с помощью метода CreateShape тела и передайте в определение формы.

    myObject.CreateShape(circleShape, shapeDefinition);
    
  5. Если ваш скрипт находится в MonoBehaviour класс, прикреплённый к GameObject, настройте свойства тела, геометрии и формы в Inspector окно.

    Чтобы настроить объекты в скрипте, установите свойства объекта определения перед созданием объектов. Дополнительные сведения см. в Настройка физических свойств 2D с помощью определения.

  6. Перейдите в режим воспроизведения, чтобы запустить скрипт и создать объекты. Unity отображает форму в представлениях Scene и Game в качестве отладочной визуализации. Линия на форме указывает на направление вращения формы.

Примечание: по умолчанию физическое тело статично, и физика на него не влияет. Чтобы сделать его динамическим, в Inspector окно GameObject, набор Тип тела до Динамическая. Для получения дополнительной информации см. Настройка объектов с определениями.

После создания формы из геометрии, форма не изменяется, если вы измените геометрию объекта.

Пример

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

using UnityEngine;
using UnityEngine.LowLevelPhysics2D;

public class CreateWorldAndObjects : MonoBehaviour
{
    // Declare definitions that contain default properties for the body and shape
    public PhysicsBodyDefinition bodyDefinition = PhysicsBodyDefinition.defaultDefinition;
    public PhysicsShapeDefinition shapeDefinition = PhysicsShapeDefinition.defaultDefinition;
 
    void Start()
    {
        // Get the default world
        PhysicsWorld world = PhysicsWorld.defaultWorld;

        // Create the physics body with the body definition
        PhysicsBody myObject = world.CreateBody(bodyDefinition);

        // Create the circle geometry
        CircleGeometry circleGeometry = new CircleGeometry { radius = 1.5f };

        // Create the shape with both the geometry and the shape definition
        myObject.CreateShape(circleGeometry, shapeDefinition);
    }
}

Дополнительные ресурсы