Создать объект с LowLevelPhysics2D API
Примечание: Эта документация посвящена написанию C# скрипты с использованием LowLevelPhysics2D API. Использовать 2D физики в Unity Editor используя компоненты, такие как Rigidbody 2D компонент, см. 2D физика вместо этого.
После того, как вы создали мир физики, вы можете добавить физические объекты в мир.
Объект обычно состоит из двух частей:
- Физическое тело, которое определяет положение, вращение и скорость объекта. Оно не определяет площадь.
- Одна или несколько физических фигур, прикрепленных к телу, которые определяют область, взаимодействующую с другими фигурами. Unity также автоматически рисует фигуры в качестве визуализации отладки.
Вы можете добавить любое количество фигур к физическому телу. Вы можете создать фигуры со следующими геометриями:
- Circle
- Capsule
- Polygon
- Segment, который создает линию
- Сегмент цепи, который используется для создания серии соединенных сегментов линии
Создание физического тела и физической формы
Выполните следующие действия:
-
Создайте объекты, которые содержат свойства тела и форм. Сделайте их полями
public, чтобы они отображали свои свойства в окне Inspector. Например:public PhysicsBodyDefinition bodyDefinition = new PhysicsBodyDefinition(); public PhysicsShapeDefinition shapeDefinition = new PhysicsShapeDefinition();Новое определение имеет набор значений по умолчанию. Дополнительные сведения об определениях и изменении значений по умолчанию см. в Настройка физических свойств 2D с помощью определения.
Вы также можете использовать
PhysicsBody.defaultDefinitionдля получения объекта определения со значениями по умолчанию. -
Используйте метод
CreateBodyобъекта world для добавления тела к миру и передайте определение тела.PhysicsBody myObject = world.CreateBody(bodyDefinition); -
Создайте фигуру с помощью геометрии объекта, например, объекта
CircleGeometry. Например, следующая команда создает окружность с радиусом 2 метра.CircleGeometry circleShape = new CircleGeometry { radius = 2f }; -
Присоедините форму к телу с помощью метода
CreateShapeтела и передайте в определение формы.myObject.CreateShape(circleShape, shapeDefinition); -
Если ваш скрипт находится в
MonoBehaviourкласс, прикреплённый к GameObject, настройте свойства тела, геометрии и формы в Inspector окно.Чтобы настроить объекты в скрипте, установите свойства объекта определения перед созданием объектов. Дополнительные сведения см. в Настройка физических свойств 2D с помощью определения.
Перейдите в режим воспроизведения, чтобы запустить скрипт и создать объекты. 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);
}
}
Дополнительные ресурсы
- Настройка объектов LowLevelPhysics2D API с определениями
PhysicsBody.PhysicsTransform