Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Ссылка платформы SceneKit ссылка класса SCNPhysicsShape

Опции
Развертывание Target:

На этой странице
Язык:

SCNPhysicsShape

Наследование


Оператор импорта


Swift

import SceneKit

Objective C

@import SceneKit;

Доступность


Доступный в iOS 8.0 и позже.

SCNPhysicsShape объект моделирует существенный объем, связанный с SCNPhysicsBody объект для использования в обнаружении коллизий. Когда SceneKit моделирует физику в Вашей сцене, это использует формы физики вместо представленной геометрии видимых объектов. Этот подход и улучшает производительность моделирования и позволяет Вам более легко разрабатывать свой геймплей вокруг элементов сцены, с которыми может взаимодействовать проигрыватель.

Простой по сравнению со сложными формами

Когда Вы позволяете SceneKit автоматически создавать форму физики, он использует самую простую форму, примерно соответствующую геометрию узла, к которому присоединена организация физики. Этот подход максимизирует производительность моделирования, но может привести к нереалистичному поведению физики для некоторых объектов.

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

Если Вы создаете форму физики с помощью одного из основных классов геометрии (SCNBox, SCNSphere, SCNPyramid, SCNCone, SCNCylinder, или SCNCapsule), SceneKit использует идеализированную форму той геометрии для формы физики вместо того, чтобы использовать данные вершины геометрии для моделирования коллизий. Например, если Вы создаете форму физики из SCNSphere объект, SceneKit моделирует коллизии для любого объекта, передающего в радиусе сферы.

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

Изменение формы организации физики

Формы физики являются неизменными, но можно изменить форму, связанную с организацией физики путем создания нового SCNPhysicsShape экземпляр и присвоение его к организации physicsShape свойство.

  • Создает форму физики на основе геометрического объекта.

    Объявление

    Swift

    convenience init(geometry geometry: SCNGeometry, options options: [NSObject : AnyObject]?)

    Objective C

    + (instancetype)shapeWithGeometry:(SCNGeometry *)geometry options:(NSDictionary *)options

    Параметры

    geometry

    Геометрический объект.

    options

    Словарь опций, влияющих на уровень детализации формы физики, или nil использовать опции по умолчанию. Для применимых ключей и их возможных значений, посмотрите Ключи Опций Создания Формы.

    Возвращаемое значение

    Новый объект фигуры физики.

    Обсуждение

    Если Вы создаете форму физики с помощью одного из основных классов геометрии (SCNBox, SCNSphere, SCNPyramid, SCNCone, SCNCylinder, или SCNCapsule), SceneKit использует идеализированную форму той геометрии для формы физики вместо того, чтобы использовать данные вершины геометрии для моделирования коллизий. Например, если Вы создаете форму физики из SCNSphere объект, SceneKit моделирует коллизии для любого объекта, передающего в радиусе сферы.

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

    Для использования недавно создаваемой формы физики создайте организацию физики с bodyWithType:shape: метод, или присваивают форму physicsShape свойство существующей организации.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • Создает форму физики из узла или иерархии узлов.

    Объявление

    Swift

    convenience init(node node: SCNNode, options options: [NSObject : AnyObject]?)

    Objective C

    + (instancetype)shapeWithNode:(SCNNode *)node options:(NSDictionary *)options

    Параметры

    node

    Объект узла. Узел должен содержать SCNGeometry объект в geometry свойство или имеет один или несколько дочерних элементов (или потомок) узлы, содержащие геометрию.

    options

    Словарь опций, влияющих на уровень детализации формы физики, или nil использовать опции по умолчанию. Для применимых ключей и их возможных значений, посмотрите Ключи Опций Создания Формы.

    Возвращаемое значение

    Новый объект фигуры физики.

    Обсуждение

    Для использования недавно создаваемой формы физики создайте организацию физики с bodyWithType:shape: метод, или присваивают форму physicsShape свойство существующей организации.

    Узел, используемый для создания формы физики, не должен совпадать с узлом, организация физики которого Вы присоединяете форму к — или даже находитесь в сцене, в мире физики которой Вы используете форму. Например, можно создать организацию физики для сложного объекта путем создания иерархии узлов, содержащих простые конфигурации (использующий SCNBox и SCNSphere классы), и затем создание физики формируют от тех узлов. Получающаяся форма физики, составной объект ограничительных рамок или выпуклых оболочек, обеспечивает грубое приближение сложного объекта без высокой стоимости к производительности моделирования.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • Создает новую форму физики путем объединения других.

    Объявление

    Swift

    convenience init(shapes shapes: [AnyObject], transforms transforms: [AnyObject])

    Objective C

    + (instancetype)shapeWithShapes:(NSArray *)shapes transforms:(NSArray *)transforms

    Параметры

    shapes

    Массив SCNPhysicsShape объекты.

    transforms

    Массив NSValue объекты, содержащие SCNMatrix4 значения, каждое из которых является преобразованием для формы физики в соответствующем индексе в shapes параметр.

    Возвращаемое значение

    Новый объект фигуры физики.

    Обсуждение

    Отдельная форма физики определяется в ее собственном пространстве локальной координаты. Поэтому для описания позиций и ориентаций многократных форм относительно друг друга необходимо использовать координатные трансформации.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • Ключи для словаря опций, используемого при создании формы физики.

    Объявление

    Swift

    let SCNPhysicsShapeTypeKey: String let SCNPhysicsShapeKeepAsCompoundKey: String let SCNPhysicsShapeScaleKey: String

    Objective C

    NSString * const SCNPhysicsShapeTypeKey; NSString * const SCNPhysicsShapeKeepAsCompoundKey; NSString * const SCNPhysicsShapeScaleKey;

    Константы

    • SCNPhysicsShapeTypeKey

      Ключ для выбора уровня детализации, в котором можно создать формы из геометрии.

      Значение для этого ключа является одной из констант, перечисленных в Типах Формы. Тип по умолчанию SCNPhysicsShapeTypeConvexHull.

      Доступный в iOS 8.0 и позже.

    • SCNPhysicsShapeKeepAsCompoundKey

      Ключ для выбора, создать ли группу независимых форм или объединить их в единственную форму.

      Значение для этого ключа NSNumber объект, содержащий булево значение. Значение по умолчанию YEStrue, указание, что SceneKit преобразовывают, разделяет конфигурации на отдельные формы и присоединяется к получающимся формам. Если NOfalse, SceneKit создает единственную форму, приближающую объединенную форму конфигураций.

      Доступный в iOS 8.0 и позже.

    • SCNPhysicsShapeScaleKey

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

      Значение для этого ключа NSValue объект, содержащий SCNVector3 структура, компоненты которой описывают масштабный коэффициент в каждом из x-, y-и направлений оси z. Значение по умолчанию является вектором {1.0, 1.0, 1.0}, указание никакого изменения масштаба.

      Моделирование физики SceneKit игнорирует scale свойство узлов, содержащих организации физики при моделировании коллизий. Вместо этого используйте эту опцию обеспечить масштабный коэффициент при создании пользовательских форм физики. (При создании организации физики для узла, не указывая пользовательскую форму SceneKit использует узел scale свойство для выведения этого масштабного коэффициента во время создания.)

      Доступный в iOS 8.0 и позже.

    Обсуждение

    Когда SceneKit создает форму из иерархии узлов, содержащих многократные конфигурации, SCNPhysicsShapeKeepAsCompoundKey опция имеет приоритет по SCNPhysicsShapeTypeKey опция.

    Например, если у Вас есть иерархия узла, содержащая несколько конфигураций, устанавливая SCNPhysicsShapeTypeKey опция к SCNPhysicsShapeTypeBoundingBox и SCNPhysicsShapeKeepAsCompoundKey опция к YEStrue создает форму, которая является комбинацией нескольких полей. Этот подход может обеспечить лучшую производительность моделирования, чем преобразование всей иерархии узла к единственной вогнутой форме многогранника.

  • Значения для SCNPhysicsShapeTypeKey указание уровня детализации, который SceneKit использует при создании формы физики на основе геометрии.

    Объявление

    Swift

    let SCNPhysicsShapeTypeBoundingBox: String let SCNPhysicsShapeTypeConvexHull: String let SCNPhysicsShapeTypeConcavePolyhedron: String

    Objective C

    NSString * const SCNPhysicsShapeTypeBoundingBox; NSString * const SCNPhysicsShapeTypeConvexHull; NSString * const SCNPhysicsShapeTypeConcavePolyhedron;

    Константы

    • SCNPhysicsShapeTypeBoundingBox

      Форма физики является самым маленьким полем, содержащим геометрию.

      Эта опция обеспечивает самый низкий уровень детализации и самую быструю производительность моделирования. Используйте его для организаций физики обычно формы поля или при построении составной формы физики.

      Доступный в iOS 8.0 и позже.

    • SCNPhysicsShapeTypeConvexHull

      Форма физики является выпуклым многогранником, примерно включающим геометрию.

      Эта опция обеспечивает умеренный уровень детализации и производительность моделирования. Используйте его для округленных или организаций физики неправильной формы.

      Доступный в iOS 8.0 и позже.

    • SCNPhysicsShapeTypeConcavePolyhedron

      Форма физики является вогнутым многогранником близко после поверхности геометрии.

      Эта опция обеспечивает высший уровень подробности по высокой стоимости к производительности моделирования. Используйте его только для организаций неправильной формы, где точное поведение коллизии крайне важно для проекта Вашего приложения.

      Этот тип формы может только использоваться для статических организаций физики (т.е. те, чей type свойство SCNPhysicsBodyTypeStatic).

      Доступный в iOS 8.0 и позже.