Unityに関連する記事です

 2回の手順に分けて、プレイヤーのオブジェクトがゲームオブジェクトを生成する機能を実装します。

 ボタンを押している時間に合わせてゲームオブジェクトのサイズが変更されるようにし、
かつ、一定時間が経過した場合にも自動的にサイズを決定して生成を終了するようにします。



 下記の動画は完成図です。
<実装動画 .椒織鵑魏,靴討垢阿卜イ后、 最小サイズで生成>
動画ファイルへのリンク


<実装動画◆,靴个蕕ボタンを押してから離す → サイズが変わっていく>
動画ファイルへのリンク


<実装動画 ボタンを押しっぱなしにして離さない → 一定時間後に強制的に最大サイズで確定>
動画ファイルへのリンク




設計


 実装までの手順が大変多く、どこを作っているのか、機能が分からず、迷子になりやすいです。

 最終的な目標としての全体像を把握しておく必要はありますが、
制作していく場合には、少しずつ小分けにして実装を行っていきます。



 最初にもお伝えしているように合計2回の手順に分けて実装します。


<実装内容>
 1.ゲームの舞台用のステージと、プレイヤーのゲームオブジェクト、およびこれらに関連する機能を作成する(この手順で行います)
 2.マテリアルや生成用ゲームオブジェクトを作成する。複数のスクリプトを作成し、サイズ調整付きの生成機能を実装する

 以上のような手順で制作を行います。


ステージの作成


 新しい Scene を作成してください。


Terrain を利用するケース


 ステージは任意に制作してください。
Terrain を利用してもよいですし、アセットを利用しても構いません。

 舞台となる世界観を決めておくことで、ステージの制作もイメージがわきやすくなります。


アセットを利用するケース


 アセットについては無料アセットを紹介しておきます。












プレイヤーのゲームオブジェクト作成


 非VR の場合の作成例です。
VR の場合には、プレイヤーのゲームオブジェクト、プレイヤーの移動、カメラの機能が搭載済ですので、ページの下段にある【VR の場合】の部分までスキップしてください。

 下記の記事を参考に作成しています。
  → キャラクターの移動とカメラの回転機能



 プレイヤーのゲームオブジェクトを作成します。
3Dモデルのアセットを利用するか、Capsule などを作成してプレイヤーのゲームオブジェクトとしてください。
モデルを利用する場合、アセットストアや、無料の3Dモデルサイトなどからゲームに利用したいキャラクターのモデルをダウンロードして、Unity にインポートします。

 今回の制作例では、Unity 公式キャラクターである UnityChan のデータを利用しています。
そちらを利用する場合には、下記の公式サイトより、必要なデータをダウンロードして Unity へインポートしてください。

UNITY-CHAN! OFFICIAL WEBSITE


 
 色々な種類の Unity ちゃんのモデルや、他のキャラクターのモデルもありますので、自分の世界観に見合ったものを利用しましょう。


ノーマル



デフォルメ



ローポリ




 続いて、Sceneビュー 内にインポートしたゲームオブジェクトをドラッグアンドドロップして配置します。
ヒエラルキーに設置してもいいです。

 Unity ちゃんの場合には、Prefabs フォルダ内にある Unitychan ゲームオブジェクトをドラッグアンドドロップしてください。
それ以外のアセットの場合にも大体 Prefabs フォルダがあり、その中に用意されているモデルのゲームオブジェクトを利用するといいでしょう。


ファイルのパス
Assets/UnityChan/Prefabs/unitychan.prefab


フォルダのパス



プレハブの UnityChan ゲームオブジェクト




 Scene ビューに配置したら、地面用のゲームオブジェクトと接地するように配置してください。
また、カメラに映る位置に移動させてください。


Sceneビュー画像



Game ビュー画像



プレイヤー用のゲームオブジェクトの設定を行う


 ヒエラルキーでプレイヤー用のゲームオブジェクトを選択し、インスペクターに情報を表示します。
物理演算を利用するため、インスペクターの一番下にある Add Component ボタンを押下して、Rigidbody コンポーネントと CapsuleCollider コンポーネントを追加します。

 なお、Unitychan のモデルによっては SpringManager コンポーネントや、Auto Blink コンポーネントといったものがアタッチされている場合もありますが、
これらは利用しませんので、今回はアタッチされていなくても問題ありません。アタッチされている場合には、そのまま初期設定のままで問題ありませんし、Remove してしまっても構いません。



 続いて、追加したコンポーネントの設定を行います。

 Rigidbody コンポーネント内にある Constraints の設定を行い、物理演算時にゲームオブジェクトが自分の力で回転してしまわないように
Freeze Rotation の各項目(X、Y、Z)にチェックを入れますFreeze Position の方ではないため、気を付けてください。

 CapsuleCollider コンポーネント内の Edit Collider のボタンを押すと、Sceneビュー 内にコライダーが可視化されて、ドラッグアンドドロップでサイズを変更出来るようになります。
アタッチした時点で自動的にコライダーを生成しますが、念のため、モデルに合った形状であるか確認し、問題がある場合には適宜調整を行ってください。



インスペクター画像(コライダーのサイズは参考値として利用ください。)



Sceneビュー画像 ーコライダーー



子オブジェクトを作成する


 ゲームオブジェクトを生成する位置を設定するためのゲームオブジェクトをプレイヤーゲームオブジェクトの子オブジェクトとして作成します。

 プレイヤーのゲームオブジェクトの上で右クリックをしてメニューを開き、Create Empty を行って新しいゲームオブジェクトを作成します。
名前は Spawner にします。ボタンを押した際、この位置にゲームオブジェクトを生成させます。

 位置については後程微調整できますので、まずは、プレイヤーのゲームオブジェクトの前方に位置させてください。
3D空間のため、上下左右斜めと、色々な角度から見るようにして、ちゃんと正面前方に位置しているかを確認しましょう。


ヒエラルキー画像



インスペクター画像



Scene ビュー画像



Scene ビュー画像



Scene ビュー画像



 以上で設定は完了です。


プレイヤーの移動用のスクリプト作成


 プレイヤーのゲームオブジェクトを移動させるためのスクリプトを作成します。


PlayerController.cs

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


 スクリプトを作成したらセーブします。


プレイヤー用のゲームオブジェクトに PlayerController スクリプトをアタッチして設定を行う


 プレイヤー用のゲームオブジェクトに、先ほど作成した PlayerController スクリプトをドラッグアンドドロップしてアタッチします。

 インスペクターを表示し、スクリプトが正常にアタッチされていることを確認します。
合わせて、MoveSpeed 変数に値の設定を行ってください。5 〜 10 位が目安値です。


インスペクター画像




カメラの回転用のスクリプト作成


 カメラの制御については Cinemachine を利用している前提です。
Cinemachine を利用していない場合や、カメラの回転機能が不要の場合には、このスクリプトは不要です。

 下記に参考値を掲載します。


インスペクター画像 MainCamera



インスペクター画像◆Cinemachine による VirtualCamera



インスペクター画像 Cinemachine による VirtualCamera の Body



Game ビュー画像 Cinemachine の Soft Zone 設定





 マウスの右クリックを押したままドラッグすることでカメラの上下左右回転を実装するスクリプトです。


CameraControllerFromCinemachine.cs

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


 スクリプトを作成したらセーブします。


VR の場合


 VR デバイスに Meta Quest 2、アセットには OculusIntegration を利用する場合のケースを提示します。

 アセットストアより OculusIntegration をインポートしてください。
こちらに記事を用意していますので、参考にしてください。

 => VR の準備



 このアセットには VR 用のプレイヤーの移動機能を持つプレハブが用意されています。
移動のためのスクリプトを新しく作成する必要はありませんので、こちらを利用する方法が便利です。

 下記のパスにある OVRPlayerController プレハブをヒエラルキーにドラッグアンドドロップしてください。


パス
Assets/Oculus/VR/Prefabs/OVRPlayerController



 OVRPlayerController の子オブジェクトには OVRCameraRig ゲームオブジェクトが含まれており、こちらが VR 用のカメラになります。
そのため、ヒエラルキーにある MainCamera ゲームオブジェクトは削除するか、非表示にしてください。



 移動処理自体は OVRPlayerController のみで実装済ですが、侵入判定に必要なコンポーネントはアタッチされていません
そのため、Rigidbody コンポーネント、および CapsuleCollider コンポーネントを追加し、侵入判定に必要な設定を行ってください


インスペクター画像例



コライダー設定例




 また、VR の場合には、プロジェクトの設定を行う必要があります。
下記の MetaQuest 公式サイトを参考にプロジェクトの設定を行ってください。


参考サイト
MetaQuest
Unity設定を構成する




 VR に関しては記事も多く用意されています。
なるべく新しい記事を見つけて読んでおくことをお勧めします。

 また実装方法については、OculusIntegration を利用する場合と、XR Interaction Toolkit を利用する場合でも内容が異なります。
記事の趣旨を理解した上で参考にしてください。


参考サイト
MANURITO 様
【VR】ド素人と始めるVR開発【Quest2】Part2 歩き回る、モノを掴む
note 天野 スズラン 様
UnityでVRゲーム製作!XR Interaction Toolkit 移動&ターン編



 以上でこの手順は終了です。

 => 次は ゲームオブジェクト生成ロジックの実装例 です。

コメントをかく


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

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

Menu



技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3Dレールガンシューティング(応用編)

3D脱出ゲーム(抜粋)

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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