撃つ
Coddyの「Unityゲーム:タワーディフェンス」コースのレッスン 9/25。
タワーは標的に向かってProjectileを発射します。弾はMoveTowardsで標的を追いながら飛び、到着するとダメージを与えます。Enemyに命中したかどうかを知る必要はありません。ダメージを受けるものすべてのインターフェースであるIDamageableを取得するため、これを実装しているものなら何でも撃つことができます。
弾が飛んでいる間に標的が死ぬことがあります。破棄されたUnityオブジェクトはnullと等しくなるため、弾はまずtarget == nullを確認して、自分自身を破棄します。
現時点では、タワーは1秒に1回発射します。次に発射する時刻を保持します。
if (Time.time >= nextShot)
{
Fire();
nextShot = Time.time + 1f;
}チャレンジ
中級タワーは1秒に1回、矢を撃ちます。
EnemyはIDamageableを実装します。TakeDamage(int amount)はhealthから値を差し引き、0以下になると敵を破壊します。Projectile:Launch(Transform target, int damage)は両方の値を保持します。Updateはspeedの速さでターゲットまで飛び、到着時にTakeDamage(damage)を呼び出して自身を破壊します。ターゲットが消えた場合も同様です。Tower:public int damage = 2;と[SerializeField] private Projectile projectilePrefab;を追加します。前述のとおり、transform.position + Vector3.upの位置から発射します。
「プレイ」を押します。矢が飛び、Gruntが倒れます。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
// 後で実装:塔から標的に向かって飛ぶ弾。
public class Projectile : MonoBehaviour
{
}
Unityゲーム:タワーディフェンスのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド