Menu
CoddyTech

撃つ

Coddyの「Unityゲーム:タワーディフェンス」コースのレッスン 9/25。

タワーは標的に向かってProjectileを発射します。弾はMoveTowardsで標的を追いながら飛び、到着するとダメージを与えます。Enemyに命中したかどうかを知る必要はありません。ダメージを受けるものすべてのインターフェースであるIDamageableを取得するため、これを実装しているものなら何でも撃つことができます。

弾が飛んでいる間に標的が死ぬことがあります。破棄されたUnityオブジェクトはnullと等しくなるため、弾はまずtarget == nullを確認して、自分自身を破棄します。

現時点では、タワーは1秒に1回発射します。次に発射する時刻を保持します。

if (Time.time >= nextShot)
{
    Fire();
    nextShot = Time.time + 1f;
}
challenge icon

チャレンジ

中級

タワーは1秒に1回、矢を撃ちます。

  1. Enemy は IDamageable を実装します。TakeDamage(int amount) は health から値を差し引き、0以下になると敵を破壊します。
  2. Projectile:Launch(Transform target, int damage) は両方の値を保持します。Update は speed の速さでターゲットまで飛び、到着時に TakeDamage(damage) を呼び出して自身を破壊します。ターゲットが消えた場合も同様です。
  3. Tower:public int damage = 2; と [SerializeField] private Projectile projectilePrefab; を追加します。前述のとおり、transform.position + Vector3.up の位置から発射します。

「プレイ」を押します。矢が飛び、Gruntが倒れます。その後、「確認」を押します。

自分で試してみよう

using UnityEngine;

// 後で実装:塔から標的に向かって飛ぶ弾。
public class Projectile : MonoBehaviour
{
}

Unityゲーム:タワーディフェンスのすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド