Unityのアドベンチャーゲーム制作アセットAdventure Creator を使って、マウスクリックでクローズアップ表示したアイテムをマウスドラッグで回転する処理を試してみたいと思います。
こちらの記事でマウスクリックしたアイテムオブジェクトをクローズアップ表示して背景をぼかす方法を行いました。
今回は情報を整理するために、クローズアップ表示したアイテムをマウスドラッグで回転する方法の部分だけに限定して手順を確認したいと思います。
Adventure CreatorのNew Game Wizardで新しいマネージャーセットとシーン階層を作成。メニュー:Adventure Creator > Getting standard > New Game Wizardを選択。Playerは 一人称視点、操作方法はFirst
Person にしました。
先に今回のシーン内容に合わせてライティングの設定を変更しておきます。
メニュー:Window > Lighting > Settings を選択。[Lighting]パネルが表示されたらEnvironment > Skyboxはなしに変更。Realtime > Realtime Global Illuminationのチェックは外しておきます。
それから、Lightmappng Settings > Ambient Occlusion にチェックをいれて、Directional Mode を Non-Directional に変更しておきます。
そして部屋のオブジェクトをシーンに配置します。基本形状を組み合わせて幅と奥行きが6m、高さ3mの部屋を作りました。部屋の中央にCubeオブジェクトを使ってアイテムを置くステージを配置。天井のライトも基本形状を使って配置。自己発光マテリアルを設定しています。
オブジェクトはすべて[Inspector]ウィンドウのオブジェクト名右側にある”Static”にチェックを入れてライトマッピングを有効しています。
テクスチャ素材はUnityのアセットストアの無料テクスチャYughues Free Architectural Materials を使用しています。
天井のライト形状に合わせたArea Lightを配置。Light Probeも追加しておきましょう。シーンに最初から配置されているDirectional Lightは不要なので削除。[Scene]ビューでみるとこんな感じです。
一人称視点のPlayerプレハブを作成します。こちらの記事の手順に沿って作成しました。一部コンポーネントの内容を調整して下図のようになりました。(画像拡大)
一通りシーンの準備ができたので、アイテムオブジェクトを用意します。今回はUnityの無料アセットからSurvival Kit Lite を使用します。
アセットの中にある8個のアイテムから今回は”Flashlight”を使用することにしました。
シーンに配置したアイテムのプレハブ(インスタンス)にBox Collider コンポーネントを追加。さらに、[Inspector]ウィンドウ > [Add Component]ボタン > Adventure Creater > Hotspots > Hotspot コンポーネントを追加します。Box Collider コンポーネントは追加すると自動的にサイズ調整されますが、クリックし易いように少し大きく調整しました。
シーンに配置したアイテムの編集を続ける前に、先にクローズアップ表示用のプレハブを作成します。
シーンに配置したアイテムのプレハブ(インスタンス)を[Project]ウィンドウにドラッグして新しいプレハブを作成します。名前を”Examine Flashlight”に変更しておきます。
シーンに配置したアイテムの編集に戻りましょう。まずはアイテムのプレハブ(インスタンス)を分解します。
[Hierarchy]ウィンドウ > Flashlight を選択。[Inspector]ウィンドウ > Hotspot (Script) コンポーネントの右側にある歯車アイコン > Move Up を選択。”Break Prefab Instance”ダイアログが表示されたら[Continue]ボタンをクリック。これでシーンに配置したアイテムのプレハブ(インスタンス)が分解できたので、独立したオブジェクトとして編集を進めていきます。
シーンに配置したアイテムにの Hotspot コンポーネントの Use Interaction にアクションを追加します。
[Add Component] > Adventure Creator > Hotspot を選択。作成された Hotspot (Script) コンポーネント > [Use Interactions]パネル > Interaction: フィールドにActionList名”Flashlight: Use (Interaction)”が表示されます。右側にあるアイコンをクリックするとActionListエディターが開きます。
ActionListエディターにノードを作成しましょう。アクションの流れは次の通りです。
ActionListの全体図はこのようになります。(図を拡大)
次にマウスドラッグ操作をするためコンポーネントを追加。[Add Component]ボタン > Physic > Sphereを選択します。Radiusの値はオブジェクトのサイズに自動的に調整されます。
次に[Add Component]ボタン > Scripts > AC > Moveable_Dragを選択。Moveable_Drag コンポーネントを追加すると自動的にRigidbody コンポーネントが追加されます。Use Gravity のチェックを外します。
Moveable_Drag コンポーネントの設定はDrag mode: [Rorate Only]に変更、Disable gravity when held? のチェックを外しておきます。
一通り設定ができたのでゲームを再生してみましょう。懐中電灯をクリックすると非表示になりますが、クローズアップ表示のオブジェクトが見当たりません。どうやらプレハブ”Examine Flashlight”の座標を調整していませんでした。
Playerの Capsule コライダーとアイテムのSphere コライダーが接触しないで、カメラの正面に表示されるように Transform > Position の値をX: 0 / Y: 0 / Z: 0.8 に調整しました。ゲームを再生してクローズアップ表示中の状態を[Scene]ビューで右側から見るとこのようになっています。
もう一度ゲームを再生すると、アイテムがクローズアップ表示されますが、マウスドラッグで回転することができません。これはHotspotのアクションが実行されるとゲームが一時停止するためです。
[Hierarchy]ウィンドウ > _Interactions > Flashlight: Use を選択。[Inspector]ウィンドウ > Interaction (Script) コンポーネント > Interaction Properties > When running: [Run in Background] に変更します。今回の作成したシーンをWebGLでビルドしてみました。画像クリックするとダウンロード再生できます。(ファイルサイズ:約27MB)
Wキー前進、Aキー左移動、Sキー後退、Dキー右移動。
右クリッククローズアップ表示終了。Tabキー視点操作切り替え。