3Dアクションゲームの作り方13 敵の行動の種類を増やす オブジェクト指向の継承を使いこなそう | Unity入門の森 ゲームの作り方

3Dアクションゲームの作り方13 敵の行動の種類を増やす オブジェクト指向の継承を使いこなそう

Unity 3Dアクションゲームの作り方 ゼルダ・原神・モンハン風 (スマホ化対応)


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

今回は3Dアクションゲームの作り方講座の第13回です。前回はNavMeshシステムを活用して敵AIの移動処理を作成しました。

前回の記事:

3Dアクションゲームの作り方12 敵の移動AI処理を開発 NavMeshの使い方をマスターしよう
今回は3Dアクションゲームの作り方講座の第12回です。前回はHPバーを作成しました。 前回の記事: 第12回目まででは、敵は立ち止まって近くに来たプレイヤーを攻撃していますが、今回は敵を移動させていきましょう。 移動AIシステムをスマートに...


第13回目では敵の行動の種類を増やし、遠距離攻撃できるようにしていきます。

また、オブジェクト指向プログラミングにおける「継承」という概念について説明し、実践的な使い方を解説していきます。


【Line登録者限定のプレゼントもあるよ!】

継承について

まずはC#の継承という概念を簡単に説明します。

一言でいうと、継承元(スーパークラス)の機能を持った新しい独自クラス(サブクラス)を作成することです。

UntiyでC#スクリプトを新規作成した際に

となっていますが、これは「MonoBehaviour」を継承した「AnyClass」を作成しています。そのため「MonoBehaviour」の機能(Unityで使う一般的な機能)が使えます。

このように「クラス名 : 継承元」という記載をすることで継承が簡単にできます。

関連記事:

UnityC# クラスとインスタンスの作り方・コンストラクタの使い方
今回の記事ではクラスについて解説していきます。 クラスについては複数回に分けて解説します。今回はクラスとインスタンスの基本的な使い方について解説します。 ちなみに構造体(struct)も大体クラスと同じものになり、ここで解説する用法は構造体...

独自の敵の作成

敵クラスの継承

今回は敵に独自の機能を持たせるためにこの継承を使っていきます。まずは継承のために「EnemyBase」を少し書き換えます。

「EnemyBase」の「Start」「Update」関数の「void(もしくはprivate void)」の部分を「protected virtual void」に書き換えます。この時点では特に処理に変化はないはずです。

「protected」というのはアクセス修飾子で下記のような意味になります。

public  公開
protected サブクラスにのみ公開
private( 省略可 ) 非公開

このアクセス修飾子は変数にも適用しますので覚えておきましょう。「virtual」も修飾子でサブクラスで「override」(後述)するためのものです。

そして新しくC#スクリプトを作成し「Enemy_Turtle」という名前にしましょう。下記のように記載します。

大事なのはまず「public class Enemy_Turtle : EnemyBase」の部分です。作成した段階では「MonoBehaviour」となっていた部分を「EnemyBase」に書き換え継承します。

そして、「protected override void Start()」「protected override void Update()」のように「override」修飾子をつけることで、継承元の「virtual」修飾子のついた関数をオーバーライド、つまり上書きすることができます。

それぞれの関数内で「base.Start()」「base.Update()」という記載があります。この「base」が継承元を表しており「継承元のStart関数を実行」という意味になり、元の関数を実行しつつ独自の処理を加えることができます。

では一旦この状態で、敵「TurtleShell Variant」に付与されている「EnemyBase」を「Enemy_Turtle」に変えます。

先に「Enemy_Turtle」をドラック&ドロップして、少し面倒ですが「EnemyBase」を参考に参照されているものを同じように設定してから「EnemyBase」をRemoveしましょう。

そのあと「Canvas」オブジェクトの「GameController」に参照されている「Enemys」の参照が切れているので改めて「TurtleShell Variant」をドラック&ドロップして追加しておきましょう。

このように「EnemyBase」のリストであっても、それを継承しているクラス「Enemy_Turtle」を追加することも可能です。

では一旦再生して、同じように動いているかを確認しておきましょう。

独自処理の作成

では「TurtleShell Variant」独自の処理を作成していきます。

今回は「TurtleShell Variant」が遠距離攻撃ができるようにしていきます。

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

次回の記事:

3Dアクションゲームの作り方14 敵の自動生成・ボスの作成・ステージコントロール
今回は3Dアクションゲームの作り方講座の第14回です。いよいよ完成まで近くなってきましたね。 前回は敵の遠距離攻撃を作成し、継承の使い方を学びました。 前回の記事: 第14回目は敵を自動出現させる機能、ボス戦を作り、ゲームステージを構築して...


Unity入門の森オリジナル本格ゲーム制作講座はこちら
11種類の本格ゲームの全ソースコード公開・画像&動画による解説付き

コメント

タイトルとURLをコピーしました