コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity 入門】全方位シューティングを作る 第14回 敵の移動パターンの追加

目次

前回のチュートリアル

はじめに

前回は、出現する敵の種類を追加しました
今回は、敵の移動パターンを追加していきます

プレイヤーを他のスクリプトから参照できるように

現在は、すべての敵が一直線に進むだけで、少し味気ないので、
敵の移動パターンを追加して、見栄えを良くしていきます

その下準備として、プレイヤーを他のスクリプトから参照できるようにしていきます

「Player」スクリプトをコードエディタで開き、
変数の定義に下記のコードを追加します

// プレイヤーのインスタンスを管理する static 変数
public static Player m_instance;

そして、Awake 関数の先頭に下記のコードを記述します

// 他のクラスからプレイヤーを参照できるように
// static 変数にインスタンス情報を格納する
m_instance = this;

これで、他のスクリプトからプレイヤーを参照できるようになりました

敵の移動パターンの追加

今回は、プレイヤーを追尾するような移動パターンを作成していきます

「Enemy」スクリプトをコードエディタで開き、
変数の定義に下記のコードを追加します

public bool m_isFollow; // プレイヤーを追尾する場合 true

そして、Update 関数の先頭に下記のコードを記述します

// プレイヤーを追尾する場合
if ( m_isFollow )
{
    // プレイヤーの現在位置へ向かうベクトルを作成する
    var angle = Utils.GetAngle( 
        transform.localPosition, 
        Player.m_instance.transform.localPosition );
    var direction = Utils.GetDirection( angle );

    // プレイヤーが存在する方向に移動する
    transform.localPosition += direction * m_speed;

    // プレイヤーが存在する方向を向く
    var angles = transform.localEulerAngles;
    angles.z = angle - 90;
    transform.localEulerAngles = angles;
    return;
}

これで、敵の移動パターンの追加が完了しました

敵の移動パターンの反映

移動パターンを追加できたので、
「Enemy2」と「Enemy4」がプレイヤーを追尾するように設定していきます

Unity エディタに戻り、「Enemy2」プレハブと「Enemy4」プレハブを
Ctrl を押しながらクリックすることで、同時に選択します

そして、この状態で、「Is Fllow」をチェックします

これで、Unity を再生すると、「Enemy2」と「Enemy4」は
プレイヤーを追尾するようになったことが確認できます

次回は、取得すると経験値が増える宝石を作成していきます

次のチュートリアル

チュートリアル一覧