【发布时间】:2019-03-29 06:21:03
【问题描述】:
我正在用 SceneKit 做一个游戏,整个游戏的大小可以改变,即所有节点链接到的参考节点(GameRootNode)的大小可以改变,然后所有节点的大小在发生时都会相应改变.
说到粒子系统,它变得越来越棘手。到目前为止,我必须为游戏可以具有的每个极端尺寸范围做一个粒子系统,并使用粒子系统的属性来调整效果。结果不好。
所以我尝试使用 2 种方法来缩放粒子系统:
将
BulletNode附加到GameRootNode,将粒子系统附加到BulletNode,然后缩放GameRootNode(如下所述)缩放
GameRootNode,创建BulletNode,将粒子系统附加到BulletNode,然后将BulletNode缩放到与GameRootNode相同的比例
在这两种情况下,粒子系统都保持其原始大小(即在 SceneKit 编辑器中定义的大小)
有没有办法缩放粒子系统?
GameRootNode = SCNNode()
let Sequence = SCNAction.sequence([SCNAction.scale(to: VCOfScene.VCPlayAR.ScalingFactor, duration: 0),
SCNAction.move(to: SCNVector3.init(-Float(kNbColonnesLevel) / 2 * Float(VCOfScene.VCPlayAR.ScalingFactor),
0,
-Float(kNbLignesLevel) / 2 * Float(VCOfScene.VCPlayAR.ScalingFactor)),
duration: 0)])
GameRootNode.runAction(Sequence)
BulletNode = SCNNode(geometry: Level3D.Bullet.geometry)
BulletNode.position = Position.PositionToVector()
BulletNode.name = ProjectileImageName + String(ProjectileID)
let BulletShape = SCNParticleSystem(named: "Fireball.scnp", inDirectory: nil)!
BulletShape.emittingDirection = DirectionBullet
BulletShape.particleColor = Character.Color
BulletNode.addParticleSystem(BulletShape)
GameRootNode.addChildNode(BulletNode)
GameRootNode.runAction(Sequence)
【问题讨论】:
标签: swift scenekit particle-system scnnode