SKEmitterNodeまとめ(Swift)

botman_blue iOS

Xcode-13.1

はじめに

SpriteKit で炎などのパーティクル表示をする際には SKEmitterNode を使います。コードで設定もできるのですが下記のように Xcode のエディタを使えばプレビューを見ながら設定できます。

emitter

今回はこちらの設定値についてのまとめです。

書いてから見つけたけどこの記事がわかりやすかったです。。。
【SpriteKit】爆発や雪などの表現ができる「Particle File」について

Name

たぶん SKNode.name?(入力して Enter 押すとクリアされるのでよくわからなかった)

Background

Xcode プレビューの背景色(実行時には関係ないやつ)。

Particles

パーティクル設定。

Texture

パーティクルとして使用するテクスチャ。

できるだけ小さくて単純な画像がいい模様。

SKEmitterNode.particleTexture

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。

SKEmitterNode.emissionAngle

Range

パーティクルが放射される向きの乱数範囲。デフォルトは 0.0。

SKEmitterNode.emissionAngleRange

Start を 90 Range を 180 にすると 0 ~ 180 の値がランダムに設定される。

Speed

パーティクルが放射される速さ(ポイント/秒)設定。

Start

パーティクルの放射スピード。デフォルトは 0.0。

SKEmitterNode.particleSpeed

Range

パーティクルの放射スピードの乱数範囲。デフォルトは 0.0。

SKEmitterNode.particleSpeedRange

Start を 100 Range を 50 にすると 75 ~ 125 の値がランダムに設定される。

Acceleration

パーティクルの加速度設定。

X

x 方向の加速度。デフォルトは 0.0。

SKEmitterNode.xAcceleration

Y

y 方向の加速度。デフォルトは 0.0。

SKEmitterNode.yAcceleration

Alpha

パーティクルの透明度設定。

Start

パーティクルの透明度。デフォルトは 1.0。

SKEmitterNode.particleAlpha

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。

SKEmitterNode.particleScale

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

バーの左から右に色が変化する。

color_ramp

上記のように設定すると下記のようになります。

color_ramp

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(影響受けない)。

SKEmitterNode.fieldBitMask

Custom Shader

たぶん下記の値?

SKEmitterNode.shader

おわりに

とりあえずなんとなく設定方法はわかりました!SKEmitterNode を使えばこんなこともできるようになります!

ex

参考

コメント

タイトルとURLをコピーしました