ParticleEmitter

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

A パーティクルエミッター は、世界にカスタマイズ可能な 2D パーティクルを発射する特別なオブジェクトです。パーティクルを放射してレンダリングするには、そのパーツ内の BasePart または Attachment に親属する必要があります。親に BasePart になると、パーツの境界ボックス内または 形状 内でパーティクルがランダムにスポーンします;親に Attachment になると、付属の位置からパーティクルがスポーンします。

エミッタが非ゼロの で自動的に粒子を放出するか、 メソッドが呼び出されると手動で放出されます。非ゼロの Speed で、粒子は ShapeInOut プロパティに応じて、外向きまたは内向きに動作します。

デフォルトでは、パーティクルがカメラに向きますが、Orientation を変更して、パーティクルの速度を尊重することもできます。

パーティクルの Lifetime の間、ColorSize に従って外観を変更できます。彼らの動作は、Drag および Acceleration プロパティに従って時間を変更することができ、また、LockedToPart または非ゼロの VelocityInheritance を持っているときに親が移動するように移動することもできます。

パーティクルエミッターの作成とカスタマイズについて詳しくは、パーティクルエミッター を参照してください。

コードサンプル

This rather lengthy code sample shows how every property of a ParticleEmitter can be set, including NumberRange, NumberSequence and ColorSequence properties. Below is how the ParticleEmitter should look after every property is set. Try playing around with the different properties to customize how the effect looks!

Creating a Particle Emitter from Scratch

local emitter = Instance.new("ParticleEmitter")
-- Number of particles = Rate * Lifetime
emitter.Rate = 5 -- Particles per second
emitter.Lifetime = NumberRange.new(1, 1) -- How long the particles should be alive (min, max)
emitter.Enabled = true
-- Visual properties
emitter.Texture = "rbxassetid://1266170131" -- A transparent image of a white ring
-- For Color, build a ColorSequence using ColorSequenceKeypoint
local colorKeypoints = {
-- API: ColorSequenceKeypoint.new(time, color)
ColorSequenceKeypoint.new(0, Color3.new(1, 1, 1)), -- At t=0, White
ColorSequenceKeypoint.new(0.5, Color3.new(1, 0.5, 0)), -- At t=.5, Orange
ColorSequenceKeypoint.new(1, Color3.new(1, 0, 0)), -- At t=1, Red
}
emitter.Color = ColorSequence.new(colorKeypoints)
local numberKeypoints = {
-- API: NumberSequenceKeypoint.new(time, size, envelop)
NumberSequenceKeypoint.new(0, 1), -- At t=0, fully transparent
NumberSequenceKeypoint.new(0.1, 0), -- At t=.1, fully opaque
NumberSequenceKeypoint.new(0.5, 0.25), -- At t=.5, mostly opaque
NumberSequenceKeypoint.new(1, 1), -- At t=1, fully transparent
}
emitter.Transparency = NumberSequence.new(numberKeypoints)
emitter.LightEmission = 1 -- When particles overlap, multiply their color to be brighter
emitter.LightInfluence = 0 -- Don't be affected by world lighting
-- Speed properties
emitter.EmissionDirection = Enum.NormalId.Front -- Emit forwards
emitter.Speed = NumberRange.new(0, 0) -- Speed of zero
emitter.Drag = 0 -- Apply no drag to particle motion
emitter.VelocitySpread = NumberRange.new(0, 0)
emitter.VelocityInheritance = 0 -- Don't inherit parent velocity
emitter.Acceleration = Vector3.new(0, 0, 0)
emitter.LockedToPart = false -- Don't lock the particles to the parent
emitter.SpreadAngle = Vector2.new(0, 0) -- No spread angle on either axis
-- Simulation properties
local numberKeypoints2 = {
NumberSequenceKeypoint.new(0, 0), -- At t=0, size of 0
NumberSequenceKeypoint.new(1, 10), -- At t=1, size of 10
}
emitter.Size = NumberSequence.new(numberKeypoints2)
emitter.ZOffset = -1 -- Render slightly behind the actual position
emitter.Rotation = NumberRange.new(0, 360) -- Start at random rotation
emitter.RotSpeed = NumberRange.new(0) -- Do not rotate during simulation
-- Create an attachment so particles emit from the exact same spot (concentric rings)
local attachment = Instance.new("Attachment")
attachment.Position = Vector3.new(0, 5, 0) -- Move the attachment upwards a little
attachment.Parent = script.Parent
emitter.Parent = attachment

概要

プロパティ

  • 並列読み取り

    すべてのアクティブな粒子のグローバル軸加速を決定し、秒ごとにスタッドで計算されます。

  • 並列読み取り

    ParticleEmitter.LightInfluence が 0 のとき、エミッタから放出される光をスケールします。

  • 並列読み取り

    個々の寿命でアクティブな粒子の色を決定します。

  • 並列読み取り

    粒子が速度の半分を失う速度を決定しますが、指数関数的な崩壊です。

  • 粒子が放出するオブジェクトの面を決定します。

  • 並列読み取り

    粒子がエミッタから放出されるかどうかを決定します。

  • 並列読み取り

    フリップブックのテクスチャが秒ごとにどのくらい速くアニメーションするかを決定します。

  • 並列読み取り

    Texture がフリップブックに互換できない場合に表示するエラーメッセージ。

  • フリップブックテクスチャのレイアウトを決定します。None、Grid2x2、Grid4x4、または Grid8x8 である必要があります。

  • フリップブックアニメーションの種類を決定します。ループ、ワンショット、ピンポン、またはランダムでなければなりません。

  • 並列読み取り

    アニメーションが、パーティクルごとに選択されたランダムフレームで開始するか、フレームゼロから始めるかを決定します。

  • 並列読み取り

    新しく発行された粒子のランダムな年齢範囲を定義します。

  • 並列読み取り

    パーティクルの色が背後の色とどの程度ブレンドされるかを決定します。

  • 並列読み取り

    粒子が環境光にどれほど影響を受けるかを決定します。

  • 非表示
    複製されていません
    並列読み取り
  • 並列読み取り

    パーティクルが発射されている部品と一緒に剛性で動くかどうかを決定します。

  • パーティクルの向きを指定します。

  • 並列読み取り

    秒ごとに放出されるパーティクル数を決定します。

  • 並列読み取り

    放出された粒子の角速度の範囲を決定し、秒ごとに度で測定します。

  • 並列読み取り

    新しく放出された粒子の回転範囲を度数で決定します。

  • エミッタの形状を箱、球、円筒、またはディスクに設定します。

  • パーティクルが外向き、内向き、または両方の方向に発射するかどうかを設定します。

  • 並列読み取り

    円筒、ディスク、球、箱の形状から粒子放出を影響します。

  • パーティクル放出をボリュームまたは表面のみの放出に設定します。

  • 並列読み取り

    個々のパーティクルの寿命に対する世界サイズを決定します。

  • 並列読み取り

    新しい粒子が放出する速度のランダムな範囲 (最小から最大) を決定し、秒ごとのスタッドで測定します。

  • 並列読み取り

    パーティクルがランダムに放出される角度を決定し、度で測定します。

  • 並列読み取り

    粒子の非一貫的なスケーリングを許可し、彼らの寿命中に曲が制御されます。

  • Texture:ContentId
    並列読み取り

    パーティクルにレンダリングされる画像を決定します。

  • 並列読み取り

    パーティクル効果の速度を制御する 0 から 1 の値。

  • 並列読み取り

    個々の寿命で粒子の透明度を決定します。

  • 並列読み取り

    パーティクルが発射されるとき、親の速度のどの程度が継承されるかを決定します。

  • 並列読み取り

    放出された粒子が Workspace.GlobalWind ベクトルに従うかどうか。

  • 並列読み取り

    パーティクルの前方後方のレンダリング位置を決定し、パーティクルが上部/下部でレンダリングするものを制御します。

方法

  • Clear():()

    放出されたすべての粒子をクリアします。

  • Emit(particleCount : number):()

    指定された数の粒子を放出する。

プロパティ

Acceleration

並列読み取り

加速 プロパティは、パーティクルの Speed がライフタイムに変化する方法を決定します。グローバル Vector3 / Y / Z 軸の加速を決定するために **** を使用して定義され、秒ごとにスタッドで計算されます。変更されると、このプロパティは、現在および将来のエミッターによって放出されるすべての粒子に影響します。

加速度は、発射される粒子のベクトルポイントが反対の EmissionDirection にある場合、粒子を減速させます。そうでない場合、粒子を加速させます。

Brightness

並列読み取り

ParticleEmitter.LightInfluence が 0 のとき、エミッタから放出される光をスケールします。

並列読み取り

カラー プロパティは、個々のライフタイムにわたるすべてのアクティブな粒子の色を決定します。色は、レンダリング時に Texture に適用され、エミッターの Transparency とともにテクスチャアルファを使用します。エミッターに LightEmission 値が 0 より大きい場合、より暗い色で粒子がより透明に見えます。

このプロパティを変更すると、現在および将来のエミッターによって放出されるすべての粒子が変更されます。

このプロパティがグラデーション ColorSequence を使用すると、パーティクルの現在の色は、パーティクルの年齢と総寿命を使用して順列に線形インターポレーションで決定されます。たとえば、2秒前にパーティクルが生成され、4秒の寿命がある場合、色は ColorSequence を通過する 50% のものであることになります。

Drag

並列読み取り

ドラッグ プロパティは、個々のパーティクルが指数関数的に減速して半分の速度を失う秒速を決定します。ドラッグは、Speed から予想される速度をスケールし、親から継承された速度をVelocityInheritance から適用します。このプロパティをネガティブ値に設定すると、粒子の速度が指数関数的に増加します。

EmissionDirection

並列読み取り

エミッション方向 プロパティは、パーティクルが放出する親オブジェクトの面(Enum.NormalId)を決定します。ネガティブ Speed は、粒子が反対方向に放出されることを意味します。SpreadAngle 以降、放射方向がさらに変化します。

方向がある AttachmentParticleEmitter を追加すると、このプロパティを使用するのではなく、添付ファイル自体を回転できます (Attachment.Orientation)。

Enabled

並列読み取り

有効 プロパティは、パーティクルがエミッタから放出されるかどうかを決定します。これを false に設定すると、さらなる粒子の生成が停止しますが、既存の粒子は期限切れするまで活性状態のままです。このプロパティは、パーティクルを発射する必要がなくなるまで、事前に作成されたパーティクル効果を無効にしたい場合に便利です。

無効なエミッタからすべての粒子をクリアしたい場合は、Clear() を呼び出します。次に、必要に応じて、エミッターに Emit() を呼び出して、粒子を放射し、レンダリングします。

FlipbookFramerate

並列読み取り

FlipbookFramerate プロパティは、フリップブックのテクスチャが秒ごとにどのくらい速くアニメーションするかを決定します。Like Lifetime のように、フレームレートをランダム化するための最小値と最大値を設定でき、最大 30 フレーム/秒です。

FlipbookIncompatible

並列読み取り

Texture がフリップブックに互換できない場合に表示するエラーメッセージ。フリップブックのテクスチャは、ピクセルサイズ 8×8、16×16、32×32、64×64、128×128、256×256、512×512、または 1024×1024 である必要があります。

並列読み取り

フリップブックレイアウト プロパティは、テクスチャのレイアウトを決定します。Enum.ParticleFlipbookLayout 枚列挙の任意の値であることができます:

  • なし – フリップブック機能を無効にし、テクスチャをパーティクルの寿命全体で単一の静的テクスチャとして使用します。
  • グリッド2x2 – 4フレームのアニメーション用の 2×2 フレーム。
  • グリッド4x4 – 16フレームのアニメーション用の 4×4 フレーム。
  • グリッド8x8 – 64フレームのアニメーション用の 8×8 フレーム。
並列読み取り

フリップブックモード プロパティは、フリップブックアニメーションのタイプを決定します。Enum.ParticleFlipbookMode 列挙の任意の値が使用できます:

  • ループ – 最後のフレームを再生した後、最初のフレームから再生し続けてすべてのフレームを再生します。
  • ワンショット – パーティクルのライフサイクル全体でアニメーションを再生するのは一度だけ。この設定では、FlipbookFramerate プロパティは適用されません;代わりに、フレームレートはアニメーションのフレーム数によって均等に分割されたパーティクルの Lifetime によって決まります。 ワンショット アニメーションは、煙を吐き出して消える爆発のような、繰り返さないアニメーションをクリアにするのに便利です。
  • ピンポン – 最初から最後のフレームをプレイし、最後から最初に逆に再生し、パーティクルの Lifetime 全体で繰り返します。
  • ランダム – フレームをランダムな順序で再生し、1つのフレームから次のフレームにブレンド/クロスフェードするこれは、星がゆっくりと異なる形状の間を移動しているように、低フレームレートのオーガニックパーティクルテクスチャに有用なものです。

FlipbookStartRandom

並列読み取り

FlipbookStartRandom プロパティは、各パーティクルが常に最初のフレームで始まるのではなく、アニメーションのランダムフレームで開始するかどうかを決定します。1つの使用ケースは、このプロパティを有効にし、また FlipbookFramerate をゼロに設定して、発射されたパーティクルがフリップブックテクスチャからランダムに選択された静的フレームになるようにします。

Lifetime

並列読み取り

ライフタイム プロパティは、新しく発行された粒子の最大年齢と最小年齢を定義します。ライフタイムはパーティクルごとに保存されるので、この値が変更されると、既存のパーティクルはランダムに選択された期間が終了するまでアクティブなままです。0の寿命は、粒子がすべてく放出されないようにします。

LightEmission

並列読み取り

ライトエミッション プロパティは、背後の色とのブレンドを決定します。値 0 は通常のブレンドモードを使用し、値 1 は追加ブレンドを使用します。変更されると、このプロパティはすぐに発信者が所有するすべての粒子、現在のものと将来のものの両方に影響を及ぼします。

このプロパティは、粒子が環境光にどのように影響を受けるかを決定する LightInfluence と混同してはならない。

このプロパティは、 粒子が環境を照らすのを防ぐ ことはありません。そのためには、PointLight を使用することを検討してください。

LightInfluence

並列読み取り

ライト影響 プロパティは、レンダリング時に個々のパーティクルの色にどれほど環境光が影響するかを決定します。範囲は 0-1 でなければならず、この範囲外の値の動作は定義されていません。0 では、粒子は光に全く影響を受けません (完全な明るさを保持します)、1 では粒子は完全に光に影響を受けます (完全な闇の中で、粒子は黒になります)。

デフォルトでは、Studio ツールで挿入すると、この値は 1 です。 Instance.new() を使用して挿入すると、0 になります。

LocalTransparencyModifier

非表示
複製されていません
並列読み取り

LockedToPart

並列読み取り

ロックトパーツ プロパティは、パーティクルが放射源に「付着」するかどうかを決定します (Attachment または BasePart に、ParticleEmitter が親属するもの)。如果 true 、親オブジェクトが移動すると、アクティブな粒子はロックステップで移動します。

代わりに、VelocityInheritance プロパティを 1 の値で使用することを検討してください、一部の効果に適している可能性があります。

並列読み取り

オリエンテーション プロパティは、エミッタのパーティクルジオメトリに使用するオリエンテーションモードを決定します。


<td>パーティクルの動作</td>
</tr>
</thead>
<tbody>
<tr>
<td><b>フェイシングカメラ</b></td>
<td>標準のカメラ向きビルボードクワッド; デフォルト動作。</td>
</tr>
<tr>
<td><b>フェイシングカメラワールドアップ</b></td>
<td>カメラに向き合い、縦方向の上向き世界の <b>Y</b> 軸でのみ回転。</td>
</tr>
<tr>
<td><b>速度パラレル</b></td>
<td>移動方向と平行に配置されました。</td>
</tr>
<tr>
<td><b>速度直角</b></td>
<td>方向移動に平行して配置されます。</td>
</tr>
</tbody>
オリенテーション

Rate

並列読み取り

レート プロパティは、エミッタが Enabled である間、秒ごとに何個の粒子が放出されるかを決定します。周波数の逆であり、5の速度では 0.2秒ごとに粒子が放出されます。変更されると、このプロパティはアクティブなパーティクルに影響しません。

RotSpeed

並列読み取り

RotSpeed プロパティは、新しく発射された粒子の角速度のランダムな範囲を決定し、秒ごとに度で測定します。放射時にランダムな角速度が選択されるため、このプロパティを変更すると、アクティブな粒子には影響しません。このプロパティ、および Rotation 、レンダリングされたパーティクル画像の角に影響します。

非常に高い角速度を持つ粒子は、回転速度が遅くなったり、まったく回転しないように見えるかもしれません、 since the angle of rotation is synchronized with the software render speed.たとえば、パーティクルが毎フレーム正確に 360 度回転する場合、回転に明らかな変更はありません。

Rotation

並列読み取り

回転 プロパティは、新しく発射された粒子の度数での回転範囲を決定し、度数で測定されます。正の値は時計回りの方向にあります。このプロパティは、一般的に新しい粒子に完全にランダムな回転を提供するために [0, 360] に設定されます。RotSpeed も、パーティクルの回転をその寿命に影響します。

この値の変更は新しいパーティクルにのみ影響し、既存のパーティクルは元の発射時の回転を維持します。

並列読み取り

形状 プロパティは、エミッタの形状を箱、球、シリンダー、またはディスクに設定します。選択を行った後、ShapeStyleShapeInOut、およびShapePartialプロパティを調整して、パーティクル放出をさらにカスタマイズできます。ビジュアル例は、ここ を参照してください。

並列読み取り

パーティクルが外向き、内向き、または両方の方向に発射するかどうかを設定します。ビジュアル例は、ここ を参照してください。

ShapePartial

並列読み取り

Shape 値によって、このプロパティは異なるアクションを実操作します:

  • 円筒については、上部の半径割合を指定します。0の値は、円筒の頂点が半径ゼロであるため、コーンになります。1の値は、シリンダーに歪みがないことを意味します。

  • ディスクの場合、内径比率を指定します。0 の値は、ディスクが完全に閉じている (円/楕円) を意味し、1 の値はディスクの外側リムでのみ放射が発生することを意味します。0から1の間の値は、特定の厚さのあるアナロスから放出されます。

  • 球については、パーティクルが発射する半球角を指定します。値 1 は、全体の球から粒子が放出されることを意味します;値 0.5 は、半球から粒子が放出されることを意味します;値 0 は、北極点の単一の場所からのみ粒子が放出されることを意味します。

ビジュアル例は、ここを参照してください。

並列読み取り

パーティクル放出をボリュームまたは表面のみの放出に設定します。ビジュアル例は、ここを参照してください。

並列読み取り

サイズ プロパティは、個々のライフタイムにわたるすべてのアクティブな粒子の世界サイズを決定します。このプロパティは、各パーティクルの正方形の Texture の寸法を表します。それは NumberSequence と同じように機能する Transparency です。

パーティクルの現在のサイズは、パーティクルの年齢と総寿命を使用して、このシーケンス上で線形にインターポレーションすることによって決定されます。たとえば、2秒前にパーティクルが生成され、4秒の寿命がある場合、サイズは NumberSequence を通り抜ける 50% であることになります。非ゼロの封筒値を持つどんな NumberSequenceKeypoint でも、発射するときに各キーポイントごとに封筒範囲のランダム値が選択されます。

並列読み取り

スピード プロパティは、新しい粒子が放出する速度のランダムな範囲 (最小から最大まで) をスタッド毎秒で測定します。各パーティクルの速度は、放射時に選択され、EmissionDirection に適用されます。ネガティブな値は、粒子が逆方向に移動する原因です。

変更する Speed は、アクティブな粒子に影響しないことに注意してください。彼らは既に持っている速度を維持します。しかし、AccelerationDrag、およびVelocityInheritanceは、寿命中の活性粒子の速度に影響を与えるために使用できます。

SpreadAngle

並列読み取り

スプレッドアングル プロパティは、パーティクルが放出される可能性のあるランダムな角度を決定します。たとえば、EmissionDirectionトップ (+ Y )である場合、この Vector2 は、 X / Z 軸におけるランダム角の拡散のサイズを、度で説明します。

1つの軸を 360 に設定すると、パーティクルが 内で全方位に放出されます。両方を 360 に設定すると、パーティクルが のすべての方向に放出されます。

並列読み取り

粒子の非一貫的なスケーリングを許可し、彼らの寿命中に曲が制御されます。値が 0 より大きいと、粒子が横向きに縮小し、縦向きに成長します。値が 0 より小さいと、粒子が横向きに成長し、縦向きに縮小します。

Texture

ContentId
並列読み取り

テクスチャ プロパティは、パーティクルにレンダリングされた画像を決定します。この画像は Color , Transparency , LightInfluence , そして LightEmission に影響を受けています。透明な背景のテクスチャは、パーティクルに最適です。

TimeScale

並列読み取り

パーティクル効果の速度を制御する 0 から 1 の値。1では、通常速度で実行します; 0.5では、半速度で実行します; 0では、時間停止します。

Transparency

並列読み取り

透明性 プロパティは、個々の寿命を通じてすべてのアクティブな粒子の透明性を決定します。パーティクルに時間経過で影響する方法において、Sizeと似ています。レンダリングに関しては、値 0 は完全に視覚的 (不透明) であり、値 1 は完全に非表示 (レンダリングされない) です。

パーティクルの現在の透明度は、パーティクルの年齢と総寿命を使用して、このシーケンスで線形にインターポレーションすることによって決定されます。たとえば、2秒前にパーティクルが生成され、4秒の寿命がある場合、透明度は NumberSequence を通過する方法の 50% であることになります。非ゼロの封筒値を持つどんな NumberSequenceKeypoint でも、発射するときに各キーポイントごとに封筒範囲のランダム値が選択されます。

VelocityInheritance

並列読み取り

速度継承 プロパティは、パーティクルが放出されたときに親部分の Velocity のどのくらいが継承されるかを決定します。値 0 は、速度が継承されないことを意味し、値 1 は、パーティクルが親 BasePart と同じ速度を持つことを意味します。

Drag と一緒に使用すると、粒子エミッターが移動部品から粒子を「飛ばす」ように見えることがあります。

WindAffectsDrag

並列読み取り

真である場合、放出された粒子は Workspace.GlobalWind ベクトルに従います。Drag プロパティが 0 より大きい場合にのみ適用されます。

ZOffset

並列読み取り

ZOffset プロパティは、スタッドでパーティクルの前方後方レンダリング位置を決定し、画面上のサイズを変更せずに参加します。変更されると、このプロパティは現在のパーティクルと将来のパーティクルの両方に影響します。このプロパティは、分数値を受け入れます; GuiObject.ZIndex (整数) とは異なります。

正の値は粒子をカメラに近づけ、負の値は粒子を遠ざけます。十分にネガティブな値は、粒子を親部分の内側または後ろにレンダリングさせる可能性があります。

方法

Clear

()

クリア方法は、 すぐにすべての既存の粒子をクリアします 自然放出(非ゼロの エミッターで)または を通じて放出されたすべての粒子をクリアします。


戻り値

()

コードサンプル

This code sample causes a ParticleEmitter to ParticleEmitter:Emit() particles in bursts of 10 every 2 seconds. It ParticleEmitter:Clear()s any existing particles before doing so.

ParticleEmitter Burst

local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end

Emit

()

エミット メソッドは、ParticleEmitter が指定された数の粒子をすぐに放出するようにします。

パラメータ

particleCount: number

放射するパーティクルの数。

既定値: 16

戻り値

()

コードサンプル

This code sample causes a parent ParticleEmitter to ParticleEmitter:Emit() particles based on how far the parent BasePart moves.

Emit Particles Over Distance

local RunService = game:GetService("RunService")
local emitter = script.Parent
local part = emitter.Parent
local PARTICLES_PER_STUD = 3
local lastPosition = part.Position
local distance = 0
local function onStep()
local displacement = part.Position - lastPosition
distance = distance + displacement.magnitude
local n = math.floor(distance * PARTICLES_PER_STUD)
emitter:Emit(n)
distance = distance - n / PARTICLES_PER_STUD
lastPosition = part.Position
end
RunService.Stepped:Connect(onStep)
emitter.Enabled = false

This code sample causes a ParticleEmitter to ParticleEmitter:Emit() particles in bursts of 10 every 2 seconds. It ParticleEmitter:Clear()s any existing particles before doing so.

ParticleEmitter Burst

local emitter = script.Parent
while true do
emitter:Clear()
emitter:Emit(10)
task.wait(2)
end

イベント