Unityに関連する記事です

設計


 2回の手順に分けて、ミニマップ上にマーカー用のアイコンを設置/解除する機能を追加します。

 探索時においてマーカーを設置し、侵入時の目安として利用できるようにします。

 今回はプレイヤーの位置にマーカー用のアイコンを生成/破棄する機能を実装します。
なお、候補となるアイテムがある場合のみマーカーを生成できるように制限していますが、制限なしでもいいでしょう。

 その辺りはゲーム性を考慮して実装する前に検討しておいてください。


<次の手順まで実装した際の完成動画 
動画ファイルへのリンク


<次の手順まで実装した際の完成動画◆
動画ファイルへのリンク


TargetIconEvent スクリプトを作成する


 生成されるアイコン用のゲームオブジェクトにアタッチし、制御を行うクラスになります。

 アイコンをミニマップに描画する処理と、ミニマップから削除する処理を実装しています。


TargetIconEvent.cs

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



TargetIconMaterial の作成を行う


 画像の設定ができるマテリアルを作成します。

 任意のフォルダ内で右クリックをしてメニューを開き、Create => Material を選択し、名前を TargetIconMaterial に変更します。

 インスペクターの Shader を Unlit => Transparent に設定します。

 右上の None になっている部分に任意の画像を設定します。
この画像が、ミニマップに表示されるアイコンの画像になります。






TargetIconEvent ゲームオブジェクトを作成する


 アイコン用の TargetIconEvent ゲームオブジェクトを作成します。

 下記が完成図です。






 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、3D Object => Sphere を選択します。
名前を TargetIconEvent に変更します。

 このオブジェクトがゲーム画面のプレイヤーの前面に配置されます。
ですが、このゲームオブジェクト自体はゲーム画面に映す必要はなく、子オブジェクトのアイコンを表示させるためのポイント役です。

 MeshRenderer のチェックを外して、描画されないようにしておきます。

 Sphere Collider の IsTrigger のチェックを入れておきます。

 Layer に GroundDetector を設定します。

 最後に TargetIconEvent スクリプトをドラッグアンドドロップしてアタッチし、EventType を TargetIcon に設定します。







MinimapIcon ゲームオブジェクトを作成する


 続いて、子オブジェクトを作成します。

 TargetIconEvent ゲームオブジェクトの上で右クリックをしてメニューを開き、3D Object => Cude を選択します。
名前を MinmapIcon に変更します。
 
 MeshRenderer の Materials の Element 0 に先ほど作成した TargetIconMaterial をドラッグアンドドロップしてアサインしてください。

 下記のインスペクター画像の Transfrom コンポーネントの値を参考にしながら、アイコンのサイズや回転を設定してください。

 ミニマップに表示するため、ゲーム画面には映らないように、このアイコン用のゲームオブジェクトは上空に浮かぶようにイメージして設定してください。






 完成したらプレファブにし、ヒエラルキーより削除しておいてください。


EventChecker スクリプトを作成する


 OnTiriggerStay メソッドと OnTiriggerExit メソッドを利用して、このスクリプトがアタッチされているゲームオブジェクトのコライダーに
イベント用のゲームオブジェクトが存在しているかを判定し、感知させます。

 その情報を利用して、アイコンのゲームオブジェクトを生成させる機能と連動させます。


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




SearchCircle ゲームオブジェクトを作成する


 プレイヤーのゲームオブジェクトの子オブジェクトとして、SearchCicle ゲームオブジェクトを作成します。

 プレイヤーのゲームオブジェクトの上で右クリックをしてメニューを開き、3D Object => Cube を選択します。
名前を SearchCicle に変更してください。

 Transfrom コンポーネントの Scale の Y のみを 0.1 に変更して、高さを低くします。
もちろん、そのままでも問題ありません。

 BoxCollider コンポーネントの IsTrigger にチェックを入れておきます。サイズはそのままで問題ありませんし、必要であれば適宜なサイズに変更してください。
このコライダーのサイズが、当たり判定を行う範囲になります。

 Rigidbody コンポーネントを追加し、Use Gravity のチェックを外します。
Constraints 項目内の Freeze Rotation にはすべてチェックを入れておきます。



 最後に、先ほど作成した EventChecker スクリプトをドラッグアンドドロップしてアタッチします。
この機能により、プレイヤーの前方方向にイベント(EventBase クラスを継承しているスクリプトがアタッチされているゲームオブジェクト)が存在しているかどうかを判定します。

 デバッグしやすいように MeshRenderer コンポーネントのチェックをいれていますが、デバッグが終了したら、チェックを外して見えないようにします。
ゲーム実行時に見えなくするよう、スクリプトで制御してもいいでしょう。
そうすることで、見えない判定用のゲームオブジェクトとして利用します。


左側の四角いゲームオブジェクト(右側はプレイヤーのカプセルコライダー)










TargetIconGenerator スクリプトを作成する


 EventChecker スクリプトと連動し、イベントを感知できたらボタン操作を行うことで、その地点に SearchCircle ゲームオブジェクトを表示します。
表示されている状態で再度ボタン操作を行うと、その地点に、アイコン用の TargetIconEvent ゲームオブジェクトを生成します。

 TargetIconEvent ゲームオブジェクトを感知した状態でボタン操作した場合には、アイコンのゲームオブジェクトを破棄します。


TargetIconGenerator.cs

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



TargetIconGenerator ゲームオブジェクトを作成し、設定を行う


 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、Create Empty を選択し、名前を TargetIconGenerator に変更します。
作成した TargetIconGenerator スクリプトをドラッグアンドドロップしてアタッチし、設定を行います。






デバッグ用のゲームオブジェクトを作成する


 必要に応じて、デバッグ用に、TargetIconEvent をアタッチしたゲームオブジェクトを作成します。

 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、3D Object => Cube を選択します。
Capsule でも構いません。

 BoxCollider コンポーネントの IsTrigger のチェックを入れておきます。

 TargetIconEvent スクリプトをアタッチし、EventType を TargetIcon に設定します。

 デバッグしやすいように、SearchCircle ゲームオブジェクトのそばに設置しておいてください。








ゲームを実行して動作を確認する


 以上ですべての処理が実装されました。

 デバッグ用のゲームオブジェクトをプレイヤーの前に設置して、EventChecker が感知するかを確認してください。
インスペクターで確認ができるようにしてあります。

 その後、感知した状態でボタン操作を行い、SearchCircle ゲームオブジェクトが表示されるか、確認します。
表示されたら、再度ボタン操作を行ってください。アイコンのゲームオブジェクトが生成されて、ミニマップに表示されれば制御成功です。

 生成された位置には、複数のアイコンのゲームオブジェクトは生成出来ませんので、そちらも合わせて確認します。

 問題なければ、最後に、アイコンのゲームオブジェクトの前でボタン操作行い、アイコンのゲームオブジェクトを破棄します。
こちらも、ミニマップから削除されていれば、どちらも制御成功になります。


<次の手順まで実装した際の完成動画 
動画ファイルへのリンク


<次の手順まで実装した際の完成動画◆
動画ファイルへのリンク



 以上でこの手順は完成です。

コメントをかく


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

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

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3D脱出ゲーム(抜粋)

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

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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