Угол частицы (или ориентация) не зависит от его направления движения. < /P>
< /blockquote>
и документация для .free < /code> говорит: < /p>
particle orentations не зависит; Они могут свободно вращаться на всех осях.
Код: Выделить всё
let particleSystem = SCNParticleSystem()
particleSystem.particleImage = UIImage(named: "circle.png")
particleSystem.emitterShape = SCNSphere(radius: 0.01)
particleSystem.birthLocation = .surface
particleSystem.birthDirection = .surfaceNormal
particleSystem.birthRate = 0.4
particleSystem.acceleration = SCNVector3(0, 0, 0)
// Make particles grow over time
let sizeController = SCNParticlePropertyController()
let sizeAnimation = CAKeyframeAnimation(keyPath: "particleSize")
sizeAnimation.values = [0.1, 0.4]
sizeAnimation.keyTimes = [0.0, 1.0]
sizeController.animation = sizeAnimation
particleSystem.propertyControllers = [.size: sizeController]
particleSystem.orientationMode = .free
let pNode = SCNNode()
pNode.addParticleSystem(particleSystem)
rootNode.addChildNode(pNode)
На этом скриншоте вы можете увидеть белые концентрические круги вокруг часов (это частицы), указывая на в направлении x сильные. Важно отметить, что я сделал этот скриншот под крутым углом камеры в симуляторе iOS. Вы можете видеть, что частицы не заблокированы для обращения к камере. Похоже, что свойства не делают эту работу. < /P>
То, что я попробовал < /h2>
Я попытался вращать родительский узел, в которой находится система частиц. Она не имеет эффекта, независимо от того, какая кардинальность я выбираю.
Код: Выделить всё
pNode.eulerAngles = SCNVector3(x: Float.pi / 2, y: 0, z: 0.0)
Код: Выделить всё
pNode.pivot = SCNMatrix4MakeRotation(Float.pi / 2, Float.pi / 2, 0, 0)
< /code>
Я попробовал анимировать свойство частицы угла и вращения. Это ничего не делает, и частицы даже не вращаются, и остаются запертыми в направлении X. При запуске этого кода тоже нет зарегистрированных ошибок.let rotationController = SCNParticlePropertyController()
rotationController.inputMode = .overLife
let rotationAnimation = CAKeyframeAnimation(keyPath: "rotationAxis")
rotationAnimation.values = [
SCNVector3(Float.pi / 2, 0, 0)
]
rotationAnimation.keyTimes = [0.0]
rotationController.animation = rotationAnimation
let angleController = SCNParticlePropertyController()
let angleAnim = CAKeyframeAnimation(keyPath: "angle")
angleAnim.values = [0, 360]
angleAnim.keyTimes = [0, 1]
angleController.animation = angleAnim
particleSystem.propertyControllers = [
.rotationAxis: rotationController,
.angle: angleController
]
Код: Выделить всё
rotationAnimation.values = [
NSValue(scnVector3: SCNVector3(0, Float.pi, 0))
]
//...
angleAnim.values = [NSNumber(value: Float.pi / 2), NSNumber(value: 0.0)]
Все эти попытки имеют эффект частицы, всегда обращающийся к тому же направлению, что и эффект часовой частицы, как показано ниже. В конце я хочу, чтобы круговые частицы сталкивались с тем же направлением, в котором указывают цилиндра. Как использовать .RotationAxis и .Angle , если это вообще возможно.
Подробнее здесь: https://stackoverflow.com/questions/796 ... ction-orie