超初心者のゲーム開発記~Unity~

超初心者がUnityでゲーム(目標はAndroidアプリ )を開発していくブログです!

【Unity公式チュートリアル】 サバイバルシューター part.5 プレイヤーを追いかける敵を作成する!

こんにちは!ヤギです!

Unity公式チュートリアルのサバイバルシューターをやってみるpart.5になります。

記事概要

今回の記事では、プレイヤーを追いかける敵の作成についてご説明していきます。
※part.5に対応する公式チュートリアルは、
Creating Enemy #1 - Unityとなります。
※前回の記事はこちら
www.yagigame.com

敵のコンポーネントの設定

1. Project > Assets > Models > Characters > ZombunnyをHierarchy viewにドラッグします。
※これが1体目の敵となります。
2. Projects > Asssts > Prefabs > HitParticlesをHierarchy > Zombunnyにドラッグし適用します。
※敵が攻撃を受けた時のエフェクトを設定しています。
f:id:yagigame:20181116173504p:plain
3. Zombunny > Inspector > Layer > Shootableに変更します。
f:id:yagigame:20181116173915p:plain
4. Zombunny > Inspector > Add Componentをクリックし、Rigidbodyを選択します。
5. Rigidbodyを以下の内容に修正します。
・Drag > Infinity
・Angular Dragg > Infinity
・Freeze Position > Yにチェック
・Freeze Rotation > X,Zにチェック
f:id:yagigame:20181116175152p:plain
6. Zombunny > Inspector > Add Componentをクリックし、Capsule Colliderを選択します。
7. Capsule Colliderを以下の内容に修正します。
・Center > y > 0.8
・Height > 1.5
f:id:yagigame:20181116175357p:plain
8. Zombunny > Inspector > Add Componentをクリックし、Sphere Colliderを選択します。
※Playerとの接触検知に使うため、少し大きめにしています。
9. Sphere Colliderを以下の内容に修正します。
・Is Trigger > チェクする
・Center > y > 0.8
・Radius > 0.8
f:id:yagigame:20181116180804p:plain
10. Zombunny > Inspector > Add Componentをクリックし、Audio Sourceを選択します。
※敵が攻撃を受けた時の効果音を設定します。
11. Audio Sourceを以下の内容に修正します。
・Audio Clip > Zombunny Hurt
・Play On Awake > チェックを外す
f:id:yagigame:20181116181118p:plain

移動できる範囲の設定

敵が移動できる範囲の設定を行なっていきます。
※今回はUnityのNavMeshという機能を使っています!
1. Window > AI > Navigationをクリックします。
f:id:yagigame:20181116181942p:plain
2. Zombunny > Inspector > Add Componentをクリックし、Nav Mesh Agentを選択します。
f:id:yagigame:20181116182235p:plain
3. Nav Mesh Agentを以下の内容に修正します。
・Speed > 0.3
・Stopping Distance > 1.3
・Radius > 0.3
・Height > 1.1
f:id:yagigame:20181116183000p:plain
4. 手順1で開いたNavigationを以下の内容に修正します。
・Radius > 0.75
・Height > 1.2
・Step Height > 0.1
5. Navigation > Bakeをクリックし、移動できる範囲を作成します。
f:id:yagigame:20181116184058p:plain
※移動できる範囲が、青く表示されたら成功です!
f:id:yagigame:20181116184336p:plain

敵のアニメーションの作成

1. Projects > Assets > Animation > Animator Controllerを選択し、名前をEnemyACとします。
f:id:yagigame:20181116200939p:plain
2. EnemyACをHierarchy > Zombunnyにドラッグして適用します。
3. EnemyACをダブルクリックし、Animator viewを開きます。
4. Project > Asset > Models > Characters > Zombunnyの「Move」「Idle」「Death」をEnemyACのAnimator viewにドラッグします。
f:id:yagigame:20181116201258p:plain
※オレンジで表示されているのがデフォルトのアニメーションとなります。
5. Animator view > Parameters > +をクリックし、Triggerを選択して、名前を「PlayerDead」とします。
※プレイヤーが倒された場合使用するトリガー
6. Animator view > Parameters > +をクリックし、Triggerを選択して、名前を「Dead」とします。
※敵が倒された場合使用するトリガー
f:id:yagigame:20181116201754p:plain
7. Moveを右クリックし、Make Transitionを選択し、矢印をIdleに繋ぎます。
f:id:yagigame:20181116201858p:plain
8. 7で作成した矢印をクリックし表示されたInspector > Conditionsに 「PlayerDead」を設定します。
9. 7で作成した矢印をクリックし表示されたInspector > Has Exit Timeのチェックを外します。
※このチェックを外すことで、アニメーションが即座に切り替わるようになります。
f:id:yagigame:20181116202230p:plain
10. 同様にAny Stateを右クリックし、Make Transitionを選択し、矢印をDeathに繋ぎます。
11. 10で作成した矢印をクリックし表示されたInspector > Conditionsに 「Dead」を設定します。
12. 10で作成した矢印をクリックし表示されたInspector > Has Exit Timeのチェックを外します。
f:id:yagigame:20181116224840p:plain
※これで、敵のアニメーションの設定は完了です!

プレイヤーを追いかけるスクリプトの作成

1. Project > Assets > Scripts > Enemy > EnemyMovementをZombunnyにアタッチします。
2. Playerを追いかけるスクリプト(EnemyMovement.cs)を作成します。
※一部ソースはコメントアウトしています。今後のチュートリアルで使っていきます!
※今回関係するのは、NavMeshを使いプレイヤーを追いかけるようにするところです。

using UnityEngine;
using System.Collections;

public class EnemyMovement : MonoBehaviour
{
    Transform player;
    //PlayerHealth playerHealth;
    //EnemyHealth enemyHealth;
    UnityEngine.AI.NavMeshAgent nav; //NavMesh Agent(敵)


    void Awake ()
    {
        //プレイヤータグのゲームオブジェクトを探し、場所を取得する
        player = GameObject.FindGameObjectWithTag ("Player").transform;
        //playerHealth = player.GetComponent <PlayerHealth> ();
        //enemyHealth = GetComponent <EnemyHealth> ();
        //NavMeshAgentコンポーネントを取得する
        nav = GetComponent <UnityEngine.AI.NavMeshAgent> ();
    }


    void Update ()
    {
        //if(enemyHealth.currentHealth > 0 && playerHealth.currentHealth > 0)
        //{
            //NavMesh Agent(敵)をプレイヤーに向かって動かす
            nav.SetDestination (player.position);
        //}
        //else
        //{
        //    nav.enabled = false;
        //}
    }
}

※これで、敵がプレイヤーを追いかけるようになります!

実行してみましょう

プレイヤーが移動すると、敵が追いかけてくれば大成功です!
https://yagigameblog.tumblr.com/post/180172667043

次回予告

次回は、画面上に表示されるUIの作成を行なっていきます!
※次回の記事はこちら
www.yagigame.com
次回に対応する公式チュートリアルは、「Health HUD」です!

読んでいただきありがとうございました!