Projectiles

発射物は射撃に使用され、弾丸(Bullet)、インスタント(Instant)、短距離(Short Range,)、グラップリングガン(Grappling Gun)の 4 つの基本タイプがあります。
各タイプをカスタマイズして、さまざまなオプションを作成できます。発射物が、ヘルス コンポーネントを持ち、ターゲット レイヤーに存在するゲームオブジェクトに当たると、ダメージを与えます。

発射物の位置が保持されるようにするには、静的な親を持つゲームオブジェクトに Projectile コンポーネントを配置することをお勧めします。Projectile コンポーネントは、オブジェクト プールの作成と、すべての発射物のライフサイクルの管理を行います。

Projectile

Property
Name.発射物に名前を付けます。識別のため、これは一意である必要があります。
Projectile Type.「Bullet」は個別のゲームオブジェクトです。
「Instant」はレイキャストです。
「Short Range」は BoxCollider2D です。
「Grappling Gun」は LineRenderer を使用したレイキャストです。
Ammo Type「Discrete」を有効にすると、弾薬数は 1 単位ずつ減少します。
「Continuous」を有効にすると、弾薬数は時間単位で減少します。
通常、Bullet は Discrete に設定され、Short Range は Continuousに設定され、Instantは設定に応じてどちらかに設定できます。
Infiniteを有効にすると、弾薬がなくなることはありません。
Ammo Amount射撃に使用可能な弾薬。
たとえば、連続が有効で値が 10 の場合、発射体は銃器に 10秒間射撃を提供できます。最大値は弾薬数を制限します。
Ammo Damageヘルスコンポーネントを持つターゲットに与えるダメージの量。
Ammo Forceダメージの方向に加えられる力。
Fire Rate銃器がこの発射体を発射できる頻度。
値が 0 の場合、銃器は毎フレームこの発射体を発射できます。
On Ammo Reload弾薬数が増加したときに呼び出される Unity イベント。
On Ammo Empty弾薬数がゼロのときに呼び出される Unity イベント。
Method
ChangeAmmo(float value)弾薬の量を増減します。
AmmoCount()弾薬の量を返します。
EnoughAmmo()弾薬の量がゼロより大きい場合は true を返します。
AmmoIsInfinite()弾薬が無限の場合は true を返します。
AmmoMax()最大弾薬量を返します。
AmmoPercent()残っている弾薬のパーセンテージを返します。

Bullet

弾丸には 6 つの種類があり、それぞれ動作が異なります。また、1 つの弾丸の種類を参照できる銃器の数に制限がないため、リソースを節約するのに最適です。

Important
まず、弾丸のスプライトを含むゲームオブジェクトを作成し、それを Projectile ゲームオブジェクトの子にします。そうすることで初めて、プロパティバーが表示されます。適切に機能させるには、Sprite Pivot を Left に設定します。バウンスを使用する場合は、Pivo​​t を Center に設定します。

PropertySetup
Bullet TypeBasic, Bounce, Bounce4R, Colliding, Seeker, StickToWall.
Pool Sizeシーン内に存在できる弾丸の総数。弾丸は必要に応じて作成され、破棄されることはありません。
Projectile Rate1 回の射撃イベント中に発射される弾丸の数。この値が 1 より大きい場合、以下のプロパティを持つ弾丸パターンを作成できます。
Position Fluxこれにより、弾丸の開始位置が指定された値だけ y 方向に変化します。
Angle弾丸が他の弾丸に対して発射される角度
Separationx 方向と y 方向の弾丸間の相対的な間隔。
Direction武器方向を有効にすると、パターン設定に従って弾丸が発射されます。円形方向を有効にすると、それらの設定を無視して、放射状に弾丸を発射します。

弾丸タイプには、以下のプロパティの一部が共通しています。Seeker タイプの場合、重力設定は無視されます。

Property
Layer弾丸が相互作用するターゲット レイヤー。
最も一般的なレイヤーは敵と壁です。
Ignore EdgesEdge Collider 2D 衝突の処理方法を指定します。[上方向の場合は無視] を有効にすると、弾丸の y 速度が正の場合、この衝突は無視されます。
Life Spanシーン内で弾丸がアクティブになる時間の長さ。
Speed弾丸がどれだけ速く動くか。
Gravityこの値がゼロより大きい場合、弾丸は重力の影響を受けます。
Blast Radiusこの値が 0 より大きい場合、弾丸が衝突するか時間切れになると、この半径内のすべてのターゲットに弾丸がダメージを与えます。
World Effect衝撃時に使用されるワールドエフェクトの名前。必要ない場合は空のままにしておきます。
Bullet Rays弾丸はターゲットを検出するために 1 つのレイキャストのみを使用します。さらに必要な場合は、ここでその数を指定します。
Bullet Size適切な弾丸衝突のために、弾丸の正しいサイズを指定します。
Add Momentum有効にすると、キャラクターの速度が弾丸の速度と組み合わされます。
Invert Y弾丸は回転できるので、スプライトの見た目を正しく保つために y スケールを反転します。弾丸が対称の場合は無視します。
Event
On Fire正常に発生したときに呼び出される Unity イベント。
On Impact弾丸が何らかの接触をしたときに呼び出される Unity イベント。このイベントは、ワールド エフェクトを呼び出すこともできます。
衝撃エフェクトが指定されている場合は、ヒット ポイントと方向がワールドエフェクトに適用されます。
On Hit Target弾丸がヘルスコンポーネントを含むターゲットに当たったときに呼び出される Unity イベント。
このイベントは、ワールド エフェクトを呼び出すこともできます。インパクト エフェクトが指定されている場合、ヒット ポイントと方向がワールド エフェクトに適用されます。
On Life Span Expired弾の時間が経過したときに呼び出される Unity イベント。弾の位置が返されます。

Basic

これは最も基本的な弾丸です。追加のプロパティはありません。

Bounce

この弾丸は壁で跳ね返ります。デフォルトでは、y 速度が負の場合、ワールドとプラットフォームの衝突がチェックされます。

PropertyCommon
Bounce Frictionこの値がゼロより大きい場合、弾丸が壁に跳ね返るたびに、指定された軸の速度が低下します。
Bounce Radius弾丸の半径。衝突チェックに必要です。
Bounce Spin弾丸が軸を中心に回転する量。弾丸がバウンドするボールの場合 (つまり、重力が有効になっている場合)、この値を 0 以外の値に設定します。そうしないと、弾丸は方向に応じて常に回転し、バウンドするボールとしては不適切に見える場合があります。
No Spin有効にすると、弾丸は回転しません。
Active After Hit有効にすると、弾丸はダメージを与えることができるオブジェクトに当たった後も動き続けます。

Important
Bounce と Bounce4R はまったく同じように動作します。ただし、Bounce4R は壁を検出するために 4 つのレイキャストを使用します。より完璧な衝突が必要な場合は、Bounce4R を使用します。

Colliding

この弾丸は、レイキャストの代わりに Collider2D を使用してターゲットを検出します。

Property
Expire On Impact有効にすると、弾丸は衝突しても非アクティブになりません。

Important
弾丸に Collider2D (Is Trigger を true に設定) と RigidBody2D (Kinematic に設定) を追加します。そうしないと衝突は発生しません。ターゲット レイヤーは主に敵の衝突に使用し、壁の衝突には使用しないでください。

Seeker

この弾丸は曲がったり方向を変えたりしながら標的を追尾します。

Property
Search Radiusターゲットを見つけるために使用される弾丸の位置の周囲の半径。
Search Rate弾丸は、ラッチするターゲットが見つかるまで、指定された速度で検索機能を実行します。
Turn Speed弾丸がどれだけ速く方向を変えられるか。
Findランダム ターゲットが有効で、複数のターゲットが見つかった場合、弾丸はリストからランダムに 1 つのターゲットを選択して追跡します。最も近いターゲットが有効になっている場合、弾丸は見つかった最も近いターゲットを追跡します。

Important
シーカー弾は大きく曲がることができるため、ターゲット レイヤーに壁が含まれていてはなりません。そうしないと、弾が壁に衝突したときに非アクティブになります。

Stick To Wall

この弾丸は壁にくっつきます。矢に最適です!

Property
Stick Timer弾丸が壁に張り付いてから非アクティブになるまでの時間。
OnStickToWallExpire弾が壁に張り付いたときに呼び出される Unity イベント。弾の位置が返されます。

Instant

レイキャストはターゲットを瞬時に攻撃するために使用されます。

Property
Layerレイキャストが相互作用するターゲット レイヤー。最も一般的なレイヤーは敵と壁です。
Ignore EdgesEdge Collider 2D 衝突の処理方法を指定します。[Ignore If Up Direction] が有効になっている場合、レイキャストの y 速度が正であれば、レイキャストはこの衝突を無視します。
On Idle「Deactivate GameObject」が有効になっている場合、銃器が発射されなくなったときにゲームオブジェクトは Active を false に設定する必要があります。これは、このゲームオブジェクトにレイキャストを表すスプライトがある場合に便利です。
「Leave As Is」が有効になっている場合、このゲームオブジェクトは現在の状態のままになります。
Max Lengthレイキャストの長さ。
Hit Rate銃器が連続的に発射される場合、ターゲットに命中できる速度を設定します。ゼロのままにすると、ターゲットにフレームごとにダメージが適用されます。ダメージの適用をフレームに依存しないようにするには、これを避けてください。
On Fire正常に発生したときに呼び出される Unity イベント。
Impact Objectインパクトポイントでアクティブに設定されるゲームオブジェクト。レーザーのパーティクル エフェクトに役立ちます。必要ない場合は空のままにしておきます。
Impact Effect衝撃時に使用されるワールドエフェクトの名前。必要ない場合は空のままにしておきます。
On Impactレイキャストがヒットしたときに呼び出される Unity イベント。このイベントは、ヒットレートと同時に呼び出されます。このイベントは、ワールドエフェクトを呼び出すこともできます。インパクトエフェクトが指定されている場合、ヒット ポイントと方向がワールド エフェクトに適用されます。

Important
この発射物にスプライトを配置して、視覚的なレーザーとして機能させることができます。スプライト ピボットを左に設定して、銃器からヒット ポイントまでのスプライト イメージを適切にスケーリングします。


Short Range

BoxCollider2D はヒットするターゲットを検索します。

Property
LayerBoxCollider2D が相互作用するターゲット レイヤー。
ColliderこのゲームオブジェクトにBoxCollider2Dコンポーネントを配置し、サイズを設定してから、ここで参照を設定します。
On Idle「Deactivate GameObject」が有効になっている場合、銃器が発射されなくなったときにゲームオブジェクトは Active を false に設定する必要があります。
「Leave As Is」が有効になっている場合、このゲームオブジェクトは現在の状態のままになります。
Hit Rate銃器が連続的に発射される場合、ターゲットに命中できる速度を設定します。ゼロのままにすると、ターゲットにフレームごとにダメージが適用されます。ダメージの適用をフレームに依存しないようにするには、これを避けてください。
On Fire正常に発生したときに呼び出される Unity イベント。

Tip
BoxCollider2D に合わせてスプライトを配置します。この発射体タイプ専用に作成された Flame Thrower コンポーネントもあります。これをこのゲームオブジェクトに配置し、パーティクル プロパティを設定して炎を発射します。


Grappling Gun

グラップリング ガンの発射物は、ダメージを与えることが主な目的ではないという点で他のタイプとは異なります。代わりに、壁に取り付けて、プレイヤーがレベル内で壁に向かって移動できるように設計されます。グラップリング ロープを視覚化するには、LineRenderer が必要です。この LineRenderer は、発射物と同じコンポーネントに含めることができます。

適切に機能するには、この発射物はプレイヤーの子であるゲームオブジェクト上に存在する必要があります。
例として、GrapplingGun の tidbit シーンを参照してください。

Tip
グラップリングガンとグラップリングロープのローカル位置を変更して、どこから発射してロープを伸ばすかを決定します。グラップリングガンは銃器であるため、銃器コンポーネントでそのローカル位置を変更する必要があります。

Property
Layerグラップリングガンを装着できるターゲットレイヤー。
Line RendererLine Renderer コンポーネントとそれが持つことができるポイントの数への参照。
Line Lengthロープの最大長と最小長。壁が最大範囲を超える場合、接続ポイントは見つかりません。引き込みが有効になっている場合、最小長は可能な限り短い長さになります。
Shoot Curve射撃中にロープをアニメーションします。カーブアニメーションと振幅を指定します。
Shoot Speed射撃曲線アニメーションの速度を決定します。
Swing Forceプレイヤーが x 方向に移動したときにロープの揺れに力を加えます。
Jump Awayプレイヤーにジャンプ力を適用し、グラップリングガンから離れることを可能にします。
Gravityロープに重力を加えます。
Retract有効にすると、グラップリング ガンは指定された速度で取り付けられた壁に向かって推進します。
Friction巻き取りロープに摩擦を加えます。
Type「Automatic」に設定すると、ロープは自動的に巻き取られます。
それ以外の場合は、手動で巻き取るにはボタンを押す必要があります。

Projectile Inventory

これは発射物のリストを保持します。インベントリ システムは、このリストを使用して銃器の発射物を交換します。銃器は異なる発射物インベントリを参照できるため、必要な数だけ作成します。

Property
Projectile References発射物の参照のリスト。必要な数だけ作成します。
タイトルとURLをコピーしました