サイトアイコン StudioFun

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(14)

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(13)では AttackingAgent と FlyingAgent について解説を行った。これで「エージェント編」は一通り完了したことになる。今回から「標的設定と砲撃編」を進めていく。

1.標的設定と砲撃編 – 概要

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(2)で述べた通り、Unity のチュートリアルに沿って作業を進めていく。ということで次に標的設定と砲撃について進めていく。

Unity 公式ページの「標的設定と砲撃」についてはこちらを参照してほしい。

The previous section provided instructions on how to create Agents and Towers, but didn't cover how to actually have them fire at each other. This tutorial covers the components and processes required for both enemies and towers to attack and return fire.
Targeting and Firing - Unity Learn - Unity Learn

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

2.標的設定と砲撃編 – 砲弾を作成する

『エージェントとタワーを砲撃できるようにするには、互いに攻撃するための砲弾を作る必要があります。ダメージの程度は、タワーまたはエージェント自体ではなく、砲弾のプロパティーに含まれます。』とのことなので指示に従って砲弾の作成を進める。基本的な作成方法は以下の通りだが、砲弾の種類によって作り方が異なるとのこと。

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

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

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

今回は Prefab にある LaserTowerProjectile_0 を参考にレーザー用のゲームオブジェクトを作成した。本来の LaserTowerProjectile_0 では Poolable コンポーネントも付随しているのだが、今回は上記の指示通り Damager と HitscanAttack コンポーネントのみ適応している。Poolable については章を進める中で出てきたときに改めて解説させていただく。

レーザー用砲弾オブジェクト

Damager については「Assets/Scripts/ActionGameFramework/Health/Damager.cs」をドラッグアンドドロップして使用している。

HitscanAttack については「Assets/Scripts/TowerDefense/Towers/Projectiles/HitscanAttack.cs」をドラッグアンドドロップして使用している。

このときの各パラメータについては LaserTowerProjectile_0 の Prefab を参考に Damager では以下の通り。

  1. Damage : 12
  2. Chance To Spawn Collision Prefab : 1
  3. Collision Particles : 「Assets/Particles/Prefabs/LaserImpactPFX」
  4. Alignment : 「Assets/Data/Alignments/Player」

また、HitscanAttack についても同様に以下の通りとした

  1. Delay : 0.25

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

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

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

まずは Affector について進めていく。その際、 Prefab にある LaserTower_0 を参考にタワー用のゲームオブジェクトを改良した。自作した LayserTower_0 に対して空のゲームオブジェクトを Affector として追加し、そのゲームオブジェクトに HitscanLancher と AttackAffector を追加している。それぞれのコンポーネントは「Assets/Scripts/TowerDefense/Towers/TowerLaunchers/HitscanLauncher.cs」と「Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs」を使用している。

タワー用 Affector オブジェクト

HitscanLancher の各パラメータについては Prefab を参考に以下の通りとした。

  1. Fire Particle System : Prefab に登録されている LayserTower_0  から LaserFireEffect を取り出しパラメータとした

また、AttackAffector の各パラメータについては Prefab を参考に以下の通りとした。

  1. 説明 : 「Offensive」
  2. Projectile : 「Assets/Prefabs/Towers/Laser/LaserProjectile_0」
  3. Projectile Points(サイズ) : 1
  4. Projectile Points(サイズ) : 空のゲームオブジェクトを LaserTower_TURRET_L01 の下に 「ProjectilePoint」という名前で作成し作成しトランスフォームの位置に x :  0.03853759、y : -0.041、z : 1.052 とした
  5. Epicenter : 自作した LayserTower_0
  6. Fire Rate : 0.3
  7. Random Audio Source : HitscanLancher のパラメータに使用した LaserFireEffect
  8. Tower Targgetter : 次に作成する Targgetter

次には Targgetter について進めていく。その際、 Prefab にある LaserTower_0 を参考にタワー用のゲームオブジェクトを改良した。自作した LayserTower_0 に対して空のゲームオブジェクトを Targgetter として追加し、そのゲームオブジェクトに Targgetter を追加している。コンポーネントは「Assets/Scripts/TowerDefense/Targetting/Targetter.cs」を使用している。

タワー用 Targetterr オブジェクト

Targgetter の各パラメータについては Prefab を参考に以下の通りとした。

  1. Turret : 自作した LayserTower_0 の「LaserTower_TURRET_L01」ゲームオブジェクト
  2. Turrt X Totation Range : x : 0、y : 0
  3. Only Y TurretRotation : チェックを入れる
  4. Search Rate : 1
  5. Idle Rotation Speed : 39
  6. Idle Correction Time : 2
  7. Attached Collider : Targgeter ゲームオブジェクト
  8. Idle Wait Time : 2
  9. Targetter Collider : カプセル
  10. Radius : 12
  11. Vertical Range : 4

今回、出てきたスクリプトについては次回以降改めて解説させていただく。

Assets/Scripts/ActionGameFramework/Health/Damager.cs について、稚拙ながら解説させていただいた。記事については以下を参照してほしい。

Damager

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(14)では「標的設定と砲撃編」を進め、砲弾の作成とタワーオブジェクトの改良を行った。今回は砲弾に対して追加した Damager コンポーネントの解説を進めていく。1.標的設定と砲撃編 – Damager.csDamager.cs について稚拙ながら解説「Damager.cs」は「Assets/Scripts/ActionGameFramework/Health/Damager.cs」の指しておりスクリプトについては以下の通り。内容としてはダメージ量の保持とダメージを与えられるかの判定を行っている。using System;using Core....
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(15) - StudioFun

Assets/Scripts/TowerDefense/Towers/Projectiles/HitscanAttack.cs について、稚拙ながら解説させていただいた。記事については以下を参照してほしい。

HitscanAttack

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(15)では砲弾に対して追加した Damager コンポーネントの解説を進めた。今回は同様に砲弾に対して追加した HitscanAttack コンポーネントに付いて解説を進めていく。1.標的設定と砲撃編 – HitscanAttack.csHitscanAttack.cs について稚拙ながら解説「HitscanAttack.cs」は「Assets/Scripts/TowerDefense/Towers/Projectiles/HitscanAttack.cs」の指しておりスクリプトについては以下の通り。内容としてはダメージを与える処理を行っている。using ActionGameFr...
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(16) - StudioFun

Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs および、継承関係、インタフェースの Affector.cs 、ITowerRadiusProvider について稚拙ながら解説させていただいた。それぞれの記事については以下を参照してほしい。

Affector

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(16)では砲弾に対して追加した HitscanAttack コンポーネントについて解説を行った。今回は LaserTower_0 に追加した AttackAffector コンポーネントの継承関係にある Affector を行っていく。1.標的設定と砲撃編 – Affector.csAffector.cs について稚拙ながら解説「Affector.cs」は「Assets/Scripts/TowerDefense/Affectors/Affector.cs」の指しておりスクリプトについては以下の通り。内容としては Affector の初期化のみを行っている。using Core.Health;us...
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(17) - StudioFun

ITowerRadiusProvider

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(17)では LaserTower_0 に追加した AttackAffector コンポーネントの継承関係にある Affector を行った。今回は LaserTower_0 に追加した AttackAffector コンポーネントのインタフェースにある ITowerRadiusProvider の解説を行っていく。1.標的設定と砲撃編 – ITowerRadiusProvider.csITowerRadiusProvider.cs について稚拙ながら解説「ITowerRadiusProvider.cs」は「Assets/Scripts/TowerDefense/Towers/ITowerRadiusProvider.cs」の指しておりスクリプトに...
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(18) - StudioFun

AttackAffector

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(18)では LaserTower_0 に追加した AttackAffector コンポーネントのインタフェースにある ITowerRadiusProvider の解説を行った。今回は LaserTower_0 に追加した AttackAffector の解説を行っていく。1.標的設定と砲撃編 – AttackAffector.csAttackAffector.cs について稚拙ながら解説「AttackAffector.cs」は「Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs」の指しておりスクリプトについては以下の通り。内容としては砲撃に関する処理を行っ...
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(19) - StudioFun

Assets/Scripts/TowerDefense/Towers/TowerLaunchers/HitscanLauncher.cs および、継承関係の Launcher.cs について稚拙ながら解説させていただいた。それぞれの記事については以下を参照してほしい。

Launcher

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(19)では LaserTower_0 に追加した AttackAffector の解説を行った。今回は LaserTower_0 に追加した HitscanLauncher のインタフェースである ILauncher の解説を行っていく。1.標的設定と砲撃編 – ILauncher.csILauncher.cs について稚拙ながら解説「ILauncher.cs」は「Assets/Scripts/TowerDefense/Towers/ILauncher.cs」の指しておりスクリプトについては以下の通り。内容としては砲撃処理の関数定を行っている。using System.Collections.Generic;using A...
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(20) - StudioFun

ILauncher

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(20)では LaserTower_0 に追加した HitscanLauncher のインタフェースである ILauncher の解説を行った。今回は LaserTower_0 に追加した HitscanLauncher の継承関係にある Launcher の解説を行っていく。1.標的設定と砲撃編 – Launcher.csLauncher.cs について稚拙ながら解説「Launcher.cs」は「Assets/Scripts/TowerDefense/Towers/TowerLaunchers/Launcher.cs」の指しておりスクリプトについては以下の通り。内容としては複数個に対する砲撃処理を行ってい...
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(21) - StudioFun

HitscanLauncher

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(21)では LaserTower_0 に追加した HitscanLauncher の継承関係にある Launcher の解説を行った。今回は LaserTower_0 に追加した HitscanLauncher の解説を行っていく。1.標的設定と砲撃編 – HitscanLauncher.csHitscanLauncher.cs について稚拙ながら解説「HitscanLauncher.cs」は「Assets/Scripts/TowerDefense/Towers/TowerLaunchers/HitscanLauncher.cs」の指しておりスクリプトについては以下の通り。内容としては単体への砲撃処理を行っている。using Ac...
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(22) - StudioFun

Assets/Scripts/TowerDefense/Targetting/Targetter.cs および、継承関係の Targetter.cs について稚拙ながら解説させていただいた。記事については以下を参照してほしい。

Targetter

Unity チュートリアルのタワーディフェンステンプレートを触ってみる(22)では LaserTower_0 に追加した HitscanLauncher の解説を行った。今回は LaserTower_0 に追加した Targetter の解説を行っていく。1.標的設定と砲撃編 – Targetter.csTargetter.cs について稚拙ながら解説「Targetter.cs」は「Assets/Scripts/TowerDefense/Targetting/Targetter.cs」の指しておりスクリプトについては以下の通り。内容としてはタレットを目標に合わせる処理を行っている。using System;using System.Collections.Generic;using ActionGame...
Unity チュートリアルのタワーディフェンステンプレートを触ってみる(23) - StudioFun
モバイルバージョンを終了