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

PhysicsBody

структура в UnityEngine.LowLevelPhysics2D

Выполнено в:UnityEngine.Physics2DModule

Описание

Тело содержится в мире и имеет 3 степени свободы, две для положения и одна для вращения. Тело может иметь силы, моменты и импульсы, применяемые к нему. Тело имеет три различных типа:

  • Статическое: Этот тип тела не движется в симуляции и ведет себя, как если бы он имел бесконечную массу, по сути неподвижный объект. Статические тела никогда не взаимодействуют с другими статическими или кинематическими телами.
  • Динамическое: Этот тип тела полностью симулируется и движется в соответствии с силами и моментами, приложенными к его линейной/угловой скорости. Он может взаимодействовать со всеми другими типами тела. Он всегда имеет конечную, ненулевую массу.
  • Кинематическое: Этот тип тела движется в симуляции и движется в соответствии со своими линейными/угольными скоростями и никогда не использует силы или моменты. Он взаимодействует только с Динамическими типами тела. Он ведет себя так, как будто он имеет бесконечную массу.
Тело автоматически уничтожается, когда уничтожается мир, в котором оно находится. Тело не может существовать вне мира.

Свойства

Свойство Описание
angularDampingУгловое демпфирование тела. Это уменьшит угловую скорость со временем. См. PhysicsBody.angularVelocity.
angularVelocityУгловая скорость тела.
awakeБудущее состояние тела.
callbackTargetПолучить/Установить System.Object, на который будут отправляться обратные вызова событий для этого тела. Следует проявлять осторожность с любым System.Object, назначенным в качестве цели обратного вызова, который не является UnityEngine.Object, так как это назначение само по себе не сохранит объект живым и может стать объектом сбора мусора. Чтобы избежать этого, вы должны иметь хотя бы одну ссылку на объект в вашем коде. Это включает следующие события: — BodyUpdateEvent с вызовом IBodyUpdateCallback.
collisionThresholdПорог, используемый для управления использованием непрерывного обнаружения столкновений при движении тела. Значение используется для сравнения движения тела с линейной скоростью с размерами всех фигур, добавленных к телу, масштабированных по этому порогу. Если движение превышает размеры, масштабированные по порогу, то непрерывное обнаружение столкновений используется для остановки туннелирования. Более низкие значения уменьшают расстояние, которое тело должно преодолеть, прежде чем будет использовано непрерывное обнаружение столкновений, и могут иметь значительное влияние на производительность! Более высокие значения увеличивают расстояние, которое тело должно преодолеть, прежде чем будет использовано непрерывное обнаружение столкновений. Слишком низкий порог приведет к более частому использованию непрерывного обнаружения столкновений, что повлияет на производительность, поэтому его следует ограничить только определенными телами. По умолчанию порог равен 0.5, что эквивалентно половине всех размеров фигур. Порог закреплен в диапазоне от 0.0 до 1.0, при этом 0.0 означает, что непрерывное обнаружение столкновений будет использоваться всегда.
constraintsПолучить/Установить ограничения степеней свободы (блокировки) для тела Linear X, Linear Y и Rotation Z.
definitionПолучить/Установить определение тела путем доступа ко всем его текущим свойствам. Это предоставляется только для удобства и не должно использоваться, когда производительность важна, так как все свойства, определенные в определении, доступны последовательно. Вы должны попытаться использовать только конкретные свойства, которые вам нужны, а не использовать эту функцию.
enabledСостояние включения тела. Если false, ни само тело, ни то, что к нему прикреплено, в симуляции не участвует.
fastCollisionsAllowedРассматривайте это тело как высокоскоростной объект, который выполняет непрерывное обнаружение столкновений с динамическими и кинематическими телами, но не с другими высокоскоростными телами. Быстрые коллизионные тела следует использовать осторожно. Они не являются решением для общего непрерывного столкновения динамического с динамическим.
fastRotationAllowedЭто позволяет этому корпусу обходить ограничения скорости вращения. Это должно использоваться только для круглых объектов, таких как колеса, шары и т.д.
gravityScaleМасштабирует мировую гравитацию, которая применяется к этому телу. Установка шкалы гравитации на нуль прекращает применение любой гравитации. Аналогично, отрицательное значение инвертирует гравитацию. См. PhysicsWorld.gravity.
isOwnedПолучить, если тело принадлежит. См. PhysicsBody.SetOwner.
isValidПроверяет действительность тела.
jointCountПолучить количество соединений, прикрепленных к этому телу. Используйте PhysicsBody.GetJoints для получения соединений.
linearDampingЛинейное ослабление тела. Это уменьшит линейную скорость со временем. См. PhysicsBody.linearVelocity.
linearVelocityЛинейная скорость тела.
localCenterOfMassПоложение центра массы тела в локальном пространстве. Это можно получить как союз PhysicsBody.mass, PhysicsBody.rotationalInertia и PhysicsBody.localCenterOfMass с помощью PhysicsBody.massConfiguration.
massРассчитанная масса тела, обычно в килограммах. Она может быть получена как объединение PhysicsBody.mass, PhysicsBody.rotationalInertia и PhysicsBody.localCenterOfMass с помощью PhysicsBody.massConfiguration.
massConfigurationКонфигурация массы тела, состоящая из PhysicsBody.mass, PhysicsBody.rotationalInertia и PhysicsBody.localCenterOfMass. Обычно это рассчитывается автоматически при добавлении, удалении или изменении PhysicsShape на теле. Это автоматически изменится, если тип тела изменится, например, статическое или кинематическое тело всегда имеет нулевую массу и инерцию вращения. Индивидуальные свойства PhysicsBody.massConfiguration доступны с помощью PhysicsBody.mass, PhysicsBody.rotationalInertia и PhysicsBody.localCenterOfMass. MassConfiguration будет перезаписан при установке этого свойства или если вызван PhysicsBody.ApplyMassFromShapes или при добавлении, удалении или изменении PhysicsShape с включенным PhysicsShapeDefinition.startMassUpdate.
ownerUserDataПолучить PhysicsUserData, который может быть использован для любой цели, обычно только владельцем.
positionПоложение тела в мире.
rotationВращение тела.
rotationalInertiaВращательная инерция тела, обычно в кг*м^2. Она может быть получена как сумма PhysicsBody.mass, PhysicsBody.rotationalInertia и PhysicsBody.localCenterOfMass с помощью PhysicsBody.massConfiguration.
shapeCountПолучить количество фигур, прикрепленных к этому телу. Используйте PhysicsBody.GetShapes для получения фигур.
sleepingAllowedСпособность тела спать. Если false, то тело никогда не будет спать и будет пробуждено. См. PhysicsBody.awake.
sleepThresholdПорог, ниже которого тело будет спать, в метрах в секунду.
transformПолное преобразование тела, состоящее из положения и вращения.
transformObjectПолучить/Установить объект преобразования, связанный с телом. Это может быть использовано как преобразование записи и/или как подсказка для отладки рисунка. См. PhysicsBody.transformWriteMode.
transformWriteModeПолучить/Установить, как PhysicsBody.transformObject должен быть записан после завершения симулирования. Запись Transform произойдет только если она включена на мире с помощью PhysicsWorld.transformWriteMode.
typeТело является одним из этих трех типов тела, Динамическим, Кинематическим или Статическим, каждый из которых определяет, как тело ведет себя в симуляции.
userDataПолучить/Установить PhysicsUserData, который может быть использован для любой цели. Физическая система не использует эти данные, они полностью предназначены для индивидуального использования.
worldПолучить мир, к которому прикреплено тело.
worldCenterOfMassПолучить местоположение центра массы тела в мировом пространстве. Это может быть доступно как союз PhysicsBody.mass, PhysicsBody.rotationalInertia и PhysicsBody.localCenterOfMass с помощью PhysicsBody.massConfiguration.

Открытые методы

Метод Описание
ApplyAngularImpulseПримените угловой импульс. Этот импульс должен использоваться для одноразовых импульсов. Если вам нужен постоянный крутящий момент, используйте вместо этого крутящий момент, который будет лучше работать с подшаговым решателем.
ApplyForceПриложить силу в точке мира. Если сила не применяется в центре массы, она будет генерировать крутящий момент и влиять на угловую скорость.
ApplyForceToCenterПриложить силу к центру массы.
ApplyLinearImpulseПрименить импульс в точке. Это немедленно изменяет скорость и также изменяет угловую скорость, если точка применения не находится в центре массы. Это следует использовать для одноразовых импульсов. Если вам нужна постоянная сила, используйте силу вместо этого, которая будет лучше работать с суб-шаговым решателем.
ApplyLinearImpulseToCenterПримените импульс к центру массы. Это немедленно изменяет скорость. Это следует использовать для одноразовых импульсов. Если вам нужна постоянная сила, используйте силу вместо этого, что будет лучше работать с суб-шаговым решателем.
ApplyMassFromShapesОбычно тело автоматически вычисляет MassConfiguration, используя все присоединенные формы. MassConfiguration автоматически обновляется при добавлении, удалении или изменении PhysicsShape. При добавлении многих форм в тело, вы можете остановить автоматические вычисления, тем самым улучшив производительность, отключив PhysicsShapeDefinition.startMassUpdate для каждой формы, добавляемой в тело. Этот вызов приведет к вычислению MassConfiguration с использованием текущей добавленной PhysicsShape, так что обычно вызов происходит после добавления многих форм, если PhysicsShapeDefinition.startMassUpdate отключено. В качестве альтернативы, если вы хотите назначить свой собственный MassConfiguration, то отключение автоматических вычислений также имеет смысл. В любом случае, вы должны вызвать этот метод или установить PhysicsBody.massConfiguration перед любым шагом симулирования, в противном случае PhysicsBody будет демонстрировать нестабильное поведение столкновения. MassConfiguration будет перезаписан при вызове PhysicsBody.ApplyMassFromShapes, если установлен PhysicsBody.massConfiguration или при добавлении, удалении или изменении PhysicsShape с включенным PhysicsShapeDefinition.startMassUpdate.
ApplyTorqueПрименение крутящего момента. Это влияет на угловую скорость, не влияя на линейную скорость.
ClearForcesОчистить любые пользовательские силы, которые были применены к этому телу. Силы на теле автоматически очищаются при завершении этапа моделирования, однако в некоторых случаях может быть желательно очистить силы явно.
CreateChainСоздать Цепь, прикрепленную к этому телу.
CreateShapeСоздайте форму круга, используя его определение по умолчанию, прикрепленное к этому телу.
CreateShapeBatchСоздать пакет фигур круга, прикрепленных к этому телу.
DestroyУничтожить тело, уничтожив все приложенные PhysicsShape и PhysicsJoint. Если объект принадлежит PhysicsBody.SetOwner, то вы должны предоставить ключ владельца, который он возвратил. Если этого не сделать, то будет возвращено предупреждение, и тело не будет уничтожено.
DrawОтрисовывает тело, визуально представляющее его текущее состояние в мире. Используется только в Unity Editor или в сборке для разработки.
GetAABBПолучить мир AABB, который ограничивает все формы, присоединенные к этому телу. Если к телу не присоединено никаких форм, то возвращенный мир AABB пустой и центрирован на начале тела.
GetContactsПолучить все касательные контакты, в которых в настоящее время участвует это тело. Используется спекулятивное столкновение, так что некоторые контактные точки могут быть разделены, свойство доступно в предоставленном контактном многообразии.
GetJointsПрисоедините к телу суставы.
GetLocalPointПолучает локальную точку относительно тела, для которого задана мировая точка.
GetLocalPointVelocityПолучить линейную скорость локальной точки, прикрепленной к телу. Обычно в метрах в секунду.
GetLocalVectorПолучает локальный вектор на тело, для которого задан мировой вектор.
GetOwnerПолучить объект владельца, связанный с этим телом, как указано с помощью PhysicsBody.SetOwner.
GetPositionAndRotation3DПолучить полное 3D положение и вращение тела при указанных TransformWriteMode и TransformPlane. Обычно используются как режим записи, так и трансформирующая плоскость мира, в котором находится тело. Это можно вызвать только при назначении PhysicsBody.transformObject. Без этого возникает исключение. См. PhysicsWorld.transformWriteMode и PhysicsWorld.transformPlane.
GetShapesПолучить формы, прикрепленные к этому телу.
GetWorldPointПолучает мировую точку, преобразованную из локальной точки относительно тела.
GetWorldPointVelocityПолучить линейную скорость мировой точки, прикрепленной к телу. Обычно в метрах в секунду.
GetWorldVectorПолучает мировой вектор, преобразованный из локального вектора относительно тела.
SetAndWriteTransformУстановить полное преобразование тела, состоящее из положения и вращения, а также записать в ассоциированный PhysicsBody.transformObject. PhysicsBody.transformObject не будет записываться, если он не назначен или PhysicsWorld.transformWriteMode выключены. Тело всегда будет обновляться, однако. См. PhysicsBody.transformObject.
SetContactEventsВключить/отключить контактные события на всех формах, присоединенных к телу. См. PhysicsShape.contactEvents.
SetHitEventsВключить/выключить события попадания на все фигуры, прикрепленные к телу. См. PhysicsShape.hitEvents.
SetOwnerУстанавливает (необязательно) объект владельца, ассоциированный с этим телом, и возвращает ключ владельца, который должен быть указан при уничтожении тела с помощью PhysicsBody.Destroy. Физическая система обеспечивает доступ ко всем объектам, включая возможность уничтожения их, так что эта функция может быть использована для предотвращения случайного уничтожения объектов, принадлежащих другим объектам. Вы можете установить владельца только один раз, многократные попытки вызовут предупреждение. Срок жизни указанного объекта владельца не связан с этим телом i.e. Это тело будет по-прежнему принадлежать объекту владельца, даже если оно будет уничтожено. Также допустимо не указывать объект владельца (NULL) для простого получения ключа владельца, однако это может быть полезно, если только для целей отладки и обнаружения, чтобы знать, какой объект является владельцем.
SetOwnerUserDataНабор PhysicsUserData, который может быть использован для любой цели, обычно только владельцем.
SetTransformTargetУстановить PhysicsBody.linearVelocity и PhysicsBody.angularVelocity для достижения указанного преобразования в указанное время. Результирующая трансформация будет закрытой и может не быть точной. Это идеально для кинематических тел, но будет работать с динамическими телами, если ничто не изменяет назначенные скорости. Это будет игнорироваться, если вычисленные PhysicsBody.linearVelocity и PhysicsBody.angularVelocity будут ниже PhysicsBody.sleepThreshold. Это автоматически пробудит тело, если оно спится.
WakeTouchingПробудить любые тела, которые касаются этого тела через их формы. Это также работает для статических тел.

Статические методы

Метод Описание
CreateСоздать тело, используя PhysicsBodyDefinition.defaultDefinition в указанном мире.
CreateBatchСоздать партию тел в указанном мире.
DestroyBatchУничтожить партию тел, уничтожая все прикрепленные PhysicsShape и PhysicsJoint. Любые недействительные тела будут проигнорированы. Принадлежащие тела вызовут предупреждение и не будут уничтожены (см. PhysicsBody.SetOwner).
SetBatchForceПрименить силу к партии PhysicsBody с использованием пространства BatchForce. Если в партию передаются неверные значения, они будут просто проигнорированы. Для наилучшей производительности все тела, содержащиеся в партии, должны быть частью одного и того же PhysicsWorld. Если тела в партии не содержатся в одном и том же PhysicsWorld, партию следует сортировать по PhysicsWorld, в котором содержатся тела.
SetBatchImpulseПрименить импульс для партии PhysicsBody с использованием пространства BatchImpulse. Если в партию передаются неверные значения, они будут просто проигнорированы. Для наилучшей производительности все тела, содержащиеся в партии, должны быть частью одного и того же PhysicsWorld. Если тела в партии не содержатся в одном и том же PhysicsWorld, партию следует сортировать по PhysicsWorld, в котором содержатся тела.
SetBatchTransformУстановить преобразование для партии PhysicsBody с использованием пространства BatchTransform. Если в партию передаются неверные значения, они будут просто проигнорированы. Для наилучшей производительности все тела, содержащиеся в партии, должны быть частью одного и того же PhysicsWorld. Если тела в партии не содержатся в одном и том же PhysicsWorld, партию следует сортировать по PhysicsWorld, в котором содержатся тела.
SetBatchVelocityЗадайте скорость для партии PhysicsBody с использованием пространства BatchVelocity. Если неверные значения будут переданы партии, они будут просто проигнорированы. Для наилучшей производительности, тела, содержащиеся в партии, должны все быть частью одного и того же PhysicsWorld. Если тела в партии не содержатся в одном и том же PhysicsWorld, партия должна быть отсортирована по PhysicsWorld, в котором содержатся тела.