SCNPhysicsField
SCNPhysicsField
объект применяет силы к объектам в области эффекта в сцене. Можно создать много типов полевых эффектов, таких как гравитация, электромагнетизм и турбулентность. Для добавления полевого эффекта к сцене Вы создаете поле физики типа, Вы хотите использовать и затем присоединить его к physicsField
свойство узла в сцене.
Поля физики могут влиять на обоих SCNPhysicsBody
объекты и частицы, порожденные SCNParticleSystem
объекты.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, замедляющее любой объект в его области эффекта с силой, пропорциональной скорости объекта.
Объявление
Swift
class func dragField() -> SCNPhysicsField
Objective C
+ (SCNPhysicsField *)dragField
Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Как
damping
иangularDamping
свойства организации физики, перетащите поля, может моделировать эффекты, такие как жидкостное трение или сопротивление воздуха. В отличие от тех свойств, перетащите поля, может моделировать различную интенсивность жидкостного трения в различных областях Вашей сцены. Например, можно использовать поле перетаскивания для представления подводных областей.Значение по умолчанию
falloffExponent
значение для поля перетаскивания0.0
, указание, что эффект поля является постоянным всюду по своей области эффекта.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, силы которого циркулируют вокруг оси.
Объявление
Swift
class func vortexField() -> SCNPhysicsField
Objective C
+ (SCNPhysicsField *)vortexField
Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Сила на объекте в вихревом поле является тангенциальной к строке от позиции объекта до оси поля и пропорциональной массе объекта. (Ось поля является строкой, которая параллельна
direction
вектор и это проходят через свой центр. Для получения дополнительной информации посмотритеoffset
свойство.), Например, когда область вихревого поля эффекта содержит много объектов, получающаяся сцена напоминает торнадо: объекты одновременно вращаются вокруг и улетают из центра поля.По умолчанию вихрь циркулирует против часовой стрелки относительно
direction
вектор. Чтобы заставить его циркулировать по часовой стрелке, установите полеstrength
свойство к отрицательной величине.Значение по умолчанию
falloffExponent
значение для вихревого поля0.0
, указание, что эффект поля является постоянным всюду по своей области эффекта.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, ускоряющее объекты к его центру.
Объявление
Swift
class func radialGravityField() -> SCNPhysicsField
Objective C
+ (SCNPhysicsField *)radialGravityField
Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Поскольку сила тяжести на объекте пропорциональна массе объекта, эта сила ускоряет все объекты на том же расстоянии от центра поля той же суммой. Поле
strength
свойство измеряет это ускорение в метрах в секунду в секунду.По умолчанию радиальное поле силы тяжести притягивает объекты к своему центру. Чтобы заставить его отразить объекты вместо этого, установите поле
strength
свойство к отрицательной величине.Значение по умолчанию
falloffExponent
значение для радиального поля силы тяжести2.0
, указание, что эффект поля уменьшается с квадратом расстояния от его центра.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, ускоряющее объекты в определенном направлении.
Объявление
Swift
class func linearGravityField() -> SCNPhysicsField
Objective C
+ (SCNPhysicsField *)linearGravityField
Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Поскольку сила тяжести на объекте пропорциональна массе объекта, эта сила ускоряет все объекты в области поля влияния той же суммой. Поле
strength
свойство измеряет это ускорение в метрах в секунду в секунду.По умолчанию линейное поле силы тяжести ускоряет объекты во вдоль
direction
вектор. Чтобы заставить его ускорить объекты в противоположном направлении, установите полеstrength
свойство к отрицательной величине.Значение по умолчанию
falloffExponent
значение для линейного поля силы тяжести0.0
, указание, что эффект поля является постоянным всюду по своей области эффекта.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, применяющее случайные силы к объектам в его области эффекта.
Объявление
Swift
class func noiseFieldWithSmoothness(_
smoothness
: CGFloat, animationSpeedspeed
: CGFloat) -> SCNPhysicsFieldПараметры
smoothness
Сумма случайности в поле. Значение
0.0
указывает максимальный шум и значение1.0
не указывает шума вообще.speed
Изменение поля в течение долгого времени. Указать
0.0
для статического поля.Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Используйте этот тип поля для моделирования эффектов, включающих случайное движение, таких как светлячки или мягко падающий снег.
В вычислении направления и силы эффекта поля на объект, SceneKit использует функцию шума симплекса Perlin. Эта функция производит скоростное поле, варьирующееся в течение долгого времени.
Значение по умолчанию
falloffExponent
значение для шумового поля0.0
, указание, что эффект поля является постоянным всюду по своей области эффекта. Этот тип поля игнорирует полеdirection
свойство.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, применяющее случайные силы к объектам в его области эффекта с величинами, пропорциональными скоростям тех объектов.
Объявление
Swift
class func turbulenceFieldWithSmoothness(_
smoothness
: CGFloat, animationSpeedspeed
: CGFloat) -> SCNPhysicsFieldПараметры
smoothness
Сумма случайности в поле. Значение
0.0
указывает максимальный шум и значение1.0
не указывает шума вообще.speed
Изменение поля в течение долгого времени. Указать
0.0
для статического поля.Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Как шумовое поле, поле турбулентности применяет силы в случайных направлениях к объектам, на которые оно влияет. В отличие от шумового поля, поле турбулентности применяет силу, величина которой пропорциональна скорости каждого задействованного объекта. Например, передача объектов через шумовое поле дрожит, когда она перемещается через поле, но передача объектов через поле турбулентности дрожит более яростно быстрее, она перемещается. Поле
strength
свойство масштабирует величину эффекта турбулентности.Значение по умолчанию
falloffExponent
значение для поля турбулентности0.0
, указание, что эффект поля является постоянным всюду по своей области эффекта.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, вытягивающее объекты к его центру с весенней силой.
Объявление
Swift
class func springField() -> SCNPhysicsField
Objective C
+ (SCNPhysicsField *)springField
Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Сила пружинное поле применяется к объектам в своей области эффекта, линейно пропорциональна расстоянию от объекта до центра поля. (Т.е. поле ведет себя согласно Закону Гука реальных усилий пружины.) Объект, помещенный в центр поля и отодвинутый, будет колебаться вокруг центра с периодом колебания, которое пропорционально массе объекта. Поле
strength
свойство масштабирует величину пружинного эффекта — большая сила моделирует более жесткую пружину.Значение по умолчанию
falloffExponent
значение для пружинного поля1.0
, указание, что эффект поля уменьшается линейно с расстоянием от его центра.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, притягивающее или отражающее объекты на основе их электрического заряда и на их расстоянии от центра поля.
Объявление
Swift
class func electricField() -> SCNPhysicsField
Objective C
+ (SCNPhysicsField *)electricField
Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Используйте этот тип поля, чтобы заставить объекты вести себя по-другому от друг друга, когда они введут область, или сделать поведение объекта отличающимся от его основанного на массе поведения. Электрическое поле ведет себя согласно первой части уравнения силы Лоренца, моделируя реальные электромагнитные силы — поле применяет силу, величина которой пропорциональна электрическому заряду и расстоянию.
По умолчанию организации физики и системы частиц не имеют никакого электрического заряда, таким образом, они незатронуты электрическими и магнитными полями. Используйте
charge
свойство организации физики илиparticleCharge
свойство системы частиц для добавления основанного на заряде поведения.Когда поле
strength
значение положительно (значение по умолчанию), это притягивает организации, заряд которых отрицателен и отражает организации, заряд которых положителен. Для инвертирования этого поведения установите полеstrength
свойство к отрицательной величине.Значение по умолчанию
falloffExponent
значение для электрического поля2.0
, указание, что эффект поля уменьшается с квадратом его расстояния от его центра.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, притягивающее или отражающее объекты на основе их электрического заряда, скорости и расстояния от оси поля.
Объявление
Swift
class func magneticField() -> SCNPhysicsField
Objective C
+ (SCNPhysicsField *)magneticField
Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Используйте этот тип поля, чтобы заставить объекты вести себя по-другому от друг друга, когда они вводят область, или сделать поведение объекта отличающимся от его массы базировало поведение. Магнитное поле ведет себя согласно второй части уравнения силы Лоренца, моделируя реальные электромагнитные силы — поле применяет силу, определенную векторным произведением вектора скорости объекта и вектора магнитного поля в расположении объекта с величиной, пропорциональной электрическому заряду объекта.
По умолчанию организации физики и системы частиц не имеют никакого электрического заряда, таким образом, они незатронуты электрическими и магнитными полями. Используйте
charge
свойство организации физики илиparticleCharge
свойство системы частиц для добавления основанного на заряде поведения.Когда поле
strength
значение положительно (значение по умолчанию), векторы магнитного поля циркулируют против часовой стрелки относительно поляdirection
вектор. (Т.е. магнитное поле моделирует реальное магнитное поле, создаваемое током в проводе, ориентированном в направлении поля.), Чтобы заставить полевые векторы циркулировать по часовой стрелке, установите полеstrength
свойство к отрицательной величине.Значение по умолчанию
falloffExponent
значение для магнитного поля2.0
, указание, что эффект поля уменьшается с квадратом расстояния от его центра.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Создает поле, выполняющее указанный блок для определения силы, поле применяется к каждому объекту в своей области эффекта.
Объявление
Swift
class func customFieldWithEvaluationBlock(_
block
: SCNFieldForceEvaluator) -> SCNPhysicsFieldObjective C
+ (SCNPhysicsField *)customFieldWithEvaluationBlock:(SCNFieldForceEvaluator)
block
Параметры
block
Блок, который SceneKit выполняет для каждого объекта в области поля эффекта. Посмотрите
SCNFieldForceEvaluator
.Возвращаемое значение
Объект поля физики. Для использования поля в сцене присоедините его к
physicsField
свойствоSCNNode
объект.Обсуждение
Для пользовательских полей физики SceneKit игнорирует
direction
,strength
,falloffExponent
, иminimumDistance
свойства. Вместо этого SceneKit вызывает Ваш блок для определения направления и величины силы для применения к каждой организации физики или частице в области поля эффекта.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
полустепень полустепень
СвойствоРасположение, отмечающее конец области поля эффекта.
Обсуждение
Для определения области поля эффекта используйте
position
свойство узла, содержащего поле и полеhalfExtent
свойство. Центр области эффекта является позицией узла. Полустепень, радиус-вектор в пространстве локальной координаты узла, содержащего поле, отмечает один угол поля, и отрицание вектора полустепени отмечает противоположный угол поля. Например, если позиция узла является вектором{2.0, 2.0, 2.0}
и это содержит поле физики, полустепень которого является вектором{0.5, 0.5, 0.5}
, областью поля эффекта является поле, расширяющееся от1.5
к2.5
вдоль каждой оси системы координат сцены.По умолчанию областью поля эффекта является внутренняя часть этой формы поля. Используйте
usesEllipsoidalExtent
свойство, чтобы вместо этого сделать область эффекта эллипсоидом ограниченный этим полем. Используйтеscope
свойство, чтобы выбрать, является ли областью эффекта внутренняя часть или внешний вид поля (или эллипсоид).Полустепень по умолчанию является вектором
{INFINITY, INFINITY, INFINITY}
, указание, что поле влияет на организации, расположенные где угодно в сцене.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Область, затронутая полем, любая внутренняя или внешняя часть его область.
Объявление
Swift
var scope: SCNPhysicsFieldScope
Objective C
@property(nonatomic) SCNPhysicsFieldScope scope
Обсуждение
Во-первых, определите область поля с помощью
halfExtent
свойство иposition
свойство узла, содержащего поле. Затем используйтеscope
свойство, чтобы выбрать, является ли областью поля эффекта внутренняя часть области (значение по умолчанию) или все пространство вне области.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Булево значение, определяющее, формируется ли область поля эффекта как поле или эллипсоид.
Объявление
Swift
var usesEllipsoidalExtent: Bool
Objective C
@property(nonatomic) BOOL usesEllipsoidalExtent
Обсуждение
Если это значение
NO
false
(значение по умолчанию), областью поля эффекта является область формы поля пространства, определенногоhalfExtent
свойство иposition
свойство узла, содержащего поле.Если это значение
YES
true
, областью поля эффекта является эллипсоид, ограниченный этой областью формы поля. Т.е. если все компоненты вектора полустепени равны, поле имеет сферическую область эффекта.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Смещение центра поля в его области эффекта.
Обсуждение
Некоторые типы полей применяют силы, величина которых относительно расстояния между объектом и центром поля. (Для получения дополнительной информации на каждом типе поля, посмотрите методы, перечисленные в Создании Полей Физики.) Изменение смещения изменяет эффекты этих типов поля.
С вектором смещения по умолчанию
{0, 0, 0}
, центр поля является центром своей области эффекта.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
направление направление
СвойствоНаправленная ось поля.
Обсуждение
Некоторые типы полей применяют силы, направление которых или величина относительно оси. (Для получения дополнительной информации на каждом типе поля, посмотрите методы, перечисленные в Создании Полей Физики.) Изменение направления изменяет эффекты этих типов поля.
Направление по умолчанию является вектором
{0, -1, 0}
. С этим направлением, например, линейные поля силы тяжести, сила которых является положительными объектами причины обрушиться «вниз» направление пространства сцены.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Множитель для силы, что поле применяется к объектам в своей области эффекта.
Обсуждение
Каждый тип поля физики определяет свое собственное поведение для значений силы. Для получения дополнительной информации посмотрите методы, перечисленные в Создании Полей Физики.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
falloffExponent falloffExponent
СвойствоЭкспонента, определяющая, как сила поля уменьшается с расстоянием.
Объявление
Swift
var falloffExponent: CGFloat
Objective C
@property(nonatomic) CGFloat falloffExponent
Обсуждение
Когда SceneKit вычисляет силу, которая будет применена полем, это ослабляет эффект поля путем умножения с выражением
pow(distance - minRadius, -falloff)
. Если экспонента падения конъюнктуры больше, чем нуль, эффект поля более силен на соседних организациях, чем на организациях дальше от его расположения.Экспонента падения конъюнктуры по умолчанию варьируется типом поля. Для получения дополнительной информации посмотрите методы, перечисленные в Создании Полей Физики.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
minimumDistance minimumDistance
СвойствоМинимальное значение для основанных на расстоянии эффектов.
Объявление
Swift
var minimumDistance: CGFloat
Objective C
@property(nonatomic) CGFloat minimumDistance
Обсуждение
Это свойство определяет начало области падения конъюнктуры поля. На расстояниях меньше, чем минимум эффект поля в полной силе. На больших расстояниях эффект поля уменьшается на основе значения
falloffExponent
свойство. Минимальное расстояние по умолчанию является очень маленьким (но ненулевой) значение.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Булево значение, определяющее, включен ли эффект поля.
Объявление
Swift
var active: Bool
Objective C
@property(nonatomic, getter=isActive) BOOL active
Обсуждение
Если это значение
NO
false
, поле не применяет силы к организациям физики в ее области эффекта. Значение по умолчаниюYES
true
.Используйте это свойство, например, для включения и выключения полей как механика геймплея.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
монопольный монопольный
СвойствоБулево значение, определяющее, переопределяет ли поле другие поля, чьи области эффекта это перекрывает.
Объявление
Swift
var exclusive: Bool
Objective C
@property(nonatomic, getter=isExclusive) BOOL exclusive
Обсуждение
Если это значение
YES
true
и организация физики в области этого поля, SceneKit игнорирует эффекты всех других полей, которые могли бы иначе влиять на организацию. Значение по умолчаниюNO
false
.Если Вы устанавливаете это свойство в
YES
true
на многократных полях в сцене не должны накладываться их области. Если они делают, результаты не определены.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
categoryBitMask categoryBitMask
СвойствоМаска, определяющая, которому принадлежат категории это поле физики.
Объявление
Swift
var categoryBitMask: Int
Objective C
@property(nonatomic) NSUInteger categoryBitMask
Обсуждение
Чтобы определить, влияет ли поле на организацию физики, SceneKit выполняет поразрядную операцию И на битовой маске категории поля и организация
categoryBitMask
свойство. Если результатом является ненулевое значение, SceneKit вычисляет и применяет силу поля на организации. Определить, влияет ли поле на частицы, порожденныеSCNParticleSystem
объект, SceneKit выполняет ту же проверку с помощьюcategoryBitMask
свойство узла, содержащего систему частиц.Используйте это свойство для создания полей, влияющих только на определенные организации в сцене. Сокращение количества организаций, затронутых полями, может также улучшить производительность моделирования.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
Типы данных
-
Подпись для блока, который SceneKit вызывает для определения эффекта пользовательского поля на объекте.
Объявление
Swift
typealias SCNFieldForceEvaluator = (SCNVector3, SCNVector3, Float, Float, NSTimeInterval) -> SCNVector3
Objective C
typedef SCNVector3 (^SCNFieldForceEvaluator)(SCNVector3 position, SCNVector3 velocity, float mass, float charge, NSTimeInterval time);
Обсуждение
Вы используете этот тип блока для создания пользовательского поля физики с
customFieldWithEvaluationBlock:
метод. SceneKit вызывает Ваш блок один раз для каждого объекта в области поля эффекта на каждом шаге моделирования физики.Блок берет следующие параметры:
position
Позиция объекта, затронутого полем, в пространстве локальной координаты узла, содержащего поле.
velocity
Скорость объекта, затронутого полем, относительно пространства локальной координаты узла, содержащего поле.
mass
Масса объекта затронута полем. (См.
mass
свойство для организаций физики иparticleMass
свойство для систем частиц.)charge
Электрический заряд объекта затронут полем. (См.
charge
свойство для организаций физики иparticleCharge
свойство для систем частиц.)time
Прошедшее время, в секундах, начиная с последнего шага моделирования.
Ваш блок использует эти параметры, чтобы вычислить и возвратиться
SCNVector3
вызовите вектор, который SceneKit тогда применяется к объекту, затронутому полем.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Опции для определения области пространства, затронутого полем физики, используемым
scope
свойство.Объявление
Swift
enum SCNPhysicsFieldScope : Int { case InsideExtent case OutsideExtent }
Objective C
typedef enum : NSInteger { SCNPhysicsFieldScopeInsideExtent, SCNPhysicsFieldScopeOutsideExtent, } SCNPhysicsFieldScope;
Константы
-
InsideExtent
SCNPhysicsFieldScopeInsideExtent
Эффект поля применяется только к объектам в области пространства, определенного его позицией и степенью.
Доступный в OS X v10.10 и позже.
-
OutsideExtent
SCNPhysicsFieldScopeOutsideExtent
Эффект поля применяется только к объектам вне области пространства, определенного его позицией и степенью.
Доступный в OS X v10.10 и позже.
Обсуждение
Вы определяете область пространства для поля с помощью позиции узла, содержащего поле и поле
halfExtent
иusesEllipsoidalExtent
свойства. Затем Вы используетеscope
свойство, чтобы выбрать, является ли областью поля эффекта внутренняя часть этой области или является ли это полнотой пространства сцены, исключая эту область.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-