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(animationanimation: 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: SCNParticleInputModeObjective 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.1animation.toValue = 10.0let sizeController = SCNParticlePropertyController(animation: animation)sizeController.inputMode = .OverOtherPropertysizeController.inputProperty = SCNParticlePropertyVelocitysizeController.inputScale = 0.1particleSystem.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;Константы
-
OverLifeSCNParticleInputModeOverLifeЭффект контроллера на свойство частицы является функцией времени начиная с рождения частицы.
Доступный в OS X v10.10 и позже.
-
OverDistanceSCNParticleInputModeOverDistanceЭффект контроллера на свойство частицы является функцией расстояния частицы от позиции указанного узла.
Используйте
inputOriginсвойство для указания узла для измерения расстояния от, иinputBiasиinputScaleсвойства для совершенствования отношения между диапазоном расстояний в диапазон входных значений для анимации контроллера.Доступный в OS X v10.10 и позже.
-
OverOtherPropertySCNParticleInputModeOverOtherPropertyЭффект контроллера на свойство частицы является функцией другого из свойств частицы.
Используйте
inputPropertyсвойство для указания входного свойства, иinputBiasиinputScaleсвойства для совершенствования отношения между диапазоном значений свойств в диапазон входных значений для анимации контроллера.Доступный в OS X v10.10 и позже.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
