はじめに
SpriteKit で炎などのパーティクル表示をする際には SKEmitterNode を使います。コードで設定もできるのですが下記のように Xcode のエディタを使えばプレビューを見ながら設定できます。
今回はこちらの設定値についてのまとめです。
書いてから見つけたけどこの記事がわかりやすかったです。。。
【SpriteKit】爆発や雪などの表現ができる「Particle File」について
Name
たぶん SKNode.name?(入力して Enter 押すとクリアされるのでよくわからなかった)
Background
Xcode プレビューの背景色(実行時には関係ないやつ)。
Particles
パーティクル設定。
Texture
パーティクルとして使用するテクスチャ。
できるだけ小さくて単純な画像がいい模様。
Emitter
パーティクルのライフサイクル設定。
Birthrate
1 秒あたりに作成されるパーティクルの数。デフォルトは 0.0。
SKEmitterNode.particleBirthRate
Maximum
作成するパーティクルの最大数。デフォルトは 0(無制限)。0 以外の値を設定するとその数のパーティクルが生成されると停止する。
SKEmitterNode.numParticlesToEmit
Lifetime
パーティクルの寿命設定。
Start
パーティクルの平均寿命 (秒単位)。デフォルトは 0.0。
SKEmitterNode.particleLifetime
Range
パーティクルの寿命の乱数範囲。デフォルトは 0.0。
SKEmitterNode.particleLifetimeRange
Start を 5 Range を 2 にすると 4 ~ 6 の値がランダムに設定される。
Position Range
パーティクルが生成される座標の範囲設定。
SKEmitterNode.particlePositionRange
X
x 方向の範囲。デフォルトは 0.0。
Y
y 方向の範囲。デフォルトは 0.0。
Position Z
z 方向の範囲。デフォルトは 0.0。
SKEmitterNode.particleZPosition
Angle
パーティクルが放射される向き(度)設定。
(0 で右、90 で上に移動する)
Start
パーティクルが放射される向き。デフォルトは 0.0。
Range
パーティクルが放射される向きの乱数範囲。デフォルトは 0.0。
SKEmitterNode.emissionAngleRange
Start を 90 Range を 180 にすると 0 ~ 180 の値がランダムに設定される。
Speed
パーティクルが放射される速さ(ポイント/秒)設定。
Start
パーティクルの放射スピード。デフォルトは 0.0。
Range
パーティクルの放射スピードの乱数範囲。デフォルトは 0.0。
SKEmitterNode.particleSpeedRange
Start を 100 Range を 50 にすると 75 ~ 125 の値がランダムに設定される。
Acceleration
パーティクルの加速度設定。
X
x 方向の加速度。デフォルトは 0.0。
Y
y 方向の加速度。デフォルトは 0.0。
Alpha
パーティクルの透明度設定。
Start
パーティクルの透明度。デフォルトは 1.0。
Range
透明度の乱数範囲。デフォルトは 0.0。
SKEmitterNode.particleAlphaRange
Start を 0.7 Range を 0.6 にすると 0.4 ~ 1.0 の値がランダムに設定される。
Speed
透明度に毎秒加算されていく値。デフォルトは 0.0。
SKEmitterNode.particleAlphaSpeed
Start を 1.0 Range を 0.0 Speed を -1.0 にすると 1 秒後 0.0 になる。
Scale
パーティクルの拡大率設定。
Start
パーティクルの拡大率。デフォルトは 1.0。
Range
拡大率の乱数範囲。デフォルトは 0.0。
SKEmitterNode.particleScaleRange
Start を 1.0 Range を 1.0 にすると 0.5 ~ 1.5 の値がランダムに設定される。
Speed
拡大率に毎秒加算されていく値。デフォルトは 0.0。
SKEmitterNode.particleScaleSpeed
Start を 1.0 Range を 0.0 Speed を 1.0 にすると 1 秒後 2.0 になる。
Rotation
パーティクルの角度(度)設定。
Start
パーティクルの角度。デフォルトは 0.0。
SKEmitterNode.particleRotation
Range
角度の乱数範囲。デフォルトは 0.0。
SKEmitterNode.particleRotationRange
Start を 90 Range を 90 にすると 45 ~ 135 の値がランダムに設定される。
Speed
角度に毎秒加算されていく値。デフォルトは 0.0。
SKEmitterNode.particleRotationSpeed
Start を 0 Range を 0 Speed を 45 にすると 1 秒後 45 になる。
Color Blend
色のブレンド方法設定。
Factor
テクスチャとパーティクルの色の混ぜ具合?値は 0.0 ~ 1.0 でデフォルトは 0.0。
SKEmitterNode.particleColorBlendFactor
0.0 はパーティクルの色が無視されテクスチャの色がそのまま表示される。
Range
Factor の乱数範囲。デフォルトは 0.0。
SKEmitterNode.particleColorBlendFactorRange
Start を 0.5 Range を 0.2 にすると 0.4 ~ 0.6 の値がランダムに設定される。
Speed
Factor に毎秒加算されていく値。デフォルトは 0.0。
SKEmitterNode.particleColorBlendFactorSpeed
Start を 0.5 Range を 0.0 Speed を 0.5 にすると 1 秒後 1.0 になる。
Color Ramp
パーティクルのライフサイクル中に色を変更させるやつ?デフォルトは nil。
SKEmitterNode.particleColorSequence
バーの左から右に色が変化する。
上記のように設定すると下記のようになります。
nil 以外を設定すると下記の値は無視される。
- particleColor
- particleColorAlphaRange
- particleColorRedRange
- particleColorGreenRange
- particleColorBlueRange
- particleColorAlphaSpeed
- particleColorRedSpeed
- particleColorGreenSpeed
- particleColorBlueSpeed
バーの操作。
- バーをクリックで色を追加
- 下にドラッグすると削除
Blend Mode
ブレンドモード(レイヤーを重ねるときの設定?)。デフォルトは SKBlendMode.alpha。
SKEmitterNode.particleBlendMode
以下の値がある。
- Alpha
アルファ値を乗算 - Add
加算 - Subtract
減算 - Multiply
乗算(暗くなる) - MultiplyX2
乗算を 2 倍?(Multiply より暗くなる) - Screen
スクリーン(明るくなる) - Replace
ブレンドしない
Field Mask
フィールドの影響を受けるかどうか。デフォルトは 0x00000000(影響受けない)。
Custom Shader
たぶん下記の値?
おわりに
とりあえずなんとなく設定方法はわかりました!SKEmitterNode を使えばこんなこともできるようになります!
参考
- Creating a SpriteKit Particle Emitter in Xcode
- SpriteKitで使用できるパーティクルのパラメータ一覧
- 【SpriteKit】爆発や雪などの表現ができる「Particle File」について
コメント