Mesh 101 チュートリアル 第 4 章: Mesh Interactables と Physics を使用してオブジェクトを移動し、アニメーションをトリガーする
この章では、風力発電所のモデルを操作します。 Mesh Interactables と Physics を使用して、剛体 (この場合は風力タービン) を取得および解放し、ビジュアル スクリプトを使用してアニメーション トリガーを設定する方法について説明します。 風力タービンを制限して、指定した領域内でのみ移動できるように、物事をまとめていきます。
この章は、第 3 章で行ったことよりも少し簡単です---スクリプトがなく、物理がセッション内のすべてのアバターと同じように見えるようにネットワークが設定されています。
最初の駅を始める前に、いくつかのことを行う必要があります。
階層の再構成
- [Hierarchy]\(階層\) で Chapter3 GameObject を折りたたみ、Chapter4 GameObject を展開します。
第 4 章の球テラスを表示するようにビューを変更する
Mesh のエクスペリエンスでは、参加者は第 3 章の終わりから第 4 章の初めにスムーズに移動し、第 4 章の学習活動を開始するために適切に配置されます。 ただし、第 3 章の最後に再生モードを終了した場合、シーン ウィンドウの Chapter 4 モデルへのビューが自動的に配置されませんでした。 そのビューを設定しましょう。
[階層] で、4.1 -- Grab and Release という名前の GameObject を選択します。
カーソルを [シーン] ウィンドウの上に移動し、キーボードの F キーを押します。
これにより、 ビューは 4.1 -- Grab オブジェクトと Release オブジェクトの中央に配置されますが、必要な位置にいない可能性が高くなります。
次に示すように、第 4 章のステーションが目の前に表示されるまで、ビューをドラッグ、回転、ズームします。
ステーション 4.1: グラブとリリース
トレーニングのこの章の参加者の目標は、風力タービンをテーブルトップから海に移動することです。 そこに配置されると、タービンは海の風をキャッチし、ブレードを回転させ、電力を生成します。
[Hierarchy]\(階層\) で、4.1 -- Grab and Release GameObject を展開します。 これには、シーンのテーブルトップに配置されている 3 つの風力タービン ゲーム オブジェクトが含まれていることに注意してください。
参加者が Mesh で移動できるように、 WindTurbine1 に "グラブとリリース" 機能を追加しましょう。
[階層] で、[WindTurbine1] を選択します。
インスペクターで、[コンポーネントの追加] ボタンをクリックし、Mesh Interactable Setup を検索して追加します。
ヒント
このコンポーネントの説明は、このチュートリアルの 第 3 章 で説明されています。
同じコンポーネントで、[オブジェクトの 種類 ] ドロップダウンをクリックし、[ Manipulable] を選択します。
コンポーネントがアクティブであることを確認します。
Rigidbody コンポーネントで、必要に応じて [拘束]オプションを展開し、[回転の固定]設定で[X]、[Y]、[Z]を選択します。
これにより、不均一な表面にタービンを配置すると、タービンがひっくり返るのを防ぐことができます。
作業をテストする
プロジェクトを保存し、Unity エディターの [再生] ボタンを選択します。
プレイ モードに入るたびに、 ゲーム ウィンドウの開始点は第 3 章の球テラスであることに注意してください。 この章では、もう 1 つの Sphere テラスに---第 4 章の機能を備えています。 幸いなことに、そこに着く簡単な方法があります。
[ 第 4 章に移動 ] 情報ボックスが表示されるまで、ビューを右に回転します。
情報ボックスに移動し、[ 第 4 章にテレポート ] ボタンを選択します。
Chapter 4 Sphere Terrace に到着したら、 カーソルを WindTurbine1 の上に移動すると、その図形が変化し、シーンの周りにタービンがドラッグされます。
タービンは、 固定回転 拘束をオンにした結果、直立したままになります。
Unity エディターの [再生] ボタンをクリックして、再生モードを終了します。
他の 2 つの風力タービンを更新する必要はありません。既に行っています。
ステーション: 4.2 アニメーション トリガー
ここでの考え方は、風力タービンを海の上にドラッグすると、タービンのブレードが回転する "風" が発生するという考え方です。 実際に起こるのは、 Animation Trigger という名前の透明なキューブが海の上に配置され、トリガー ボリュームとして機能することです。 風力タービンをトリガー ボリュームにドラッグすると、スピン ブレード アニメーションを開始する On Trigger Enter イベントがオフになります。
この章では、GameObject にスクリプトを追加し、スクリプトでアニメーションを有効にします。
[階層] で、4.2 -- アニメーション トリガー GameObject を展開し、Animation Trigger という名前の子オブジェクトを選択します。
アニメーション トリガー GameObject の Box コライダーの緑色のアウトラインが表示されることに注意してください。
インスペクターで、Box コライダー コンポーネントに移動し、[トリガー] を選択します。
ヒント
[ トリガー] を選択すると、オブジェクトはコライダー コンポーネントがトリガー ボリュームにアタッチされます。
- [階層] で、第 4> 章4.1 - グラブとリリースに移動し、[WindTurbine1] を選択します。
- [ コンポーネントの追加] ボタンをクリックし、スクリプト マシンを検索して追加 します。
スクリプトを埋め込む必要がありますが、通常は新しいスクリプト グラフを最初から作成する必要があることを意味します。 ショートカットを使用します。 [ソース ] オプションを [グラフ ] に設定したままにします。 既存のスクリプト グラフをアタッチし、埋め込みグラフに変換します。
[グラフ] フィールドのボタンをクリックし、[SelectSceneGraph] ウィンドウで [SPWindTurbineScript] を選択します。
[ 変換 ] ボタンをクリックします。 これにより、[ グラフ ] 設定が削除され、[ ソース ] オプションが [埋め込み] に変更されることに注意してください。
回転ブレード アニメーションをグラフに追加する
スクリプト グラフを調べるのに少し時間を取ります。 これには 2 つのグループがあります。上部グループは、ユーザーが風力タービンをトリガー ボリュームにドラッグしたときにブレード回転アニメーションをトリガーし、下部のグループは、ユーザーがタービンをボリュームからドラッグしたときにアニメーションを停止します。
グラフは 、必要 な方法をほぼ設定していますが、残りの問題が 1 つあります。 2 つの アニメーター: トリガー ノードの設定は、 この ... に設定されます。
...ただし、 これは (言い換えると WindTurbine1) にはトリガーするアニメーションがありません。 見つけましょう。
Hierarchy で WindTurbine1 を展開し、WindTurbineBody という名前の子オブジェクトを展開します。 これにより、 Windmill_Turbine_001:Propellors10 という名前の子オブジェクトが表示されます。
[Windmill_Turbine_001:Propellors10] を選択し、インスペクターに WindTurbine1Propellers という名前のアニメーター コントローラーを含むアニメーター コンポーネントが含まれていることに注意してください。
この アニメーター は、アニメーションを提供します。
Windmill_Turbine_001:Propellors10 GameObject を Hierarchy からドラッグし、スクリプト グラフで、最初のグループにある [アニメーター: トリガーの設定] ノードの最初のフィールドにドロップします。
Windmill_Turbine_001:Propellors10 GameObject をもう一度階層からドラッグし、スクリプト グラフで、2 番目のグループにある [アニメーター: トリガーの設定] ノードの最初のフィールドにドロップします。
これでスクリプトが完成しました。
作業をテストする
プロジェクトを保存し、Unity エディターの [再生] ボタンを押します。
前述のように、プレイモードに入った場合、アバターは Chapter3 Sphere テラスに配置されます。 シーンを右に回転させ、 テレポートから第 4 章ボタンまで 歩いて押します。
これで、 Chapter4 Sphere Terrace に入るはずです。 WindTurbine1 を海の上にドラッグします (赤いブレードを使用して、後ろで最も遠いものです)。 タービンのブレードが回転している点に注意してください。
同じタービンを海から離し、テーブルの上に戻します。 タービンのブレードが回転しなくなることに注意してください。
アニメーションの観察が完了したら、Unity エディターの [再生] ボタンを押して再生モードを終了します。
他の風力タービンを更新する必要はありません---既に行っています。
ステーション 4.3: ボディの拘束
現時点では、参加者が風力タービンをドロップできる場所に制約はありません。 タービンを海に配置して風をキャッチできることを 願っていますが 、たとえば、参加者が誤ってタービンを床に落とす可能性があります。 これを避けたいので、タービンがテーブルトップまたは海にのみ着陸できるように、封じ込めフィールドを設定できます。 これは基本的に透明な箱です---タービンは箱の中に制限されます。
[Hierarchy]\(階層\) で、4.3 -- Constrainting Bodies GameObject を展開し、Containment Field という名前の子オブジェクトを選択します。
インスペクターで、[コンポーネントの追加] ボタンを選択し、Containment Field コンポーネントを追加します。
[包含フィールド] コンポーネントで、[影響を受けるボディ] オプションの右側にある [+] ボタンを選択し、ポップアップ メニューで [ゲーム オブジェクト名] 条件を選択します。
[開始日] ボックス に 「WindTurbine」と入力します。シーン内の 3 つの風力タービンはすべて "WindTurbine" から始まるため、それらはすべて封じ込めフィールドに制限されます。
作業をテストする
プロジェクトを保存し、Unity エディターの [再生] ボタンを押します。
前述のように、プレイモードに入った場合、アバターは Chapter3 Sphere テラスに配置されます。 シーンを右に回転させ、 テレポートから第 4 章ボタンまで 歩いて押します。
これで、 Chapter4 Sphere Terrace に入るはずです。 風力タービンの 1 つをテーブルの上と海からドラッグして、床に落としてみてください。 コンテインメント フィールドを使用すると、この操作を実行できなくなります。
第 4 章: 概要
この章では、エクスペリエンスの参加者が次のことを実行できるようにする Mesh 機能を追加しました。
オブジェクトをつかんで動かす
参加者がオブジェクトをトリガー ボリュームにドラッグしたときにアニメーションをトリガーする
指定した特定の領域にのみオブジェクトをドロップする