SCNParticlePropertyController
SCNParticlePropertyController
возразите использованию Базовая семантика Анимации для анимации свойства частиц, представленных SCNParticleSystem
объект. Используйте контроллеры свойства частицы для изменения свойств отдельных частиц в системе в течение долгого времени. Например, путем соединения анимации ключевых кадров с системой частиц SCNParticlePropertyColor
свойство, можно создать эффект пламени с частицами, изменяющимися от синего до белого к оранжевому, когда они повышаются.
Контроллер свойства частицы анимирует свойство отдельных частиц, представленных системой частиц. Для сравнения, неявно или явно анимирующие свойства a SCNParticleSystem
возразите влияет на систему в целом. Считайте анимацию ключевых кадров цветов описанной выше — при применении этой анимации непосредственно к системе частиц вместо того, чтобы использовать контроллер свойства все частицы, представленные системным изменением, окрашивают вместе вместо каждого изменяющегося цвета, когда это повышается.
Базовые анимации Анимации в SceneKit, обычно анимационном изменение в свойстве как функция времени. По умолчанию контроллеры свойства анимируют свойство частицы этот путь. Однако путем изменения inputMode
свойство можно также создать анимации, анимирующие свойство частицы как функцию расстояния от указанного узла или значения другого свойства частицы. Например, можно использовать эту опцию заставить частицы изменить цвет, как они убыстряются и замедляются.
Для получения дополнительной информации о системах частиц и свойствах частицы, посмотрите Ссылку класса SCNParticleSystem.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSCopying
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Создает контроллер свойства частицы с указанной Базовой анимацией Анимации.
Объявление
Swift
convenience init(animation
animation
: CAAnimation)Objective C
+ (instancetype)controllerWithAnimation:(CAAnimation *)
animation
Параметры
animation
Базовый Объект Animation, указывающий поведение анимации свойства. Не должен быть ноль.
Можно использовать отличающийся
CAAnimation
подклассы для анимации эффектов по-разному. Например, aCABasicAnimation
экземпляр переходит свойство от одного значения до другого и aCAKeyframeAnimation
экземпляр переходит свойство через серию значений. Вы используете свойства объекта Animation, чтобы определить его кривую синхронизации, повторить режим и другие опции.SceneKit игнорирует
keyPath
,duration
, иrepeatCount
свойства этого объекта Animation.Возвращаемое значение
Новый контроллер свойства частицы.
Обсуждение
Устанавливать анимацию свойства частицы:
Создайте a
CAAnimation
определение объекта, как свойство каждой частицы в системе изменяется в течение долгого времени.Создайте контроллер свойства частицы с помощью
controllerWithAnimation:
метод.Присоедините контроллер свойства к системе частиц с помощью
propertyControllers
словарь, выбирая ключ перечислил в Ключах Свойства Частицы для идентификации свойства частицы, которое он анимирует.
Например, следующие кодовые наборы контроллер для анимации размеров частиц:
Swift
// 1. Create and configure an animation object.
let animation = CAKeyframeAnimation()
animation.values = [ 0.1, 1.0, 3.0, 0.5 ]
// 2. Create a property controller from the animation object.
let sizeController = SCNParticlePropertyController(animation: animation)
// 3. Assign the controller to a particle system, associating it with a particle property.
particleSystem.propertyControllers = [ SCNParticlePropertySize: sizeController ]
Objective C
// 1. Create and configure an animation object.
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
animation.values = @[ @0.1, @1.0, @3.0, @0.5 ];
// 2. Create a property controller from the animation object.
SCNParticlePropertyController *controller =
[SCNParticlePropertyController controllerWithAnimation:animation];
// 3. Assign the controller to a particle system, associating it with a particle property.
particleSystem.propertyControllers = @{ SCNParticlePropertySize: controller };
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Базовый Объект Animation, определяющий поведение анимации свойства.
Объявление
Swift
var animation: CAAnimation!
Objective C
@property(nonatomic, retain) CAAnimation *animation
Обсуждение
Можно использовать отличающийся
CAAnimation
подклассы для анимации эффектов по-разному. Например, aCABasicAnimation
переходит свойство от одного значения до другого и aCAKeyframeAnimation
переходит свойство через серию значений. Вы используете свойства объекта Animation, чтобы определить его кривую синхронизации, повторить режим и другие опции.SceneKit игнорирует
keyPath
свойство этого объекта Animation. Вместо этого когда Вы присоединяете контроллер свойства к системе частицpropertyControllers
словарь, используйте один из ключей, перечисленных в Ключах Свойства Частицы для указания, какое свойство частицы это анимирует. SceneKit также игнорирует анимациюduration
иrepeatCount
свойства. Вместо этого контроллер определяет поведение входного значения анимации.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Режим, определяющий входные значения для анимации контроллера свойства.
Объявление
Swift
var inputMode: SCNParticleInputMode
Objective C
@property(nonatomic) SCNParticleInputMode inputMode
Обсуждение
С режимом ввода по умолчанию
SCNParticleInputModeOverLife
, синхронизация анимации для каждой частицы основывается на продолжительности жизни частицы. Например, рассмотрите анимацию, сокращающую непрозрачность каждой частицы от1.0
к0.0
. По умолчанию частица начинается с полной непрозрачности и сокращает ее непрозрачность полностью к концу ее продолжительности жизни (независимо от позиции частицы и других свойств). Измените режим ввода для создания непрозрачности каждой частицы функцией различного измерения, такого как расстояние от указанной точки или одного из других свойств частицы. Для получения дополнительной информации посмотритеSCNParticleInputMode
.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Смещение для добавления к входному значению анимации контроллера.
Обсуждение
Используйте это свойство и
inputScale
свойство, чтобы предварительно обработать входные значения к анимации контроллера. Например, если Вы используетеSCNParticleInputModeOverDistance
опция анимировать непрозрачность частицы как функцию ее расстояния от указанной точки, смещение указывает минимальное расстояние в который анимацияfromValue
свойство или первое значение ключевого кадра вступают в силу.Значение по умолчанию
0.0
, отъезд входного значения к неизменной анимации. Диапазон возможных значений зависит от анимации контроллера.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
inputScale inputScale
СвойствоФактор для умножения входного значения анимации контроллера.
Обсуждение
Используйте это свойство и
inputBias
свойство, чтобы предварительно обработать входные значения к анимации контроллера. Например, Вы используетеSCNParticleInputModeOverDistance
опция анимировать непрозрачность частицы как функцию ее расстояния от указанной точки, масштаб указывает диапазон расстояний, по которым вступает в силу анимация.Значение по умолчанию
1.0
, отъезд входного значения к неизменной анимации. Диапазон возможных значений зависит от анимации контроллера.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
inputOrigin inputOrigin
СвойствоУзел, расстояние которого до каждой частицы обеспечивает входные значения для анимации контроллера.
Объявление
Swift
weak var inputOrigin: SCNNode!
Objective C
@property(nonatomic, weak) SCNNode *inputOrigin
Обсуждение
Это свойство применяется только когда контроллер
inputMode
значениеSCNParticleInputModeOverDistance
. При выборе того режима ввода значение этого свойства должно быть узлом в сцене, содержащей систему частиц; иначе, SceneKit игнорирует это свойство. Значение по умолчаниюnil
.SceneKit вычисляет расстояние между этим узлом
position
вектор (преобразованный в пространство мировой координаты сцены) и каждая частица и затем использует получающееся значение в качестве ввода к анимации контроллера. Например, если Вы используете эту опцию анимировать непрозрачность частицы от1.0
к0.0
, все частицы вне определенного расстояния отinputOrigin
узел полностью прозрачен — независимо от любой случайной скорости или изменений направления в достижении того расстояния.Для совершенствования отношения между диапазоном расстояний и диапазоном входных значений для анимации контроллера используйте
inputBias
иinputScale
свойства.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
inputProperty inputProperty
СвойствоСвойство частицы, обеспечивающее входные значения для этой анимации контроллера свойства.
Объявление
Swift
var inputProperty: String!
Objective C
@property(nonatomic, copy) NSString *inputProperty
Обсуждение
Это свойство применяется только когда контроллер
inputMode
значениеSCNParticleInputModeOverOtherProperty
.Используйте эту опцию анимировать одно свойство в ответ на изменения в одном из других свойств каждой частицы. Например, следующий код анимирует размер частиц как функцию их скорости, заставляя частицы стать больше, когда они перемещаются быстрее:
Swift
let animation = CABasicAnimation()
animation.fromValue = 0.1
animation.toValue = 10.0
let sizeController = SCNParticlePropertyController(animation: animation)
sizeController.inputMode = .OverOtherProperty
sizeController.inputProperty = SCNParticlePropertyVelocity
sizeController.inputScale = 0.1
particleSystem.propertyControllers = [ SCNParticlePropertySize: sizeController ]
Objective C
CABasicAnimation *animation = [CABasicAnimation animation];
animation.fromValue = @0.1;
animation.toValue = @10.0;
SCNParticlePropertyController *sizeController =
[SCNParticlePropertyController controllerWithAnimation:animation];
sizeController.inputMode = SCNParticleInputModeOverOtherProperty;
sizeController.inputProperty = SCNParticlePropertyVelocity;
sizeController.inputScale = 0.1;
particleSystem.propertyControllers = @{ SCNParticlePropertySize : sizeController };
Для совершенствования отношения между диапазоном значений свойств и диапазоном входных значений для анимации контроллера используйте
inputBias
иinputScale
свойства.При указании векторного свойства (такого как ускорение) как входное свойство SceneKit использует длину того вектора для входного значения.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Опции для входного значения анимации контроллера свойства, используемой
inputMode
свойство.Объявление
Swift
enum SCNParticleInputMode : Int { case OverLife case OverDistance case OverOtherProperty }
Objective C
typedef enum : NSInteger { SCNParticleInputModeOverLife, SCNParticleInputModeOverDistance, SCNParticleInputModeOverOtherProperty, } SCNParticleInputMode;
Константы
-
OverLife
SCNParticleInputModeOverLife
Эффект контроллера на свойство частицы является функцией времени начиная с рождения частицы.
Доступный в OS X v10.10 и позже.
-
OverDistance
SCNParticleInputModeOverDistance
Эффект контроллера на свойство частицы является функцией расстояния частицы от позиции указанного узла.
Используйте
inputOrigin
свойство для указания узла для измерения расстояния от, иinputBias
иinputScale
свойства для совершенствования отношения между диапазоном расстояний в диапазон входных значений для анимации контроллера.Доступный в OS X v10.10 и позже.
-
OverOtherProperty
SCNParticleInputModeOverOtherProperty
Эффект контроллера на свойство частицы является функцией другого из свойств частицы.
Используйте
inputProperty
свойство для указания входного свойства, иinputBias
иinputScale
свойства для совершенствования отношения между диапазоном значений свойств в диапазон входных значений для анимации контроллера.Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-