準備
開発環境
- Unity 2021.3.14f1
- Visual Studio 2022 (Community 2019なども可)
- NRSDK 1.9.5
環境整備:詳細は前回参照
- NRSDKのインポート
- NRSDKのTipsのFix
- GraphicsAPI is not OpenGLES3の対応
新規プロジェクト作成
Unity Hubからプロジェクトの新規作成を行います。
オブジェクト配置:詳細は前回参照
- Hierarchyへのプレハブ(NRCameraRig、NRInput)の追加
- HierarchyからのMainCameraの削除
- HierarchyへのCubeの追加、位置や大きさの調整
C#エディタの設定
[Edit]-[Perferences]メニューから[External Tools]の[External Script Editor]で使用するVisual Studioを選択します。
VSCodeなども選べますが、今回は愛用している「Microsoft Visual Studio 2022」を選択しました。
アプリ作成
今回は、前回配置した立方体をくるくる回すアプリなので、くるくる回すためのスクリプト(C#コード)を作成して、それを立方体に割り当てて動くようにしていきます。
スクリプトの作成
[Project]領域で[Assets]フォルダを選択してから、[Assets]-[Create]-[C# Script]メニューをクリックすると、[Assets]フォルダに「NewBehaviourScript」というファイル名でC#のコードを書くためのファイルが生成されます。
今回は、名前を「Interaction」とリネームして使います。
gist.github.com
くるくる回すコードを書く
Unityでオブジェクトをくるくる回す方法はいくつかありますが、今回は、Rigidbodyを追加してポインタが当たっている間だけangularVelocityに加速度を設定してあげることで回転させてみたいと思います。
gist.github.com
RigidBodyの追加
StartメソッドでRigidBodyをgameObject = スクリプトを割り当てたオブジェクトを追加しています。
this.Body = gameObject.AddComponent
();
this.Body.useGravity = false;
this.Body.angularDrag = 0f;
これはオブジェクトに物理法則を割り当てることになるため、デフォルトのままだと重力が働いてオブジェクトが自由落下を始めてしまうため、useGravity = falseを設定しています。
また、angularDrag = 0fとすることで空気抵抗をなくして回転し始めたらずっと同じ速度で回転するようにします。
ポインタがあたっているときは回転する
Interactionクラスに「IPointerEnterHandler」インターフェースを追加して「OnPointerEnter」イベントがキャッチできるようにします。そのイベントが発生したときに呼び出される「OnPointerEnter」メソッドの中では、angularVelocityに対して、y軸に2の加速度を設定することで、くるくる回します。
this.Body.angularVelocity = new Vector3(0, 2f, 0);
ポインタがはずれたときは停止する
Interactionクラスに「IPointerExitHandler」インターフェースを追加して「OnPointerExit」イベントがキャッチできるようにします。そのイベントが発生したときに呼び出される「OnPointerExit」メソッドの中では、angularVelocityに対して、Vector3.zeroで加速度を0にすることで回転を停止します。
this.Body.angularVelocity = Vector3.zero;
くるくる回すコードをCubeに割り当てる
[Hierarchy]で「Cube」を選択して、「Cube」の[Inspector]を表示したら、そこに「Interaction」をドラッグ&ドロップします。
そうすると、「Cube」の[Inspector]に「Interacton(Script)」という項目が追加され、OnPointEnterとOnPointExitのイベントで「Interaction」クラスのコードが呼びされるようになります。
Unity Editor上での確認
プログラムが完成したら、Unity上で実行して動作を確認します。
ポインタの移動は、Shiftキーを押しながらのマウス操作で可能です。
ポインタがCubeに当たると回転し、外れると回転が止まります。
実機動作
一通り動作が確認できたら、実機をUSBで接続後に[Build Settings]で[Run Device]に実機を指定して[Build And Run]で実機転送します。
転送が完了したら、PCとのUSB接続ケーブルを外して、Nreal Airを繋いで起動します。
youtube.com
手元のAndroid端末を動かせばポインタも動くのでCubeに当てたり外したりして回転させてみましょう。