標的設定と砲撃

確認済のバージョン: 2017.2

-

難易度: 中級

はじめに

前のセクションでは、エージェントとタワーを作成する方法についての概要を説明しましたが、エージェントとタワーを互いに攻撃させる方法についてはまだ実際に説明していません。これは主に、敵とタワーの両方に同じコンポーネントとプロセスが必要であるためです。このセクションでそれらを説明します。

砲弾の作成

エージェントとタワーを砲撃できるようにするには、互いに攻撃するための砲弾を作る必要があります。ダメージの程度は、タワーまたはエージェント自体ではなく、砲弾のプロパティーに含まれます。

  • 空のゲームオブジェクトを作成し、タワー/エージェントのタイプ、単語 projectile、必要な場合は関連するレベル (LaserTowerProjectile_1 など) で構成される名前を付けます。

  • 新しい砲弾のゲームオブジェクトに Damager コンポーネントを加えます。

  • 攻撃がヒットしたときにタワーやエージェントから奪われる耐久力の量を表す Damage フィールドを設定します。

  • タワーの砲弾の場合は Player (SimpleAlignment) スクリプタブルオブジェクトを Alignment フィールドにドラッグします。エージェントの場合は、Enemy (SimpleAlignment) スクリプタブルオブジェクトを Alignment フィールドにドラッグします。

これからの手順は、どのような種類の砲弾を作るかによります。 弾道や衝突の検出に依存しないヒットスキャンの砲弾の場合は以下の通りです。

  • 砲弾ゲームオブジェクトに HitscanAttack コンポーネントを加えます。

  • Delay フィールドに任意の秒数を設定します。

ロケットなどの砲弾では、砲弾がオブジェクトと衝突したかどうか、そして、衝突した位置を確認してダメージを決定します。

  • 砲弾ゲームオブジェクトに BallisticProjectile コンポーネントを加えます。

  • 砲弾ゲームオブジェクトに RigidBody と CapsuleCollider コンポーネントを追加して、砲弾と環境の衝突を確実に検出できるようにします。

  • ContactDestroyer コンポーネントを追加すると、衝突後に砲弾は破棄されます。

砲弾がより広い半径でダメージを与える場合は、次の手順を行います。

  • 砲弾ゲームオブジェクトに SplashDamager コンポーネントを加えます。

  • Attack Range フィールドに効果を及ぼす範囲の半径を設定します。

  • Damage Amount フィールドの値を、砲弾が直接あたらなかった場合にエージェント/タワーが受けるダメージの量に設定します。

タワーに標的設定を加える

以下の手順では、タワーとエージェントの両方の標的設定が可能になります。スターターキットでは、タワーの AttackAffector に別の子ゲームオブジェクトを使いますが、コンポーネントはエージェントのプレハブにアタッチされます。純粋に整理方法上の違いであり、AttackAffector の機能は変わりません。

  • タワーレベル/エージェントプレハブの空の子ゲームオブジェクトを作成し、Affector という名前を付けます。このオブジェクトによって、タワーとエージェントが互いに攻撃できるようになります。

  • Affector ゲームオブジェクトに適当な Launcher コンポーネントを加えます。

  • Affector ゲームオブジェクトに AttackAffector コンポーネントを加えます。

  • 砲弾のプレハブを Projectile フィールドにドラッグアンドドロップします。

  • タワー/エージェントが砲弾を発射する地点として Projectile Points を追加します。

  • タワー/エージェントの Fire Rate (砲撃頻度) を設定します。

  • Tower レベルまたは Agent プレハブの子として空のゲームオブジェクトを作成し、「Targetter」という名前にします。次に Targetter コンポーネントをゲームオブジェクトに適用します。このオブジェクトを作ると、タワーが砲撃するエージェントを見つけられるようになります。

  • タワーレベルの砲台の Transform を Turret フィールドにドラッグアンドドロップします。砲台として設定されたオブジェクトは、エージェントを標的にします。

  • タワーレベルの Search Rate (検索頻度) を設定します。

  • タワーレベルの Targetter Collider を Sphere (スフィア) または Capsule (カプセル) に設定します。

  • Radius と Vertical Range のフィールドを設定します。

  • Hierarchy ウィンドウで Affector ゲームオブジェクトを選択して、Targetter ゲームオブジェクトを AttackAffector コンポーネントの Tower Targetter フィールドにドラッグアンドドロップします。

  • タワープレハブに変更を適用します。

上記の手順によって、エージェントが、プレイヤー本拠地への経路を妨害するタワーに向かって武器を発射できるようになります。エージェントがプレイヤーの本拠地にダメージを与えられるようにするには、以下の手順を行います。

  • エージェントプレハブに HomeBaseAttacker を加えます。

  • エージェントが本拠地に達する場合に、攻撃する前に充填に必要な秒数を設定します。

Launcher コンポーネントを理解する

タワーディフェンステンプレートでは、数種類の Launcher が使用できます。

Ballistic Launcher

Ballistic Launcher は、物理学を使用して砲弾の軌道を計算し、BallisticProjectile を起動します。BallisticProjectile の詳細は、 Action Game Framework Reference を参照してください。

Fire Particle System

このランチャーを使ってタワーが弾を発射したとき再生されるパーティクルシステムです。

Hitscan Launcher

Hitscan Launcher は、即座に標的に HitscanAttack を配置します。それから、HitscanAttack は (オプションで遅延あり) 標的にダメージを与えます。

Fire Particle System

このランチャーを使ってタワーが弾を発射したとき再生されるパーティクルシステムです。

Super Tower Launcher

Super Tower はサンプルのプロジェクトに現れ、ある時間が経過すると自動的に破壊されます。

Fire Particle System

このランチャーを使ってタワーが弾を発射したとき再生されるパーティクルシステムです。

Tower Life Span

Super Tower が自身を破壊するまでの秒数。このフィールドは、強力な Super Tower の存在時間が長くなりすぎないようバランスをとるためにあります。

Fire Vector X Rotation

FireVectorXRotation は、SuperTower の砲台の方向に基づいてSuperTower の砲台が回転する値を表します ( Action Game Framework Reference の WobblingHomingProjectile を参照)。

Death()

SuperTower が自身を破壊するために使用する機能はアクセス可能で、Super Tower の自己破壊機能の処理を設定可能にしています。 これにより、例えば、SuperTower の自動破壊を防ぐことができます。

AttackAffector コンポーネントを理解する

AttackAffector コンポーネントによって、タワーやエージェントが互いに攻撃できるようになります。

Projectile

この AttackAffector が標的に向かって発射するときに、生成されるプレハブ。砲弾の特定のタイプは Launcher コンポーネントによって異なります。

Projectile Points

Transform のリスト。 このリストに Transform が追加されると、その Transform の位置に砲弾を生成できます。これは複数の砲台を持つタワーや敵に便利です。

Is Multi Attack

チェックを入れると、AttackAffector は範囲内の複数の標的を見つけることができます。チェックをはずすと、Affector は、敵が破壊されるか範囲外に移動するまで 1 度に 1 体の敵を狙います。

Fire Rate

これによって、AttackAffector が Launcher に発砲するよう命令する頻度を制御します。

Random Audio Source

オーディオソースのリスト。ランダムに、AttackAffector が砲撃するたびに再生されます。

Tower Targetter

このタワーレベルの Targetter コンポーネントを含むプレハブへの参照。

Targetter は、範囲内の標的数を追跡します。特に Targetter のねらいの範囲に最も近い標的を追跡します。フィードバックのために、Targetter は TowerLevel プレハブの子である砲台のモデルを制御し、砲台を最も近い標的に向けプレイヤーに伝えます。

Radius Effect Color

これにより、タワーが砲撃できる距離を示す範囲のビジュアライザーの色を変更できます。

Targetter コンポーネントを理解する

Turret

このタワーレベルのプレハブにアタッチされた砲台のモデル。

Turret X Rotation Range

タワーが見渡せる角度。

Only Y Turret Rotation

タワーが X 軸の周りに回転できるかどうか。

Search Rate

標的の SearchRate は、最も近くにある標的を新たに選択する頻度を設定します。

Idle Rotation Speed

砲撃する標的がない時に、タワーが回転する速度。

Idle Correction Time

タワーが目標を失ってから元の位置に戻るまでの待機時間 (秒)。

Idle Wait Time

タワーが目標を失ってからアイドル状態の回転を始めるまでの待機時間 (秒)。

Attached Collider

後述で設定する Targetter コライダーへの参照。 これは、Targetter Collider フィールドを使用すると自動的に設定されます。

Targetter Collider の設定

Targetter の検索範囲はカプセルかスフィアの形状です。コライダーがスフィアの場合、半径は設定可能です。コライダーがカプセルの場合、カプセルの高さが設定可能です。

Targetter Collider

Targetter のコライダーがカプセルかスフィアか。

Radius

Targetter の砲撃範囲 (単位は標準の Unity ユニット)。

Vertical Range

タワーが砲撃可能な垂直方向の範囲。

HomeBaseAttacker コンポーネントを理解する

Home Base Attack Charge Time

エージェントがレベルの最後のノードに達してから、プレイヤーの本拠地の耐久力を削減するまでの秒数。

関連するチュートリアル