発射物は射撃に使用され、弾丸(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 に設定します。バウンスを使用する場合は、Pivot を Center に設定します。
Property | Setup |
---|---|
Bullet Type | Basic, Bounce, Bounce4R, Colliding, Seeker, StickToWall. |
Pool Size | シーン内に存在できる弾丸の総数。弾丸は必要に応じて作成され、破棄されることはありません。 |
Projectile Rate | 1 回の射撃イベント中に発射される弾丸の数。この値が 1 より大きい場合、以下のプロパティを持つ弾丸パターンを作成できます。 |
Position Flux | これにより、弾丸の開始位置が指定された値だけ y 方向に変化します。 |
Angle | 弾丸が他の弾丸に対して発射される角度 |
Separation | x 方向と y 方向の弾丸間の相対的な間隔。 |
Direction | 武器方向を有効にすると、パターン設定に従って弾丸が発射されます。円形方向を有効にすると、それらの設定を無視して、放射状に弾丸を発射します。 |
弾丸タイプには、以下のプロパティの一部が共通しています。Seeker タイプの場合、重力設定は無視されます。
Property | |
---|---|
Layer | 弾丸が相互作用するターゲット レイヤー。 最も一般的なレイヤーは敵と壁です。 |
Ignore Edges | Edge 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 速度が負の場合、ワールドとプラットフォームの衝突がチェックされます。
Property | Common |
---|---|
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 Edges | Edge 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 | |
---|---|
Layer | BoxCollider2D が相互作用するターゲット レイヤー。 |
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 Renderer | Line Renderer コンポーネントとそれが持つことができるポイントの数への参照。 |
Line Length | ロープの最大長と最小長。壁が最大範囲を超える場合、接続ポイントは見つかりません。引き込みが有効になっている場合、最小長は可能な限り短い長さになります。 |
Shoot Curve | 射撃中にロープをアニメーションします。カーブアニメーションと振幅を指定します。 |
Shoot Speed | 射撃曲線アニメーションの速度を決定します。 |
Swing Force | プレイヤーが x 方向に移動したときにロープの揺れに力を加えます。 |
Jump Away | プレイヤーにジャンプ力を適用し、グラップリングガンから離れることを可能にします。 |
Gravity | ロープに重力を加えます。 |
Retract | 有効にすると、グラップリング ガンは指定された速度で取り付けられた壁に向かって推進します。 |
Friction | 巻き取りロープに摩擦を加えます。 |
Type | 「Automatic」に設定すると、ロープは自動的に巻き取られます。 それ以外の場合は、手動で巻き取るにはボタンを押す必要があります。 |
Projectile Inventory
これは発射物のリストを保持します。インベントリ システムは、このリストを使用して銃器の発射物を交換します。銃器は異なる発射物インベントリを参照できるため、必要な数だけ作成します。
Property | |
---|---|
Projectile References | 発射物の参照のリスト。必要な数だけ作成します。 |