7.旧暦モジュールサンプルアプリケーションの作成7. Creating a Lunar Module sample application

このチュートリアルでは、前のレッスンで説明した複数の概念を組み合わせて、独自のサンプルエクスペリエンスを作成します。In this tutorial, we combine multiple concepts presented in the previous lessons to create a unique sample experience. 旧暦モジュールアセンブリアプリケーションを作成します。このアプリケーションでは、ユーザーが追跡したハンドを使用して旧暦モジュールパーツを取得し、旧暦モジュールを組み立てるようにします。We will create a lunar module assembly application whereby a user needs to use tracked hands to pick up lunar module parts, and attempt to assemble a lunar module. Pressable ボタンを使用して配置ヒントを切り替え、エクスペリエンスをリセットして、旧暦モジュールをスペースで起動します。We use pressable buttons to toggle placement hints, to reset our experience, and to launch our lunar module into space! 今後のチュートリアルでは、このエクスペリエンスの構築を続けています。これには、空間アラインメントに Azure 空間アンカーを利用する強力なマルチユーザーユースケースが含まれます。In future tutorials, we will continue to build upon this experience, which includes powerful multi-user use cases that leverage Azure Spatial Anchors for spatial alignment.

目的Objectives

  • 前のレッスンの複数の概念を組み合わせて固有のエクスペリエンスを作成するCombine multiple concepts from previous lessons to create a unique experience
  • オブジェクトを切り替える方法を学習するLearn how to toggle objects
  • 押しボタンを使用して複雑なイベントをトリガーするTrigger complex events using pressable buttons
  • 剛体の物理学と力を使用するUse rigidbody physics and forces
  • ヒントの使用を調査するExplore the use of tool tips

手順Instructions

月着陸船の構成Configuring the Lunar Module

このセクションでは、サンプルエクスペリエンスを作成するために必要なさまざまなコンポーネントについて説明します。In this section, we introduce the various components needed to create our sample experience.

  1. 基本シーンに旧暦モジュールアセンブリ prefab を追加します。Add the Lunar Module Assembly prefab to your base scene. これを行うには、[プロジェクト] タブで、ロケット Launcher_Tutorial を検索します。To do this, from the Project tab, search for Rocket Launcher_Tutorial. 「Assets-> BaseModuleAssets-> Prefabs」で prefab を見つけます。Find the prefab in Assets->BaseModuleAssets->Prefabs. また、2つのロケットランチャー prefabs も表示されます。1つは "チュートリアル" という名前で、もう1つは "complete" という名前です。You'll also see two rocket launcher prefabs; one with the name "tutorial" and the other with the name "complete". ロケット Launcher_Tutorial prefab を基本シーンにドラッグし、必要に応じて位置を移動します。Drag the Rocket Launcher_Tutorial prefab to your base scene, and position as you wish. 注:ロケット Launcher_Complete prefab は、参照用に用意された、完成したランチャーです。Note: The Rocket Launcher_Complete prefab is the completed launcher, provided for reference.

Lesson6 Chapter1 Step1im

階層内でロケット Launcher_Tutorial game オブジェクトを展開し、さらに太陰暦モジュールオブジェクトをさらに展開すると、"x 射線" という名前の素材を持ついくつかの子オブジェクトが見つかります。If you expand the Rocket Launcher_Tutorial game object in your hierarchy, and further expand the Lunar Module object, you find several child objects that have a material called, "x-ray." "X 射線" のマテリアルでは、ユーザーの配置ヒントとして使用する半透明色を使用できます。The "x-ray" material allows for a slightly translucent color that we will use as placement hints for the user.

Lesson6 chapter1.txtについては、次の図に示すように、ユーザーが対話する、太陰暦モジュールに5つの部分があります。Lesson6 Chapter1 Noteaim There are five parts to the lunar module that the user will interact with as shown in the image below:

  1. 探査車格納庫The Rover Enclosure
  2. 燃料タンクThe Fuel Tank
  3. エネルギー セルThe Energy Cell
  4. ドッキング ポータルThe Docking Portal
  5. 外部センサーThe External sensor

Lesson6 Chapter1 Notebim

注:基本のシーン階層に表示されるゲームオブジェクト名は、シーン内のオブジェクトの名前に対応していません。Note: The Game object names that you see in your base scene hierarchy do not correspond to the names of the objects in the scene.

手順 2:月着陸船にオーディオ ソースを追加します。Step 2: Add an audio source to the lunar module. 基本のシーン階層で旧暦モジュールが選択されていることを確認し、[コンポーネントの追加] をクリックします。Make sure the lunar module is selected in your base scene hierarchy, and click Add Component. オーディオソースを検索し、それをオブジェクトに追加します。Search for Audio Source, and add it to the object. ここでは空白のままにしておいてください。ただし、[Spatialize] チェックボックスをオンにして、空間オーディオを有効にしてください。Leave it blank for now, but make sure to click the "Spatialize" checkbox to enable spatial audio. これは、後で発射音を再生するために使用します。We will use this to play the launching sound later.

Lesson6 Chapter1.txt Step2im
手順 3:スクリプトを追加し、配置ヒントを切り替えます。Step 3: Add the script, Toggle Placement Hints. [コンポーネントの追加] をクリックし、[配置ヒントの切り替え] を検索します。Click Add Component, and search for Toggle Placement Hints. これは、前に説明した半透明なヒント (x 線を持つオブジェクト) のオンとオフを切り替えることができるカスタムスクリプトです。This is a custom script that lets you turn on and off the translucent hints (objects with the x-ray material) mentioned earlier.
Lesson6 Chapter1.txt Step3im
手順 4:5つのオブジェクトがあるため、game オブジェクトの配列サイズとして「5」と入力します。Step 4: Since we have five objects, type in "5" for the game object array size. 5つの新しい要素が表示されます。You'll then see five new elements appear.

Lesson6 Chapter1 Step4bim

各半透明オブジェクトを [すべての名前 (Game Obect)] ボックスにドラッグします。Drag each of the translucent objects into all the Name (Game Obect) boxes. [Base Scene] の月着陸船の次のオブジェクトをドラッグします。Drag the following objects from the lunar module in your base scene:

• Backpack• Backpack

• GasTank• GasTank

• Topleftbody• Topleftbody

• Nose• Nose

• LeftTwirler• LeftTwirler

Lesson6 Chapter1 Step4aim

これで、配置ヒントの切り替えスクリプトが構成されました。Now the Toggle Placement Hints script is configured. これにより、ヒントを有効または無効にすることができます。This allow us to turn hints on and off.

手順 5:Launch 旧暦モジュールスクリプトを追加します。Step 5: Add the Launch Lunar Module script. [コンポーネントの追加] ボタンをクリックし、"launch 旧暦モジュール" を検索して選択します。Click the Add Component button, search for "launch lunar module", and select it. このスクリプトは、旧暦モジュールを起動します。This script launches the lunar module. 構成されたボタンを押したときに、旧暦モジュールの固定本文コンポーネントに上位の力を追加し、モジュールを上方に起動します。When we press a configured button, it adds an upward force to the lunar module's rigid body component, and causes the module to launch upwards. 屋内にいる場合は、月着陸船が天井メッシュに当たってクラッシュする可能性があります。If you are indoors, the lunar module may crash against your ceiling mesh. ただし、屋外にいる場合は、宇宙をいつまでも飛行します。But if you are outdoors, it will fly in to space indefinitely.

Lesson6 Chapter1 Step5im

手順 6:月着陸船が正常に上に向かって飛行するように [推進力] を調整します。Step 6: Adjust the thrust so that the lunar module will fly up gracefully. 0.01 の値を試してください。Try a value of 0.01. [Rb] フィールドは空白のままにします。Leave the "Rb" field blank. Rb は剛体を表し、このフィールドは実行時に自動的にデータが入力されます。Rb stands for rigid body, and this field will be automatically populated during runtime.

Lesson6 Chapter1 Step6im

旧暦モジュールパーツの概要Lunar Module Parts overview

旧暦モジュールパーツの親オブジェクトは、ユーザーが操作するオブジェクトのコレクションです。The Lunar Module Parts parent object is the collection of the objects that the user interacts with. Paretheses に名前が付いているシーンを含む Game オブジェクト名は、次の一覧に示されています。The Game object names, with scene labeled names in paretheses, are provided in the list below:

  • Backpack (燃料タンク)Backpack (Fuel Tank)
  • GasTank (エネルギー セル)GasTank (Energy Cell)
  • TopLeftBody (探査車格納庫)TopLeftBody (Rover Enclosure)
  • Nose (ドッキング ポータル)Nose (Docking Portal)
  • LeftTwirler (外部センサー)LeftTwirler (External Sensor)

これらの各オブジェクトには、レッスン4で説明した操作ハンドラーがあることに注意してください。Notice that each of these objects has a manipulation handler as discussed in Lesson 4. 操作ハンドラーを使用すると、ユーザーはオブジェクトを取得して操作できます。With the manipulation handler, users can grab and manipulate the object. また、設定 [2 つのきき操作の種類] が [移動と回転] に設定されていることにも注意してください。Also note that the setting, Two Handed Manipulation Type is set to Move and Rotate. これにより、ユーザーはオブジェクトを移動することしかできず、サイズは変更できません。これは、アセンブリ アプリケーションには望ましい機能です。This only permits the user to move the object and not change its size, which is the desired functionality for an assembly application. さらに、モジュールパーツを直接やり取りするためだけに、遠くの操作はオフになっています。In addition, Far Manipulation is unchecked to allow only for direct interaction of module parts.

Lesson6 Chapter2im

部分アセンブリデモスクリプト (上図参照) は、ユーザーがユーザーによってユーザーが旧暦モジュールに配置するオブジェクトを管理するスクリプトです。The Part Assembly Demo script (shown above) is the script that manages the objects that the user places on the lunar module by the user.

フィールドを配置するオブジェクトは、上の図に示すように選択されている変換です。これは、接続先のオブジェクトに関連付けられている backpack/燃料タンクです。The Object To Place field is the transform that is selected, as shown in the image above, the backpack/fuel tank associated with the object that it connects to.

近距離距離と遠く距離の設定によって、どのパーツがどこに配置されているか、または解放できるかが決まります。The Near Distance and Far Distance settings determine the proximity to which parts snap in place or can be released. たとえば、backpack/燃料タンクは、位置に合わせる前に、旧暦モジュールから離れた0.1 単位である必要があります。For example, the backpack/fuel tank needs to be 0.1 units away from the lunar module before it will snap into place. [遠くの距離] 設定では、オブジェクトが旧暦モジュールからデタッチできるようになる位置が設定されます。The Far Distance setting sets the location where the object can be before it can detach from the lunar module. この場合、ユーザーの手は Backpack/燃料タンクをつかみ、再度はめ込まれないように取り外すには月着陸船から 0.2 ユニット離れた場所に引く必要があります。In this case, the user’s hand must grab the backpack/fuel tank and pull it 0.2 units away from the lunar module to remove it from snapping back into place.

ツールヒントオブジェクトはシーンのツールヒントラベルです。The Tool Tip Object is the tool tip label in the scene. オブジェクトが所定の位置にスナップされると、ラベルは無効になります。When the objects are snapped in place, the label is disabled.

オーディオソースが自動的にグラブされます。The Audio Source is automatically grabbed.

配置ヒントボタンPlacement Hints buttons

レッスン 2 では、項目の色を変更したり、押されたら音を再生したりするなどの操作を実行するためのボタンを配置および構成する方法を学習しました。In Lesson 2, you learned how to place and configure buttons to do things like change the color of an item or make it play a sound when it is pushed. ここでは配置のヒントを切り替えるためのボタンを構成するため、これらの原則を引き続き使用します。We will continue to use those principles as we configure our buttons for toggling placement hints.

目標は、ユーザーが配置ヒントボタンを押すたびに、半透明の配置ヒントが表示されるように、ボタンを構成することです。The goal is to configure our button so that every time the user presses the Placement hint button, it toggles the visibility of the translucent placement hints.

手順 1:基本のシーン階層で配置ヒントオブジェクトが選択されている間、[インスペクター] パネルの空のランタイムのみのスロットに旧暦モジュールを移動します。Step 1: Move the lunar module to the empty Runtime Only slot in the inspector panel while the Placement Hints object is selected in your base scene hierarchy. Lesson6 Chapter3 Step1im 手順 2:次に、[関数なし] ドロップダウンリストをクリックします。Lesson6 Chapter3 Step1im Step 2: Now click the No Function dropdown list. TogglePlacementHints に移動し、そのメニューの [ToggleGameObjects ()] を選択します。Go down to TogglePlacementHints, and under that menu select ToggleGameObjects (). ToggleGameObjects () は、ボタンが押されるたびに表示または非表示になるように配置ヒントのオンとオフを切り替えます。ToggleGameObjects() toggles the placement hints on and off so that they are visible or invisible each time the button is pressed.
Lesson6 Chapter3 Step2imLesson6 Chapter3 Step2im

[リセット] ボタンの構成Configuring the Reset button

ユーザーが間違っている場合や、誤ってオブジェクトを破棄した場合や、エクスペリエンスをリセットしたい場合があります。There will be situations where the user makes a mistake, or accidently throws the object away, or just wants to reset the experience. [リセット] ボタンをクリックすると、エクスペリエンスを再起動する機能が追加されます。The Reset button adds the ability to restart the experience.

手順 1:[リセット] ボタンを選択します。Step 1: Select the Reset button. 基本シーンでは、ResetRoundButton という名前が付けられます。In the base scene, it’s named, ResetRoundButton.

手順 2:[インスペクター] パネルの [Button] の下にある空のスロットに、[基本シーン] 階層から旧暦モジュールをドラッグします。Step 2: Drag the lunar module from the base scene hierarchy into the empty slot under Button Pressed the inspector panel. Lesson6 Chapter4 Step2imLesson6 Chapter4 Step2im

手順 3:[関数なし] ドロップダウンメニューを選択し、LaunchLunarModule の上にポインターを合わせ、resetModule () を選択します。Step 3: Select the No Function dropdown menu, and hover over LaunchLunarModule, select resetModule ().

Lesson6 Chapter4 Step3im

注:既定では、BroadcastMessage は ResetPlacement に構成されていることに注意してください。Note: Notice that by default, the GameObject.BroadcastMessage is configured to ResetPlacement. これにより、RocketLauncher_Tutorial のすべての子オブジェクトに対する ResetPlacement というメッセージがブロードキャストされます。This broadcasts a message called, ResetPlacement for every child object of the RocketLauncher_Tutorial. ResetPlacement () のメソッドを持つオブジェクトは、位置をリセットすることによって、そのメッセージに応答します。Any object that has a method for ResetPlacement() responds to that message by resetting it's position.

旧暦モジュールを起動していますLaunching the lunar module

このセクションでは、起動ボタンの構成方法を explaings します。This section explaings how to configure the Launch button. これにより、ユーザーはボタンを押して、旧暦モジュールをスペースで起動できます。This permits the user to press the button and launch the lunar module into space.

手順 1:[起動] ボタンを選択します。Step 1: Select the Launch button. それが呼び出される基本シーンでは、LaunchRoundButton になります。In the base scene it’s called, LaunchRoundButton. [インスペクター] パネルの [タッチエンド] の下にある空のスロットに、旧暦モジュールをドラッグします。Drag the lunar module to the empty slot under Touch End in the Inspector panel. Lesson6 Chapter5 Step1im 手順 2:[関数なし] ドロップダウンメニューを選択し、LaunchLunarModule の上にマウスポインターを移動し、[StopThruster ()] を選択します。Lesson6 Chapter5 Step1im Step 2: Select the No Function dropdown menu, and hover over LaunchLunarModule, and select StopThruster (). これにより、ユーザーが旧暦モジュールに与える推力の量が制御されます。This controls how much thrust the user wants to give to the lunar module. Lesson6 Chapter5 Step2imLesson6 Chapter5 Step2im
手順 3:ButtonPressed れた () の下で、空のスロットに旧暦モジュール (クリック、ホールド、ドラッグ) を追加します。Step 3: Under ButtonPressed(), add the lunar module (click, hold, and drag) to the empty slot.

手順 4:[関数なし] ドロップダウンメニューをクリックし、LaunchLunarModule の上にマウスポインターを移動し、[StartThruster ()] を選択します。Step 4: Click the No function dropdown menu, and hover over LaunchLunarModule, and select StartThruster (). Lesson6 Chapter5 Step4imLesson6 Chapter5 Step4im
手順 5:音楽がロケットの撮影時に再生されるように、旧暦モジュールに音楽を追加します。Step 5: Add music to the lunar module so that music plays when the rocket takes off. これを行うには、[] ボタンが押された状態の次の空のスロット () に旧暦モジュールをドラッグします。To do this, drag the lunar module to the next empty slot under Button Pressed().

手順 6:[関数なし] ドロップダウンメニューを選択し、AudioSource の上にマウスポインターを移動して、[PlayOneShot (Audiosource)] を選択します。Step 6: Select the No Function dropdown menu, hover over AudioSource, and select PlayOneShot (AudioClip). MRTK に含まれているさまざまな音から自由に選択してください。Feel free to explore the variety of sounds included with the MRTK. この例では、"MRTK_Gem" を使用します。For this example, we'll use "MRTK_Gem." Lesson6 Chapter5 Step6imLesson6 Chapter5 Step6im

結論Congratulations

このアプリケーションは完全に構成されています。You have fully configured this application. ここで、[再生] をクリックすると、旧暦モジュールを完全に組み立て、ヒントを切り替えることができます。さらに、旧暦モジュールを起動してリセットし、再起動してもう一度開始します。Now, when you press play, you can fully assemble the lunar module, toggle hints, launch the lunar module, and reset it to start all over again.