Unity Adventure Creatorチュートリアル:マウスで操作できるオブジェクトの作成-Part1

Unityのアドベンチャーゲーム制作アセットAdventure Creatorの公式サイトに掲載されている英語のチュートリアル を翻訳しながら進行中。今回はマウスで操作できるオブジェクトの作成方法を勉強します。

マウスで操作できるオブジェクトの作成

原文:Creating an object that can be picked up

このチュートリアルでは、プレーヤーがマウスカーソルまたはタッチスクリーンでピックアップして操作できるオブジェクトを作成します。PhysicsDemoの3Dモデル”Rock”アセットを使用しますが、これらの手順はすべてのメッシュオブジェクトで機能します。

チュートリアルを正確に進めるには、こちら からphysics demoパッケージファイルをダウンロードしてください。ダウンロードしたパッケージファイルをプロジェクトにインポートするには、メニュー:Assets > Import Package > Custom packageを選択します。

既存のGame Managerセットを使用して新しシーン階層を作成。新しく準備する場合は、メニュー:Adventure Creator > Getting started > New Game Wizardを選択して新しいGame Managerセットを作成後、新しいシーン階層を作成します。

シーン階層の作成は[AC Game Editor]ウィンドウ > [Scene]タブ:Scene manager > Basic structure > Organise room objects: [With folders]ボタンをクリックします。

[Project]ウィンドウ > Assets > PhysicsDemo > Models > Rock > Rock.fbxを選択し、[Hierarchy]ウィンドウ、または[Scene]ビューにドラッグして配置します。

Rock.fbxにはマテリアルが割り当てられていないので、必要であれば同じフォルダにあるRockマテリアルを割り当てます。

次に、[AC Game Editor]ウィンドウ > [Scene]タブ:Scene managerき、プレハブのリストを探します。そして[AC Game Editor]ウィンドウ > [Scene]タブ:Scene manager > Scene prefabs > Movable > [Pickup]ボタンを探します。

[Pickup]ボタンをクリックして新しいPickUpプレハブを作成します。、名前を”Rock_PickUp”に変更します。次に、3Dモデル”Rock”をPickUpプレハブにドラッグして、子オブジェクトにします。階層は次のようになります。

デフォルトでは、PickUpプレハブは、物理挙動を処理するためだけでなく、マウスクリックを検出するSphere Colliderコンポーネントがあらかじめ含まれています。3Dモデル”Rock”の形状は球ではないので、Sphere Colliderコンポーネントを取り除き、別のColliderコンポーネントを追加してスケールを調整します。Sphere Colliderコンポーネントを削除するには、[Inspector]ウィンドウ] > [Sphere Collider]コンポーネントの右上隅のアイコン[icon name="cog"]をクリックし、Remove componentを選択します。

[Hierarchy]ウィンドウ > _Moveables > Rock_PickUpを選択したまま、メニュー:GameObject > Create Empty Childを選択します。追加されたオブジェクトの名前を”Rock_Collider”に変更します。階層は次のようになります。

この子オブジェクト”Rock_Collider”に新しいBox Colliderコンポーネントを追加します。[Inspector]ウィンドウ > [Add Component]ボタンをクリック > Physics > Box Colliderを選択します。3Dモデル”Rock”のメッシュサイズにあわせてBox Colliderコンポーネントのサイズを調整します。

物理挙動判定の精度を上げる場合は、Box ColliderコンポーネントではなくMesh Colliderを使用することもできます。

3Dモデル”Rock”は手に取る準備ができました!シーンを実行し、3Dモデル”Rock”をドラッグしてテストします。ただしこのオブジェクトは重力の影響を受けるため、シーン内で落下しないように、あらかじめ地面や床のオブジェクトを配置しておく必要があります。この時点では、マウスドラッグで画面空間内でのみ移動することができます。回転させることも、遠くに移動することもできません。

Rock_PickUpプレハブのMoveable_Pick Upコンポーネント内で、これらの各機能を有効にすることができます。Rotation settings: Allow rotation?、 Zoom settings: Allow zooming? 、そしてThrow settings: Allow throwing?パネルをそれぞれチェックを入れると追加フィールドが表示されます。これらのフィールドの値は、シーンの詳細、オブジェクトの大きさなどによって異なります。しかし、デフォルト値は効果を見るのに十分なはずです。

これらのコントロールを使用するには、いくつかの新しい入力軸を定義する必要があります。メニュー:Edit > Project Settings > Imputを選択してInputManagerを開き、次の入力を定義します。

  • RotateMoveable:割り当てたボタンを押したままにするとマウスの移動によりオブジェクトが回転します。
  • RotateMoveableToggle:割り当てたボタンを押すと移動モードと回転モードが切り替わります。
  • ThrowMoveable:割り当てたボタンを押されたときにオブジェクトをつかみ、ボタンを放したときにオブジェクトが投げられます。
  • ZoomMoveable:持っているオブジェクトをアクティブなカメラに近づけたり遠ざけたりするための軸。

というわけで、手に取って操作できる物理挙動オブジェクトを作成する手順を見てきました。今回使用した岩の3Dモデルが使われているPhysicsDemoのシーンでは、机に置いてある岩をひっくり返して鍵を手に入れるという仕掛けになっていました。

こんな感じでアイテムを隠し場所から見つける仕掛けや、ヒントメッセージを入手する仕掛けに使うことができそうですね。次回は実際に簡単な仕掛けを考えて作ってみたいと思います。