SCNPhysicsShape
SCNPhysicsShape
объект моделирует существенный объем, связанный с SCNPhysicsBody
объект для использования в обнаружении коллизий. Когда SceneKit моделирует физику в Вашей сцене, это использует формы физики вместо представленной геометрии видимых объектов. Этот подход и улучшает производительность моделирования и позволяет Вам более легко разрабатывать свой геймплей вокруг элементов сцены, с которыми может взаимодействовать проигрыватель.
Простой по сравнению со сложными формами
Когда Вы позволяете SceneKit автоматически создавать форму физики, он использует самую простую форму, примерно соответствующую геометрию узла, к которому присоединена организация физики. Этот подход максимизирует производительность моделирования, но может привести к нереалистичному поведению физики для некоторых объектов.
Можно заставить моделирование вести себя более реалистично путем определения форм физики, более близко следующих за видимой геометрией в сцене. Этот подход прибывает в стоимость для производительности, таким образом, Вы хотите ограничить сумму подробности в Ваших формах физики. Используйте высшие уровни подробности только об организациях, для которых точное обнаружение коллизий важно для Вашего приложения.
Если Вы создаете форму физики с помощью одного из основных классов геометрии (SCNBox
, SCNSphere
, SCNPyramid
, SCNCone
, SCNCylinder
, или SCNCapsule
), SceneKit использует идеализированную форму той геометрии для формы физики вместо того, чтобы использовать данные вершины геометрии для моделирования коллизий. Например, если Вы создаете форму физики из SCNSphere
объект, SceneKit моделирует коллизии для любого объекта, передающего в радиусе сферы.
Поскольку идеализированные формы простых конфигураций в вычислительном отношении намного более просты, чем данные вершины, необходимые для отображения их, с помощью базовых конфигураций для форм физики (или соедините формы, создаваемые из базовых конфигураций с shapeWithShapes:transforms:
метод), часто обеспечивает лучший баланс между точностью моделирования и производительностью.
Изменение формы организации физики
Формы физики являются неизменными, но можно изменить форму, связанную с организацией физики путем создания нового SCNPhysicsShape
экземпляр и присвоение его к организации physicsShape
свойство.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Создает форму физики на основе геометрического объекта.
Объявление
Swift
convenience init(geometry
geometry
: SCNGeometry, optionsoptions
: [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
Доступность
Доступный в OS X v10.10 и позже.
-
Создает форму физики из узла или иерархии узлов.
Объявление
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
Доступность
Доступный в OS X v10.10 и позже.
-
Создает новую форму физики путем объединения других.
Объявление
Swift
convenience init(shapes
shapes
: [AnyObject], transformstransforms
: [AnyObject])Параметры
shapes
Массив
SCNPhysicsShape
объекты.transforms
Массив
NSValue
объекты, содержащиеSCNMatrix4
значения, каждое из которых является преобразованием для формы физики в соответствующем индексе вshapes
параметр.Возвращаемое значение
Новый объект фигуры физики.
Обсуждение
Отдельная форма физики определяется в ее собственном пространстве локальной координаты. Поэтому для описания позиций и ориентаций многократных форм относительно друг друга необходимо использовать координатные трансформации.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Ключи для словаря опций, используемого при создании формы физики.
Объявление
Swift
let SCNPhysicsShapeTypeKey: NSString! let SCNPhysicsShapeKeepAsCompoundKey: NSString! let SCNPhysicsShapeScaleKey: NSString!
Objective C
NSString * const SCNPhysicsShapeTypeKey; NSString * const SCNPhysicsShapeKeepAsCompoundKey; NSString * const SCNPhysicsShapeScaleKey;
Константы
-
SCNPhysicsShapeTypeKey
SCNPhysicsShapeTypeKey
Ключ для выбора уровня детализации, в котором можно создать формы из геометрии.
Значение для этого ключа является одной из констант, перечисленных в Типах Формы. Тип по умолчанию
SCNPhysicsShapeTypeConvexHull
.Доступный в OS X v10.10 и позже.
-
SCNPhysicsShapeKeepAsCompoundKey
SCNPhysicsShapeKeepAsCompoundKey
Ключ для выбора, создать ли группу независимых форм или объединить их в единственную форму.
Значение для этого ключа
NSNumber
объект, содержащий булево значение. Значение по умолчаниюYES
true
, указание, что SceneKit преобразовывают, разделяет конфигурации на отдельные формы и присоединяется к получающимся формам. ЕслиNO
false
, SceneKit создает единственную форму, приближающую объединенную форму конфигураций.Доступный в OS X v10.10 и позже.
-
SCNPhysicsShapeScaleKey
SCNPhysicsShapeScaleKey
Ключ для выбора масштабного коэффициента формы относительно пространства локальной координаты узла, содержащего его.
Значение для этого ключа
NSValue
объект, содержащийSCNVector3
структура, компоненты которой описывают масштабный коэффициент в каждом из x-, y-и направлений оси z. Значение по умолчанию является вектором{1.0, 1.0, 1.0}
, указание никакого изменения масштаба.Моделирование физики SceneKit игнорирует
scale
свойство узлов, содержащих организации физики при моделировании коллизий. Вместо этого используйте эту опцию обеспечить масштабный коэффициент при создании пользовательских форм физики. (При создании организации физики для узла, не указывая пользовательскую форму SceneKit использует узелscale
свойство для выведения этого масштабного коэффициента во время создания.)Доступный в OS X v10.10 и позже.
Обсуждение
Когда SceneKit создает форму из иерархии узлов, содержащих многократные конфигурации,
SCNPhysicsShapeKeepAsCompoundKey
опция имеет приоритет поSCNPhysicsShapeTypeKey
опция.Например, если у Вас есть иерархия узла, содержащая несколько конфигураций, устанавливая
SCNPhysicsShapeTypeKey
опция кSCNPhysicsShapeTypeBoundingBox
иSCNPhysicsShapeKeepAsCompoundKey
опция кYES
true
создает форму, которая является комбинацией нескольких полей. Этот подход может обеспечить лучшую производительность моделирования, чем преобразование всей иерархии узла к единственной вогнутой форме многогранника. -
-
Значения для
SCNPhysicsShapeTypeKey
указание уровня детализации, который SceneKit использует при создании формы физики на основе геометрии.Объявление
Swift
let SCNPhysicsShapeTypeBoundingBox: NSString! let SCNPhysicsShapeTypeConvexHull: NSString! let SCNPhysicsShapeTypeConcavePolyhedron: NSString!
Objective C
NSString * const SCNPhysicsShapeTypeBoundingBox; NSString * const SCNPhysicsShapeTypeConvexHull; NSString * const SCNPhysicsShapeTypeConcavePolyhedron;
Константы
-
SCNPhysicsShapeTypeBoundingBox
SCNPhysicsShapeTypeBoundingBox
Форма физики является самым маленьким полем, содержащим геометрию.
Эта опция обеспечивает самый низкий уровень детализации и самую быструю производительность моделирования. Используйте его для организаций физики обычно формы поля или при построении составной формы физики.
Доступный в OS X v10.10 и позже.
-
SCNPhysicsShapeTypeConvexHull
SCNPhysicsShapeTypeConvexHull
Форма физики является выпуклым многогранником, примерно включающим геометрию.
Эта опция обеспечивает умеренный уровень детализации и производительность моделирования. Используйте его для округленных или организаций физики неправильной формы.
Доступный в OS X v10.10 и позже.
-
SCNPhysicsShapeTypeConcavePolyhedron
SCNPhysicsShapeTypeConcavePolyhedron
Форма физики является вогнутым многогранником близко после поверхности геометрии.
Эта опция обеспечивает высший уровень подробности по высокой стоимости к производительности моделирования. Используйте его только для организаций неправильной формы, где точное поведение коллизии крайне важно для проекта Вашего приложения.
Этот тип формы может только использоваться для статических организаций физики (т.е. те, чей
type
свойствоSCNPhysicsBodyTypeStatic
).Доступный в OS X v10.10 и позже.
-