Unityに関連する記事です

設計


 アイテムの情報を事前に作成して、ゲーム内に利用できるようにするための準備を行います。

 アイテムの情報自体はデータベースとして取り扱うようにするため、
ItemData クラスを作成して、アイテム1つ分の情報を登録できるようにします。

 それを List でまとめて管理し、データベース化するための ItemDataSO クラスを作成します。
作成したら、ItemDataSO スクリプタブル・オブジェクトを作成して、アイテムの情報を登録します。

 実際にゲーム内のゲームオブジェクトには EventBase クラスを継承した各 Event クラスをアタッチし、
それを Ray によるポインターを使って、ゲームオブジェクトが持つ役割(アイテムなのか、階段なのか、という風に)を取得します。

 Ray による判定を簡便化するためにも、各ゲームオブジェクトにアタッチするクラスはすべて
EventBase クラスを継承した子クラスを作成して、それを利用します。
判定が必要な各ゲームオブジェクトすべてに EventBase クラスがアタッチされていることを条件とすることで、
Ray による判定は常に EventBase クラスを取得し、子クラスごとにオーバーライドしたメソッドによって振る舞いを変更することで
処理の一元化を行えるようにします。


ItemData スクリプトを作成する


 アイテム1つ分の情報を登録するためのクラスです。
必要な情報に応じて変数の宣言を適宜変更して利用してください。


ItemData.cs

<= クリックすると開きます。



ItemDataSO スクリプトを作成する


 ItemData クラスを List で管理することでデータベース化するためのクラスです。
Create AssetMesu 属性と ScriptableObject クラスを継承することで、
スクリプタブル・オブジェクトとして利用します。


ItemDataSO.cs

<= クリックすると開きます。



ItemDataSO スクリプタブル・オブジェクトを作成する


 ItemDataSO スクリプトを利用して、ItemDataSO スクリプタブル・オブジェクトを作成します。

 Datas フォルダを新しく用意し、その中に作成して管理をするようにします。
Datas フォルダ内で右クリックをしてメニューを開き、Create => Create ItemDataSO を選択してください。
名前はそのままで構いません。

 アイテムという枠組みではありますが、取得できるものであれば、いずれもアイテムという括りで考えて貰って構いません。
例えば、情報(ヒント)といったものであっても、それをデータとして登録しておき、ゲーム内で可視化は出来ませんが
所持しているアイテムとして扱うことで利用できるようにします。

<参考例>



 今回の手順では、アイテムの中身(データ)までは取得しないため、次回以降にこのデータを利用するようにします。


EventType スクリプトを作成する


 ゲーム内に登場させるイベントの種類を事前に enum を作成して登録しておきます。
 
 ここでいうイベントとは、ポインターによって感知して処理を行うものを指します。
そのため、アイテムのようなものの他にも、ドアの開閉、階段の昇降といったものもイベント扱いとして考えてください。

 列挙子の種類はゲームの内容に応じたものに適宜変更を行って登録してください。


EventType.cs

<= クリックすると開きます。



EventBase スクリプトを作成する


 ポインターをヒットさせた際に、当たり判定として利用するためのクラスです。
ポインターに判定させたいゲームオブジェクトの親クラスになります。

 実際にゲームオブジェクトにアタッチするのは、この EventBase クラスを継承しているクラスになります。
今回であれば、次に ItemEvent クラスを作成しますので、アイテム用のゲームオブジェクトに ItemEvent クラスをアタッチして
ポインターとの判定を行えるようにする設計です。

 メソッドはすべて virtual キーワードを設定して仮想メソッドとして宣言し、子クラス側でのオーバーライドを想定しておきます。


EventBase.cs

<= クリックすると開きます。



ItemEvent スクリプトを作成する


 EventBase クラスを継承した ItemEvent クラスを作成します。
このクラスをゲームオブジェクトにアタッチしておいて、Ray によるポインターの判定で取得できるように設計します。

 継承した各メソッドは各ゲームオブジェクトの役割に応じた内容に処理をオーバーライドして振る舞いを変更します。
ItemEvent クラスであれば、TriggerEvent メソッドの処理の内容をアイテムとしての処理として記述し、
ItemEvent クラスがアタッチされたゲームオブジェクトをアイテムとして振る舞わせる目的に利用します。


ItemEvent.cs

<= クリックすると開きます。



アイテム用にゲームオブジェクトを作成し、ItemEvent スクリプトをアタッチして設定をする


 アイテム用のゲームオブジェクトをヒエラルキーに配置します。
特にまだ用意していない場合には、仮に Cube ゲームオブジェクトを作成して、それをアイテムとして利用します。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます