設計に基づいて、EnemyController スクリプトを修正して、攻撃力用の変数を宣言します。
public 修飾子で宣言しておくことによって、インスペクターより設定が可能になりますので、活用してください。
攻撃力の値は拠点の耐久力に対して計算を行う対象になりますので、自ずと宣言する型も決まります。
以前にも学習しましたが、変数を作成する場合には、
どんな目的に利用するのかを明確に設定してから作成してください。
利用する目的を把握していれば、それを元に変数の名前を付ける際にも参考になりますので、イメージを作ることが大切です。
EnemyController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[RequireComponent(typeof(CapsuleCollider2D))]
public class EnemyController : MonoBehaviour
[Header("エネミーのHP")]
public int hp;
////* ここから追加 *////
[Header("エネミーの攻撃力")]
public int attackPower;
////* ここまで *////
void Update() {
// このスクリプトがアタッチしているゲームオブジェクトを徐々に移動する
transform.Translate(0, -0.01f, 0);
// 一定地点までエネミーが移動したら = このゲームオブジェクトの位置が一定値(-1500)を超えたら
if (transform.localPosition.y < -1500) {
// このスクリプトがアタッチしているゲームオブジェクトを破壊する
Destroy(gameObject);
}
}
// 侵入判定
private void OnTriggerEnter2D(Collider2D col) {
// バレットが接触したら
if (col.gameObject.tag == "Bullet") {
// バレットの破壊処理を呼び出す(メソッド名を修正すれば、一緒に修正される)
DestroyBullet(col);
// 侵入してきたコライダーのゲームオブジェクトに Bullet スクリプトがアタッチされていたら取得して bullet 変数に代入して、if 文の中の処理を行う
if (col.gameObject.TryGetComponent(out Bullet bullet)) {
// HPの更新処理とエネミーの破壊確認の処理を呼び出す
UpdateHp(bullet);
}
}
}
/// <summary>
/// バレットの破壊処理
/// </summary>
private void DestroyBullet(Collider2D col)
{
// 侵入判定の確認
Debug.Log("侵入したオブジェクト名 : " + col.gameObject.tag);
// バレットを破壊する
Destroy(col.gameObject);
}
/// <summary>
/// Hpの更新処理とエネミーの破壊確認処理
/// </summary>
private void UpdateHp(Bullet bullet)
{
// hpの減算処理
hp -= bullet.bulletPower;
if (hp <= 0) {
hp = 0;
// このゲームオブジェクトを破壊する
Destroy(gameObject);
} else {
Debug.Log("残り Hp : " + hp);
}
}
}
スクリプトを修正したらセーブします。
EnemySet ゲームオブジェクトのインスペクターを確認して、新しく public 修飾子で宣言した変数が表示されているか確認します。
EnemySet ゲームオブジェクト インスペクター画像