iconこの記事では、Playmakerを利用したコントローラー情報の取得と、Rigidbody・Colliderを利用した衝突と物理動作について説明します。空間上に配置されている3Dモデルとコントローラーが衝突し、3Dモデルが動くアクションを実装します。通常のオブジェクトに触れても、コントローラーは特に何もおきず、通過してしまいます。この状態だと、空間として不自然です。3Dモデルにふれると、3Dモデルが衝突によって動くインタラクションを実装します。object」でシーン内のコントローラーを見つける。Position」でコントローラーの空間座標を取得する。Collider」をシーン内のコントローラーの位置に出現させる。Parent」でColliderをコントローラーの子オブジェクトにし、コントローラーに追従させる。STYLYへアップロード事前準備UnityのプラグインであるPlayMakerをあらかじめインストールしておきましょう。概要とインストールはじめてPlayMakerを使用するひとは、あらかじめ以下の記事を一読することで、理解を深めることができます。Editorを開き、画面上に格納しておきます。概要Unityの基礎的な情報として、オブジェクト同士が触れて、衝突の物理作用を発生させるには以下が必要になります。・衝突するオブジェクト両方に「Collider」が付与されている・物理作用を発生させるオブジェクトに「Rigidbody」が付与されているつまり、コントローラーと3Dモデルに「Collider」を設定するのと、3Dモデルに「Rigidbody」を付与することで、物理作用を発生できます。今回の大きな流れは、以下です。最初に、衝突させる3Dモデルを作りましょう。今回は、Cubeのモデルを作ります。Cube」を選択し、作りましょう。Cubeをつくるこのままでは、Cubeはとくに何も動かず、コントローラーが触れてもすり抜けてしまいます。物理作用を発生させるためには、Cubeに「Collider」と「Rigidbody」というコンポーネントを付与する必要があります。】Colliderは衝突判定を計算するコンポーネントです。対象の3Dモデルに付与することで、他の3Dモデルに触れたときに「衝突した」という情報が取得されます。Collider通常、Unityのシーン上で作ったCubeやSphereには初期状態で付与されていますが、インポートした3Dモデルには付与する必要があります。Component」から付与できます。付与するモデルの形に合わせてColliderを選択しましょう。Colliderを付与することで、3Dモデルに衝突判定が取得されるようになりました。次に衝突させる3DモデルにRigidbodyを付与します。】Rigidbodyは衝突判定を計算し、物理作用を実行するコンポーネントです。Colliderが付与されている3Dモデルが衝突した際、Rigidbodyが付与されていると、衝撃によって3Dモデルが動くようにしてくれます。Componentより「Rigidbody」を選択しましょう。Gravity」のチェックマークを外しましょう。Gravityのチェックを外すこれで、衝突する3Dモデルの設定ができました。シーン内にコントローラー用の「Collider」を作るコントローラーオブジェクトそのものに衝突の設定はできません。シーン内に「Collider」を追加し、コントローラーの子オブジェクトとして追従させることで、コントローラーに衝突の設定を追加できます。Empty」で空のオブジェクトを作ります。Collider」とします。ColliderのRadiusを「0.05」に設定します。ColliderはPrefab化し、Hierarchyから削除しましょう。次は、コントローラーの設定をします。コントローラー情報を取得したオブジェクトに、コントローラー用の「Collider」を付与するコントローラーの情報を取得するオブジェクトを作ります。Empty」で空のオブジェクトをつくり、名前を「Controller」にしましょう。(left)」とします。この際にControllerと(right)の間に半角スペースが入ります。1文字でも間違えると、機能しないため、注意してください。(right)/(left)にPlaymakerでアクションを追加します。(right)を設定します。大まかな流れは以下のようになります。object」でシーン内のコントローラーを見つける。Position」でコントローラーの空間座標を取得する。Collider」をシーン内のコントローラーの位置に出現させる。Parent」でColliderをコントローラーの子オブジェクトにし、コントローラーに追従させる。Parent」でないと、正しくPlaymakerが動作しません。(right)にFSMを追加しましょう。FSM」を選択します。Browser」を選択し、開きましょう。Parent」を追加しましょう。順番に気を付けてください。上から順に以下になります。object」でシーン内のコントローラーを見つける。(right)」とします。文字をコピーしてお使いください。文字を間違えてしまうと正しく動作しないので気をつけてください。variable...」を選択し、名前を「Controller」にします。これで、シーン内の右コントローラーが検索され、「Controller」という変数に格納されるようになりました。Position」でコントローラーの空間座標を取得する。Object」を選択します。Position」とします。Position」という変数に格納されるようになりました。Collider」をシーン内のコントローラーの位置に出現させる。Collider」をドラッグし、追加します。Position」を指定します。Collider」とします。Collider」という変数に格納されるようになりました。Parent」でColliderをコントローラーの子オブジェクトにし、コントローラーに追従させる。Parentは「シーンに生成したColliderをコントローラーの子オブジェクトにして、コントローラーに追従させる」ことができます。Collider」を指定します。Object」を選びます。Collider」という変数を指定します。Parentを設定します。右の二本線のボタンを押して変数を指定できるよう切り替えたら、「Controller」を選択します。設定これでシーン内に生成したColliderがコントローラーの子オブジェクトになり、コントローラーに追従するようになりました。(right)は右のコントローラの設定となります。EVENTによるインタラクションの設定の方法でした。以上がコントローラーと3Dモデルを衝突させる方法になります。最後に、あらためてポイントをまとめると・衝突するオブジェクト両方に「Collider」が付与されている。・物理作用を発生させるオブジェクトに「Rigidbody」が付与されているが必要条件です。この考え方と方法を利用して、インタラクションが実装されたVR空間を作ってみましょう!STYLYへアップロード実際にSTYLYにアップロードしましょう。一つ注意点があります。それは、PrefabとしてSTYLYにアップロードするのではなく、シーンごとSTYLYにアップロードするという点です。STYLYは仕様上、アップロードしたPrefabに自動でColliderを生成しているため、PrefabとしてSTYLYにアップロードすると予期せぬ挙動をする場合があります。シーンとしてSTYLYにアップロードした場合、自動でColliderを生成することはありません。ColliderやRigidbodyを利用して物理シミュレーションを体験に組み込みたい場合は、シーンごとSTYLYにアップロードする方法が向いています。シーンごとSTYLYにアップロードする方法はとても簡単です。シーンに余分なものが含まれていないことを確認し、シーンを保存します。Cameraは不必要ですので、必ず削除するよう注意しましょう。STYLY」をクリックするだけです。実際にアップロードしたのがこちらです。iconControllerInteractionKAKIKAKIフリーのデザイナー/DJ。SCHOOLを機にXR領域へ進出。XRを利用した音楽、アートの制作について学んでおります。最近はVRとジャーナリズムについても興味があります。Venue」プロジェクトでんぱ組.incとXRクリエイターが協力し、渋谷スクランブル交差点で新しい音楽体験を創り出そう。総額300万円の還元金、制作アセットの提供、審査にはでんぱ組.incも参加!あなたのアイデアで都市をステージに変えましょう。スマホがなくなる日』(幻冬舎)10年後のテクノロジーを誰が想像できるだろうか──。2024年、ついに「空間を身にまとう時代」の実現を加速するデバイスが登場!人類はスマホの小さな画面から解放され、空間という無限のキャンバスを手に入れる。スマホがなくなる日、次世代デバイスでどんなミライをつくれるのか。スマホがなくなる日──。この先に続くミライは、本書を読んで創造してみてください。