Unityアプリ開発FAQ【Tips編】では、開発中によくある「◯◯がしたい」といった
具体的な操作や機能に関する質問とその回答をまとめています。
Unityアプリ開発に関するエラー及びXRアプリ開発に関する項目を調べたい場合は
下記ボタンより閲覧ください。

=Unityアプリ開発FAQ
【Tips編】=


Unityインストール・セットアップ

  • 考えられる原因として下記の可能性があります。
    1:インストール先のパスに日本語が含まれている。日本語記述がない場所にインストール先を変更すると解決する場合があります。
    2:ウイルス対策ソフトが起動しており、インストールを防いでいる可能性があります。ウイルス対策ソフトの機能にある、一時的にセキュリティ保護をオフにすることでインストールが出来る場合があります。
    3:PCの空き容量が不足している可能性があります。インストール先に10GB以上の空きがあるのか確認してください。

  • UnityProjectを開く際に「Safe Mode」のポップアップが出る場合は、プロジェクト内にエラーが発生している事が原因です。
    こちらは基本「Ignore」を押していただいて構いません。
    そしてエラーの解決策として次のアプローチがあります。
    1:開くプロジェクトには他に必要なツールと依存関係がある可能性があります。ダウンロード先のドキュメントをよく読み、プロジェクトを開くために他に必要なものは無いか確認を行ってください。

    2:開くプロジェクトのUnityバージョンが低すぎる可能性があります。作成されたUnityProjectと同じバージョンをインストールしてから再度開いてみてください。

    3:GitHubからProjectをダウンロードする場合、Git機能を使わないと必要な部品が同時にダウンロードされない場合があります。この場合はGitツールを使ってProjectをダウンロードするようにしてください。

    4:開発プラットフォームが特定の環境下でないと動かない場合があります。一度Projectを開いたあと、目的の開発プラットフォームにProjectを変更するとエラーが解決する場合があります。

  • 考えられる原因として下記の可能性があります。
    1:「Visual Studio Tools for Unity」がインストールされていない可能性があります。Visuak Studioのインストローラーから拡張機能の「Visual Studio Tools for Unity」をインストールしてください。
    2:Unity内の外部ツールの設定が正しく行われていない可能性があります。Unityのメニューから「Edit」 > 「Preferences」 > 「External Tools」を選択し、正しいVisual Studioが設定されているかを確認してください。

  • https://unity.com/ja/download を表示してください。
    このページがダウンロードページとなります。

  • Windowsボタンをクリックして、検索欄に「Unity Hub」と入力してください。
    Unity Hub というアプリが結果に表示されますので、クリックしてください。

  • https://id.unity.com/ja を表示してください。
    このページのUnity IDをお持ちでない場合、「こちらでIDを作成してください」という表記の「IDを作成」部分のリンクからアカウントを作成するページを表示できます。

  • ①画面左上にある歯車のアイコンをクリック。
    ②メニューの「Appearance」をクリック。
    ③「Language」の項目を「English」から「日本語」に変更。


  • Unity Hubの「Installs」タブから複数のバージョンをインストールできます。プロジェクトを開く際、リストに表示される「Editor Version」のドロップダウンから起動したいバージョンを選択してください。

  • 各ウィンドウをドラッグ&ドロップで好きな位置に配置した後、画面右上の「Layout」ドロップダウンから「Save Layout…」を選択し、名前をつけて保存します。

  • エクスプローラー(MacならFinder)でプロジェクトフォルダ全体をコピーして別名で保存するか、Gitなどのバージョン管理システムを導入してクラウドにプッシュしてください。不要な`Library`フォルダはバックアップに含めなくても問題ありません。

  • 上部メニューの「Edit」>「Preferences」>「General」を開き、「Editor Theme」を「Dark」に変更してください。

  • 「Edit」>「Preferences」>「External Tools」を開き、「External Script Editor」のドロップダウンからVSCodeやRiderなどの好みのエディタを選択してください。

  • Unity HubのProjectsリストで、プロジェクト名の右にある点3つをクリックし、「Remove from list」を選択するとリストから非表示になります(実際のファイルは削除されません)。

  • Unity公式サイトの「Unity Download Archive」ページにアクセスし、インストールしたいバージョンの「Unity Hub」ボタンをクリックすると、自動的にHub経由でインストールが始まります。

  • Unity HubのInstallsタブで、対象のUnityバージョンの歯車アイコンをクリックし、「Add modules」からチェックを外すことでアンインストールできます。

  • Unity Hubの左下の歯車アイコン(Preferences)から「Projects」を開き、「Project location」を変更してください。

  • Package Managerの左上にある「+」ボタンをクリックし、「Add package from git URL…」または「Add package by name…」を選択して、対象のURLやパッケージ名(例:com.unity.xr.legacyinputhelpers)を入力してください。


Unity基本操作

  • PCの環境によって操作が異なります。
    1:Windowsの場合
    Ctrl + Z を押してください。
    2:Macの場合Command + Z 押してください。
    ※コードの変更やオブジェクトの移動などの一般的なアクションを元に戻します。

  • プロジェクト名の下に下記のような表示があります。
    /Users/〇〇/〇〇/….
    こちらが作成したUnityプロジェクトが保存された場所になります。

  • オブジェクトがカメラの視野外にあるかどうかを確認してください。
    オブジェクトがSceneビューで見えるがGameビューで見えない場合、カメラの位置や向きがオブジェクトを捉えていない可能性があります。

  • シーン再生中の変更は反映されません。そのため、シーンの再生を停止してから、変更を加えてください。

  • 解除したいPrefabを右クリックで選択
    「Prefab」 >「 Unpack」の順で選択することで解除することができます。

  • Unityのメニューバーにある「Window」> 「General」 を選択し、表示させたいビューやウィンドウを選択することで再表示させることができます。

  • Inspector右上に開いている鍵のアイコンがあります。クリックして閉じた鍵に切り替えると、他の項目を選択しても切り替わらず作業効率が上がります。

  • Hierarchビューの左にある目のアイコンでオブジェクトの表示/非表示を切り替えることができます。また目の右側の手をクリックするとシーン上でオブジェクトを選択しなくなるので開発操作がしやすくなります。

  • 1:Unityエディタの上部にあるメニューバーから「Edit」>「Project Settings」>「Tags and Layers」を選択します。ここで新しいレイヤーを追加してください。
    2:シーン内のオブジェクトを選択し、Inspectorウィンドウで「Layer」ドロップダウンメニューから追加したレイヤーを割り当てます。
    3:「Edit」>「Project Settings」>「Physics」を開きます。「Layer Collision Matrix」から対象のチェックボックスを外すと、重なるレイヤー同士が衝突するかを設定できます。
    【覚えておきたい】
    チェックを外すことで計算を減らしパフォーマンスを向上させることができます。またヒエラルキーでオブジェクトを選択し、インスペクターの「Layer」>「Add Layer…」を選択してもレイヤーを追加できます。

  • Colliderを持つオブジェクトを選択した状態で、InspectorのColliderコンポーネントを見てください。
    Edit Colliderの項目にボタンがあるので選択すると、シーン上でコライダーの大きさを変更することができるます。
    コライダーの線上に見づらいですが■が現れます。クリックしながら移動させると大きさを変更することができます。またインスペクターのCenter値でも変更できます。

  • 1:「Window」>「Rendering」>「Lighting」を開いてください
    2:「Lighting」の設定画面が開いたら上部の「Environment」を選択
    3:「Lighting」内の「Environment」>「Skybox Material」があるので、右側の◎をクリックする
    4:Unity Project内のSkyboxマテリアル一覧が出てくるので、設定したいSkyboxを選択

  • 1:Assetsフォルダ内からピンクMaterialをクリック
    2:「Edit」 >「 Rendering」 >「 Materials」 >「 Convert Selected Built-in Materials to URP」をクリック
    3:メニューが開いたら「Proceedを選択」してください。

  • CanvasのInspectorで[Render ModeをScreen Space – Overlay]→[World Space]に変更。
    これでRect Transformが触れるようになります。最初はサイズが大きいので0.01から調整してください。

  • シーンの右側にある▼をクリックしてください。一番上の3D Iconsのスライダーを下げてみると見やすく編集できます。

  • TransformのScaleにXYZの大きさを変更できる項目があります。Xの左側にあるボタンをクリックしてサイズを変更してみてください。XYZが一括で変更できると思います。
    ステージや建物のサイズを変更するときは歪まないように一括で変更してください。

  • 移動ツール使用時にCtrl + Shift(MacはCmd + Shift)を押しながら移動し、表面にスナップさせることができます。また、Vキーを押しながら頂点ドラッグで位置を合わせる方法があります。

  • Unity Editerで「Assets」>「Import Package」>「Custom Package」を選択してください
    フォルダが開いたらダウンロードをクリックして、購入したアセットを選択して開いてください。

  • 基本操作はマウスを使用するので、これらの基本操作をマスターすることでゲーム開発がよりスムーズに進みます

  • 「Edit」>「Preferences」 >「 SceneView」 >「Create Objects at Origin」にチェックマークをつけてください。
    この設定をすることで新規オブジェクトは毎回原点(0,0,0)に設置されます。

  • シーンギズモが消えてしまった場合の復活方法

    ①2Dボタンをオフにする
    ②それでも出てこなければ scene画面の右上の小さい3つの縦丸をクリック
    ③「Overlay Menu」を選択→「Orientation」をONにする

  • ①メニューバーのAseetsよりExport Packageを選択
    ②別プロジェクトへコピーしたいアイテムを選択
    ③Export ボタンを押す

    取り込みたい時
    ④メニューバーのAseetsよりimport packageを選択

  • グローバル座標は、シーン全体の原点を基準にした座標のことです。
    一方、ローカル座標は、親オブジェクトの位置や向き、スケールを基準にした座標になります。
    Transform クラスを使うときは、どっちの座標系を見ているのかを意識しておくことが大切です。
    よく使うプロパティやメソッドを以下にまとめておきます:
    ・position:Vector3 型。オブジェクトのワールド座標(シーン全体での位置)を表します。
    ・rotation:Quaternion 型。ワールド座標系での回転を表します。
    ・localPosition:Vector3 型。親オブジェクトから見た相対的な位置です。
    ・localScale:Vector3 型。親を基準にしたスケール(大きさ)を表します。
    ・parent:Transform 型。親オブジェクトの Transform を参照します。
    ・root:階層の中で一番上にある Transform を返します。
    ・right, left, up, forward:ローカル座標系における方向を示す Vector3 型のプロパティ。
    ・Translate(Vector3):オブジェクトを移動させるメソッド。
    ・Rotate(Vector3):オブジェクトを回転させるメソッド。

  • パーティクルの色が期待通りに表示されない場合は、マテリアルの設定を見直します。
    主な設定項目は以下のとおりです。
    ■ Surface Type(サーフェスタイプ)
     Opaque(不透明):完全に不透明に表示されます。
     Transparent(半透明):アルファ値を使って透明表現ができます。
    ■ Blending Mode(ブレンディングモード):パーティクルと背景の色の合成方法を指定します。
     Additive(加算)、Subtractive(減算)、Modulate(乗算)など。
    ■ Color Mode(カラーモード):パーティクルの色とアルベドテクスチャの合成方法。
     Multiply(乗算)、Additive(加算)、Overlay(オーバーレイ)など。
    以下の画像を参照してください。
    引用:https://docs.unity3d.com/ja/2018.4/Manual/shader-StandardParticleShaders.html

  • Layer は「Tags and Layers」項目から追加できます。作成した Layer は、個々のオブジェクトに割り当てることができます。
    主な用途は
     ・カメラで特定のレイヤーのオブジェクトだけを表示する
     ・ライトで特定のレイヤーのオブジェクトだけを照らす
     ・特定のレイヤー間で衝突判定を行わない(※設定は Project Settings > Physics から)
    などです。
    似た機能にTagがあります。主な用途は、gameObject.CompareTag(タグ名)という関数によって、オブジェクトの識別をすることです。
    Layer の最大数は 32個までで、Tagに個数制限はありません。

  • Hierarchyウィンドウ上部の検索バーにオブジェクト名を入力することで素早く絞り込めます。また「t:Light」と入力すれば、Lightコンポーネントを持つオブジェクトだけを検索できます。

  • Projectウィンドウでアセットを選択し、Inspectorの右上にある星マーク(Favorites)をクリックするか、Projectウィンドウの左側にあるFavoritesセクションにアセットをドラッグ&ドロップしてください。

  • コピーしたいコンポーネントの右上にある歯車アイコン(または点3つ)をクリックし、「Copy Component」を選択します。貼り付け先のオブジェクトで同様のメニューを開き、「Paste Component Values」を選択してください。

  • 移動させたいオブジェクトを選択した状態で、シーンビューを見ながら「Ctrl + Alt + F」(Macは Cmd + Option + F)を押すことで、現在の視点の中心にオブジェクトを移動させることができます(Move To View)。

  • HierarchyでMain Cameraを選択した状態で、「Ctrl + Shift + F」(Macは Cmd + Shift + F)を押すと、現在のシーンビューと全く同じ視点にカメラを配置できます(Align With View)。

  • 「Ctrl」キー(MacはCmdキー)を押しながら移動ツールをドラッグすると、一定の単位(デフォルトは0.25ずつ)でスナップ移動させることができます。Edit > Grid and Snap Settingsからスナップの単位を変更可能です。

  • 手動で配置するのは大変なので、無料のアセット(Align Toolsなど)を利用するか、UnityエディタのGrid Snapping機能(画面上部の磁石アイコン)を有効にしてマス目に沿って配置すると綺麗に並べられます。

  • Gameウィンドウのタブ上部にある「Maximize On Play」というボタン(またはトグル)をオンにしてから再生ボタンを押すと、再生中にゲーム画面が最大化されます。

  • シーン上でプレハブ(青い文字のオブジェクト)の値を変更した後、Inspector上部にある「Overrides」ドロップダウンを開き、「Apply All」をクリックすると元のプレハブデータが上書きされ、他の全てのプレハブにも反映されます。

  • Hierarchyウィンドウで、子にしたいオブジェクトをドラッグし、親にしたいオブジェクトの上にドロップします。子オブジェクトは親オブジェクトの移動や回転に追従するようになります。

  • Hierarchyで親オブジェクトの左側にある矢印(▶)を「Alt」キー(MacはOptionキー)を押しながらクリックすると、その下にある全ての子階層を一括で展開、または折りたたむことができます。

  • Hierarchyのプレハブオブジェクトの右側にある矢印(>)アイコンをクリックすると、Prefab Mode(プレハブモード)に入り、周りのオブジェクトが暗くなりプレハブ単体を集中して編集できます。

  • シーンビュー内で右クリックを押しながらWASDキーで移動(フライスルー)している最中に、マウスのスクロールホイールを回すと移動速度を自由に変更できます。

  • 手動で消すのは危険なので、完成したシーンを右クリックして「Export Package」を選択し、依存関係を含む必要なアセットのみをエクスポートして新規プロジェクトに移すか、「Asset Hunter」などの専用アセットストアツールを使用してください。

  • 一度他のシーンをダブルクリックして開く際に「変更を保存しますか?」と聞かれるので「Don’t Save」を選択してください。元のシーンを開き直すと変更前の状態に戻ります。

  • Gameウィンドウ上部にある「Free Aspect」と書かれたドロップダウンをクリックし、「16:9」や「1920×1080」などの好きな解像度を選択します。リストにない場合は下の「+」ボタンから自分で追加できます。

  • Inspectorでコンポーネントの名前部分(灰色っぽい帯)をクリックしたまま、上下にドラッグ&ドロップすることで、コンポーネントの並び順を整理することができます。

  • Unityの標準機能だけでは難しいため、複数のオブジェクトを選択してInspectorで同じ名前にするか、エディタ拡張スクリプトを利用するか、アセットストアの「Rename Tool」などを活用してください。


コンポーネント

  • 「Use Gravity」にチェックが入っている可能性があります。
    オブジェクトのInspectorウィンドウでRigidbodyコンポーネントを見つけ、「Use Gravity」のチェックを外してください。これにより、重力の影響を受けることなく空中に停止することができます。

  • 「PlayOnAwake」にチェックがついていることが原因です。
    オブジェクトのInspectorウィンドウでAudio Sourceコンポーネントを見つけ、「PlayOnAwake」のチェックを外してください。

  • コライダーの当たり判定は、ゲームビューで移動するより、シーンビューでプレイヤーオブジェクトをドラッグで移動させた方がスムーズ。

  • オブジェクトに付いているColliderコンポーネントの「Is Trigger」にチェックを入れてください。物理的な衝突はしなくなりますが、スクリプトの`OnTriggerEnter`等で接触を検知できます。

  • Rigidbodyの「Use Gravity」をオフにした状態で、スクリプトから`GetComponent().AddForce(方向 * 力, ForceMode.Impulse);`のように力を加えてください。

  • Projectウィンドウで右クリック > Create > Physic Materialを作成します。「Bounciness」を1などに高く設定し、跳ねさせたいオブジェクトのColliderの「Material」スロットにそれをアタッチしてください。

  • Physic Materialを作成し、「Dynamic Friction」と「Static Friction」を両方0に設定します。さらにFriction Combineを「Minimum」にしてColliderにアタッチします。

  • Main Cameraを選択し、Inspectorの「Clear Flags」を「Solid Color」に変更します。すぐ下の「Background」プロパティで好きな色を選択してください。

  • キャラクターに「Character Controller」コンポーネントをアタッチし、スクリプトの`Update()`内で入力(Input.GetAxis等)を受け取り、`characterController.Move(方向 * 速度 * Time.deltaTime)`を呼び出して動かします。

  • PackageManagerから「Cinemachine」をインストールします。メニューから Cinemachine > Create Virtual Cameraを選択し、生成されたカメラの「Follow」と「Look At」の枠に追いかけたいオブジェクトをドラッグ&ドロップするだけで完了です。

  • Box Collider等ではなく「Mesh Collider」コンポーネントを追加します。このオブジェクトを物理演算(Rigidbody)で動かしたい場合は、必ずMesh Colliderの「Convex」にチェックを入れてください。

  • AudioSourceコンポーネントの「Spatial Blend」スライダーを右端の「1 (3D)」にします。その後、下の「3D Sound Settings」を開き、Min DistanceとMax Distanceの距離を調整してください。

  • Buttonの子にあるTextを削除(不要な場合)し、Button自体のImageコンポーネントの「Source Image」に、Sprite形式に変換したお好みの画像データをセットしてください。

  • 対象のオブジェクトに「Video Player」コンポーネントを追加します。「Video Clip」に動画データをセットし、「Render Mode」を「Material Override」に設定すると、そのオブジェクトの表面で動画が再生されます。

  • UIを作成する際のCanvasコンポーネントの「Render Mode」を「Screen Space – Overlay」に設定してください。これで画面の最前面にUIが常に固定表示されます。


C#

  • 型はデータの種類を表します。
    例えば、整数、小数を含む数字、文字列、他にもたくさんあります。C#(Unityで使われるプログラミング言語)では、以下のような基本的な型があります。
    int (整数)、float (浮動小数点数)、bool (真偽値:trueまたはfalse)、string (文字列)

  • 変数はデータを格納するためのコンテナのようなものです。
    変数には名前があり、その名前を使ってデータにアクセスします。変数は特定の「型」を持ち、その型のデータのみを格納できます。
    例えば:
    int myNumber = 5;
    string myName = “Alice”;
    myNumber は整数5を、myName は文字列 Aliceを格納しています。

  • メソッドはクラス内で定義される機能の単位です。
    特定の動作や計算を実行するためのものです。必要に応じてデータを受け取り(パラメータ)、データを返すことができます。
    例えば:

    public int AddNumbers(int number1, int number2) {
    return number1 + number2;
    }
    この例のAddNumbersメソッドは2つの変数(number1、number2)を受け取り、それらを加算して結果を返すメソッドです。

  • [SerializeField] は、そのフィールドがシリアライズ可能であることを表す属性です。
    C#におけるシリアライズとは、オブジェクトをバイト列に変換する操作を意味します。
    「シリアル化」や「直列化」などと表記されることもあります。

  • Dlegate処理とはメソッドを変数のように扱うことができる型です。他のメソッドに渡したり、イベントハンドラとして使用したりすることができます。
    イベント駆動型や非同期処理、コールバック関数などの実装に使用します。
    こちらのサイトで使用方法を確認できます:https://qiita.com/ysn/items/71fe3f332ea9a3114d36

  • 次の例文ではMyDelegateというDelegate型を定義し、MethodAというメソッドをDelegateインスタンスdelに関連付けています。delを呼び出すことで、MethodAが実行されます。

  • Eventを登録するためにはAddListenerで追加する必要があります。次の例文ではボタンがクリックされたらTaskOnClickメソッドをリスナーとして追加しているのでイベントが呼び出されています。

  • FixedUpdateメソッドは一定の間隔ごと(デフォルトでは0.02秒)で呼び出され、物理計算や固定フレームレートの更新処理に使用されます。Rigidbodyに力を加えるような処理は、FixedUpdate内で行う必要があります。またプレイヤーのキー入力が伴う処理にも適しています。

  • Unityエディタのメニューから「Edit」> 「Project Settings…」 > 「Time」 タブを開きます。そこにある 「Fixed Timestep」 の値を変更することで、FixedUpdateの呼び出し間隔を調整できます。

  • LateUpdateはUpdateメソッドがすべて実行された後に呼び出されるイベント関数です。カメラの追従やほかのオブジェクトの動きに依存する処理の実装に使用します。次のコードはカメラがプレイヤーを追いかける実装の例です。

  • 音を順番にorランダムに鳴らしたいとき、自分でスクリプトを作ってAudio Sourceを制御するのもありだが、Audio Random Containerを使うとスクリプトを作らなくても制御できるので便利である。

    (参考)https://learn.unity.com/tutorial/the-basics-of-the-audio-random-container#

  • UnityWebRequestを使ってAPIのURLにリクエストを送るとデータを受け取ることができる。

    (参考)https://docs.unity3d.com/ScriptReference/Networking.UnityWebRequest.html

  • ◾Random.value
     → 0.0f 以上 1.0f 以下のランダムな浮動小数(float)を返す
    ◾Random.Range(int min, int max)
     → min 以上 max 未満のランダムな整数を返す(例:Random.Range(1, 4) は 1〜3 を返す)
    ◾Random.Range(float min, float max)
     → min 以上 max 以下のランダムな浮動小数を返す(例:Random.Range(0.5f, 1.0f) は 0.5〜1.0 を含む範囲)

  • 配列.Contains(要素)という関数を用いると、配列に特定の要素が含まれているかを判定し、結果をboolで返します。
    他に、配列に関するプロパティ・メソッドにはこのようなものがあります。

    ◾配列.Length:配列の要素数(長さ)を返す。
     例:int[] nums = {1, 2, 3}; nums.Length は 3
    ◾配列.Contains(要素)
     配列に特定の要素が含まれているかを bool で返す。
     ※使用には System.Linq の using が必要。
    ◾Array.IndexOf(配列, 要素)
     指定した要素のインデックスを返す。見つからなければ -1。
     例:Array.IndexOf(nums, 2) → 1
    ◾Array.Sort(配列)
     配列を昇順に並べ替える。元の配列が上書きされる。
     例:{3, 1, 2} → {1, 2, 3}
    ◾Array.Reverse(配列)
     配列の要素を逆順に並べ替える。これも破壊的。
     例:{1, 2, 3} → {3, 2, 1}

  • C# には「名前空間(namespace)」という仕組みがあります。
    名前空間とは、クラス名などが他と重ならないように管理するための空間のことです。
    同じプロジェクト内に同じ名前のクラスが複数あるとエラーになりますが、異なる名前空間に属していれば、それぞれ区別して使うことができます。
    名前空間の中にあるクラスを使うときは、次のように書きます:

    名前空間.クラス名

    ただし、ファイルの先頭で

    using 名前空間;

    と書いておけば、その名前空間を省略してクラス名だけで使うことができます。

  • ◾画面の大きさや四隅の位置をワールド座標で取得したいとき
    Camera.main.ViewportToWorldPoint(Vector3)
     → ビューポート座標(0~1の範囲)をワールド座標に変換します。
     → 例:(0, 0) は画面左下、(1, 1) は画面右上を意味します。
     → 第3引数(Z座標)にカメラからの距離を指定する必要があります。
    ◾Screen.width, Screen.height
     → スクリーンの横幅と縦幅をピクセル単位のスクリーン座標で返します。
    ◾Camera.main.ScreenToWorldPoint(Vector3)
     → ピクセル単位のスクリーン座標をワールド座標に変換します。
     → 画面上のマウス位置などをワールド座標で知りたいときに使います。
     → こちらも第3引数にZ値(カメラからの距離)を入れる必要があります。
    ◾Camera.main.ScreenPointToRay(Vector3)
     → 指定したスクリーン座標からワールド空間に向かって伸びるRay(光線)を生成します。
     → 主に3D空間でのマウスクリック位置などをRaycastで検出する際に使用されます。


  • スクリプト内に `void Start()` または `void Awake()` メソッドを記述し、その中に処理を書きます。AwakeはStartよりも先に(オブジェクトがアクティブになった瞬間に)呼ばれます。

  • スクリプト内に `void Update()` メソッドを記述します。キーボード入力の監視や、オブジェクトの継続的な移動処理などはここで行います。

  • コルーチンを使用します。戻り値を `IEnumerator` にしたメソッドを作成し、その中に `yield return new WaitForSeconds(秒数);` と記述し、`StartCoroutine(“メソッド名”);` で呼び出します。

  • アクセスしたい変数を `public` (またはプロパティ)で宣言しておき、`GetComponent<相手のスクリプト名>().変数名` のように記述して取得・変更します。

  • `Instantiate(生成したいプレハブ, 発生位置, 回転);` というメソッドを使用します。事前にpublic変数でプレハブをInspectorから登録しておくのが一般的です。

  • `Destroy(gameObject);` と記述すると、そのスクリプトがついているオブジェクト自身が消滅します。`Destroy(gameObject, 3.0f);`のように書くと3秒後に削除できます。

  • `Camera.main.ScreenPointToRay(Input.mousePosition)` でRayを作成し、`Physics.Raycast(ray, out RaycastHit hit)` を使って、`hit.collider.gameObject` で対象を取得します。

  • `Debug.Log(“メッセージ: ” + 変数);` を記述すると、UnityのConsoleウィンドウに指定した内容が出力され、値の変化や処理が通っているかを確認できます。

  • `gameObject.SetActive(true);` で表示(有効化)し、`gameObject.SetActive(false);` で非表示(無効化)にします。

  • スクリプトの先頭に `using UnityEngine.SceneManagement;` を追加し、`SceneManager.LoadScene(“シーン名”);` またはシーンのインデックス番号を指定してロードします。

  • `GetComponent().material.color = Color.red;` のように記述することで、プログラムから動的に色を変更できます。

  • C#の文字列補間を利用して、`scoreText.text = $”現在のスコア: {score}点”;` のように記述するとシンプルに結合できます。

  • float型の変数を用意し、`Update()` メソッドの中で `timer += Time.deltaTime;` と記述することで、実時間(秒)を正確に計測できます。

  • `Time.timeScale = 0f;` にするとゲーム内の時間が止まり、物理演算やUpdateが停止します。再開時は `Time.timeScale = 1f;` に戻します。

  • `GameObject[] enemies = GameObject.FindGameObjectsWithTag(“Enemy”);` のように記述することで、指定したタグを持つ全オブジェクトを配列として取得できます。

  • 配列はサイズ変更ができないため、可変長が必要な場合は `List<型>` を使用します。`list.Add(要素)` で追加、`list.Remove(要素)` や `list.RemoveAt(インデックス)` で削除します。

  • `Update()` メソッド内に `if (Input.GetKeyDown(KeyCode.Space))` という条件文を書くことで、押したその1フレームだけ処理を実行させることができます。

  • 簡単なデータであれば `PlayerPrefs.SetInt(“HighScore”, 100);` で保存し、`PlayerPrefs.GetInt(“HighScore”, 0);` で読み込むことができます(0はデフォルト値)。

  • スクリプト内に `void OnCollisionEnter(Collision collision)` (またはIs Triggerなら `OnTriggerEnter`)を記述すると、ぶつかった瞬間に自動的に呼ばれます。

  • `Cursor.visible = false;` でカーソルを見えなくし、`Cursor.lockState = CursorLockMode.Locked;` で画面中央にカーソルを固定できます。


アセット・アセットストア

  • Webサイトにてアセットを購入したにも関わらず、アセットがUnityのPackageManagerで表示されない原因は次の可能性があります。

    1:PackageManagerの表示項目が”MyAssets”に指定されていない。画面左上にあるPackagesの項目をMyAssetsに設定してください。

    2:UnityでログインしているアカウントとWebサイトでログインしたアカウントが違う。UnityHubのアカウント画面で登録されているアカウント情報とWebサイトでログインしたアカウントが同一か確認してください。

    3:それでも上手くいかない場合、Unityのログイン認証に問題が発生しています。一度Unityを閉じ、UnityHubでログインしているアカウントをログアウトし、その後再度ログインを行ってください。ログイン処理が完了後、UnityHubよりUnityProjectを再度開いてみてください。

    4:上記でも上手くいかない場合、Unityのコンソール表示を確認し、Unityに赤文字でエラーが出ていないか確認してください。Clearボタンを押しても赤文字のエラーが消えない場合はコンパイルエラーの可能性があります。直せないエラーの場合は再度UnityProjectを新規で作成してください。

  • これは、シェーダーが現在のレンダーパイプラインと互換性がないために発生する問題です。
    解決策:
    URPをUnity Projectにインポートして、ピンクマテリアルをURP対応に変換する


    手順:
    まず、プロジェクトでURPを使用できるようにします。
    ①Package Managerを開く:
    Unityエディターのメインメニューで Window > Package Manager を選択

    ②URPをインストール:
    パッケージ一覧 (in Project)から「Universal RP」を選択し、Install ボタンをクリックしてインポート

    ③URPのパイプラインアセットを作成:
    メニューから Assets > Create > Rendering > Universal Render Pipeline > Pipeline Asset を選択

    ④Pipelineアセットを適用:
    Edit > Project Settings > Graphics を開きます。
    Scriptable Render Pipeline Settings に③で作成したURPパイプラインアセットをドラッグ&ドロップ

    ⑤URPのインポートが終わったら、ピンクマテリアルをURP対応に変換します。
    ピンクのマテリアルを選択した状態で、Unityエディターのメインメニューで、Edit > Render Pipeline > Universal Render Pipeline > Upgrade Project Materials to UniversalRP Materials を選択。
    するとMaterial Upgraderがポップアップされますので、Proceedを選択してください。
    この操作により、既存のマテリアルがURP用に変換され、ピンク色の問題が解決します。

    Tips:
    URPはVRアプリに適した軽量なレンダーパイプラインであり、GPU負荷を軽減できます。
    VRでは複雑なシェーダーを使用しすぎないようにし、Universal Render Pipeline/Lit シェーダーなど、最適化されたシェーダーを選びます。プロファイリングツール(ProfilerやFrame Debugger)を使用してパフォーマンスを定期的に確認しましょう。

  • Unity Asset Storeのサイトで「3D Characters」カテゴリを選択し、右側のフィルター機能から「Free Assets(無料アセット)」にチェックを入れると無料で使えるモデル一覧が表示されます。

  • Package Manager等から「Import」ボタンを押した際、ポップアップウィンドウにファイルの一覧が表示されます。不要なシーンデータやドキュメントなどのチェックボックスを外すことで除外できます。

  • Package Managerで「My Assets」を開き、リスト内で「Update available」と表示されているアセットを選択して右下の「Update」ボタンをクリックします。

  • Projectウィンドウ内で対象のアセットのフォルダを選択し、右クリックから「Delete」を選ぶかDeleteキーを押して削除します。元に戻せないので注意が必要です。

  • Windowsなら `AppData\Roaming\Unity\Asset Store-5.x`(Macは `~/Library/Unity/Asset Store-5.x`)に保存されている「.unitypackage」ファイルをコピーしてUSBメモリ等で移すことができます。


=VRに関する質問=


VR開発環境構築

  • UnityにAndroidSDKをインストールする方法は下記手順で行えます。
    1:UnityHubを開く。
    2:画面左にあるInstallボタンを押す。
    3:インストールされているUnityEditorが表示されるので、AndroidSDKを追加したいUnityバージョンの歯車マークのアイコンをクリックする。
    4:AddModuleのボタンが表示されるのでそこをクリックする。
    5:Platformの項目から「Android Build Support」をチェックする。
    6:Installボタンを押す。


  • Metaの開発者ページでOrganizationを登録し、開発者登録を完了したにも関わらず開発者項目が表示されない理由としてアカウントの個人情報の登録漏れの可能性があります。
    特にアカウントに支払い方法の登録を行っていないとVRヘッドセットの開発者登録をONにすることが出来ません。アカウント登録において名前、住所、メールアドレス等もきちんと登録されているかをご確認ください。


  • 1:Unity EditorのAssetsフォルダ内に画像データをドラッグ&ドロップしてください。

    2:Unityに入れた画像をクリックしてInspectorを開いて「Texture Type」>「Default」になっているので「Sprite(2D and UI)」に変更してください。

    3:一番下にある「Apply」ボタンをクリックすると、Unity上で表示できる画像データに変換されます。

    4:次に、ヒエラルキーでCanvasオブジェクトに付いている子オブジェクトのImageをクリックします。

    5:ImageのInspectorを見ると、「Source Image」の項目があるので、先ほど変換した画像データをドラッグ&ドロップしてください。すると、シーン上に画像が表示されます。

  • https://vracademy.jp/blog/meshbaker-for-unity/ を表示してください。
    上記ページにてMesh Bakerを用いてマテリアルをアトラス化する処理軽減方法について解説しています。

  • 1.Unityの新規ProjectはURP テンプレートで作成します

    XRアプリ開発のためのUnityProjectは現在URPの利用が推奨されています。

    新規プロジェクトを作成する場合は右記赤枠の「Univeral 3D」を選択して新規プロジェクトを作成してください。
    URPの概要:https://docs.unity3d.com/ja/Packages/com.unity.render-pipelines.universal@14.0/manual/index.html

    2.Unityを開き、Build Settingsを開いてプラットフォームをAndroidに選択してSwitch Platformをクリックしてください。
    VR開発では最初にこのプラットフォームを変更することを忘れないでください。

    3.Meta XR All-in-one SDKの追加

    下記URLにアクセスし、MetaQuest開発SDKをUnityProjectに追加します。
    アセットストアで「Meta XR All-in-one SDK」を検索し、マイアセットに追加をしてUnityに戻ってください。

    https://assetstore.unity.com/


    ここまでできたら~セットアップ②~に進んでください。

  • 1:UnityプロジェクトにSDKを追加する

    購入完了後、Unityに戻り、「Window」 > 「PackageManager」 > 「Meta XR All-in-one SDK」を開いて右上の「Install」をクリックしてアセットをインストールします

    2:Meta XRのSetupToolを選択

    Meta XR SDKには複雑なビルド設定を自動で設定する機能があります

    Project Settingsを開き、「Meta XR」を選択します



    3.CheckListのOutStandingIssuesをすべてFixする

    VRアプリをビルドするためには赤Issueで表示されている内容は必ず修正する必要があります

    FixAllをクリックして赤Issueをすべてクリアにします



    4.CheckListのRecomended ItemsをFixする

    次は修正が推奨される項目です。初めはすべて修正でOKですが、今後開発内容によっては一部推奨を無視した設定での開発もあります

    今回は「Apply All」ですべてを修正します



    設定後、下図のようになっていればOKです。


    VRアプリを開発するためにはプロジェクト作成毎に上記設定が必要です

    開発環境のセットアップは2024年04月現在の設定手順であり、機能アップデートでセットアップの手順は今後変更される場合があります

  • 残念ながらUnityでは、ゲームを実行(プレイモード)中に行われた編集作業は、実行を停止すると失われます。これを元に戻す方法はありません。
    これは意図しない変更を防ぐためにUnityではデフォルトで設計されています。ですが今後同じ失敗をしないようにUnity実行中の色を設定してミスを防ぐ方法はあります。
    【Unity 実行(プレイモード)中の画面の色を変える方法】
    1:[Edit] > [Preferences] を開きます
    2:[Colors] > [Playmode tint] から色を変更します。
    3:プレイモード中に変更した色に変わります。
    こうすることで視覚的に実行中であると分かりやすくなります。

  • Unityにダウンロードしたアセットを探す方法はProjectフォルダ内の【検索機能】を使うと便利です。
    ダウンロードしたアセットによっては「Assetsフォルダ」ではなく「Packageフォルダ」内に格納されることもあるので、検索機能を「Search:」 >「All」に変更すると見つけることができます。

  • 1:Unityエディタの上部にあるメニューバーから「Edit」>「Project Settings」>「Tags and Layers」を選択します。ここで新しいレイヤーを追加してください。

    2:シーン内のオブジェクトを選択し、Inspectorウィンドウで「Layer」ドロップダウンメニューから追加したレイヤーを割り当てます。

    3:「Edit」>「Project Settings」>「Physics」を開きます。「Layer Collision Matrix」から対象のチェックボックスを外すと、重なるレイヤー同士が衝突するかを設定できます。

    【覚えておきたい】

    チェックを外すことで計算を減らしパフォーマンスを向上させることができます。またヒエラルキーでオブジェクトを選択し、インスペクターの「Layer」>「Add Layer…」を選択してもレイヤーを追加できます。

  • Unity上でエラーが無ければQuest上で問題があるかもしれません。以下の方法を試してください。
    【原因特定方法】
    1.QuestでストアからOVR Metrics Toolをインストールして立ち上げて、「Enable Persistent Overlay」を有効にしてください。

    2.FPSの情報がオーバーレイ表示されるので、その状態のままアプリをAPKを実行。

    3.オーバーレイに表示されているグラフを見ると、どのシーンでFPSが下がるか確認できます。今回のケースでいうと、最初はアプリは動くが途中でオブジェクトのCGが重すぎて負荷がかかりゲームが止まった可能性があります。ビルド前にUnity上でCG負荷の軽減処理(リダクション)を行いましょう。

    Mesh Optimizerなどのツールを使用してリダクションをしてからビルドすると解決することもあります。

    【Mesh Optimizerの使い方】
    https://styly.cc/ja/tips/assets%CC%B2-unity-3dcg-mesh-polygon/


  • OVRCameraRigのOVR Managerの設定から「Hand Tracking Support」を【Cpntrollers And Hands】に設定して再度再生してください。

  • 大丈夫です。VR開発環境構築にMeta Questを使用している場合はProjectを開いて最初にAndroid設定に変更してください。
    理由としてはMeta Quest(以前はOculus Quest)は、AndroidベースのVRヘッドセットであるため、UnityプロジェクトをMeta Quest用にビルドする際にはAndroidプラットフォームに設定する必要があります。Android環境にするとMeta Questデバイスでアプリケーションをテストし、デバッグすることができます。
    この変換は時間のかかる処理であり、プロジェクトが大きくなるにつれ肥大します。なので開発を始める前にモードを変更することで不要な再変換処理を抑えることができます

  • 「XR-PluginManagement」>「Oculus」>「StereoRendering」>「MultiView」に変更してください。これだけでCGのレンダリングパフォーマンスが約2倍上がります。
    現在MetaはMultiViewの設定を推奨しており、設定するだけでパフォーマンスがぐっと軽くなります。
    最後にLow Overhead ModeをONにします。

    *注意事項*
    MultiViewは特殊な描画方式のため、アセットストアで購入した一部のCG(シェーダ)やエフェクトが機能せずに映像がグチャグチャになってしまう可能性があります。MultiViewにして映像がおかしくなってしまった場合は素直に元に戻しましょう

  • 最初にUnity Editerを立ち上げる前にAndroidがインストールされているか確認してください

    MetaQuestの中身(OS)はAndroidで構成されています

    Androidがない場合は画像の指示に従ってモジュールを追加してください

    インストールしたらUnityを開き、Build Settingsを開いてプラットフォームをAndroidに選択してSwitch Platformをクリックしてください

    VR開発では最初にプラットフォームを変更することを忘れないでください

  • まずAndroidにSwitch Platformをしているか確認してください。

    場所は「File」 > 「Build Settings…」 でBuild Settings画面を開き、PlatformをWindows,Mac,LinuxからAndroidを選択し、右下のSwitch Platformを選択してください。VRアプリ開発では必ず最初に行ってください。

    Androidに変更できていたら、次に「Edit」>「Project Settings」>「Meta XR」を選択してProject Setup Toolを開いてください。

    Androidが選択されているかを確認後、「Fix All」をクリックしてください。

    これをすることでUnityがProject Settingsを推奨設定に自動的におこなってくれます。すべて緑色にして再度エディタを再生してください。

  • OVRPlayerControllerにはコライダーが設定されているため、他のコライダーを持つオブジェクトと衝突します。

    これを解決する方法として、

    1:右上のGizmoをOnにした状態でOVRPlayerControllerを選択してください。するとPlayerControllerのコライダーが視認できます。

    2:この状態でインスペクターからCharacterControllerのRadiusの値を0.5から0.1にすると、接触するコライダーの範囲を変更できるため、オブジェクトに近づくことができます。

    3:またもう一つの解決方法として前述で記載した「Unityエディタを再生するとオブジェクト同士が衝突してモデルが崩れてしまいます」をご確認ください。

  • メニューから GameObject > UI > Text – TextMeshPro を選択し、シーンにテキストを追加する。
    Canvasのオブジェクトが、Textの上位階層に自動的に作られるので、Canvasコンポーネントの
    Rnder Modeを World Spaceに変更して、RectTransformで、位置、サイズ、スケールを整える


  • OVRManagerの設定を見直し、Color SpaceをLinearに、Stereo Rendering ModeをMultiviewに設定します。また、Quality Settingsでアンチエイリアス(MSAA)を4xなどに設定すると綺麗になります。

  • XR Origin(またはOVRCameraRig)の「Tracking Origin Mode」を「Floor」に設定してください。これにより床からの高さが実際の身長として反映されます。

  • OVRManagerの「Passthrough Support」を「Supported」にし、「Enable Passthrough」にチェックを入れます。さらにMain Cameraの背景を透明色(アルファ0のSolid Color)にし、OVRPassthroughLayerコンポーネントを追加してください。

  • Meta SDKの「OVRSceneManager」コンポーネントを使用し、Quest本体の空間セットアップでスキャンされた平面データをプレハブとしてシーン上に自動生成する仕組みを利用します。

  • Quest本体の機能である「Meta Quest Air Link」を使用します。PCのOculusアプリでAir Linkを有効にし、QuestからPCに接続した上でUnityエディタの再生ボタンを押すとVRプレイが可能です。

  • Meta Quest Store(またはApp Lab)からOVR Metrics Toolをダウンロードし、Quest内で起動して「Persistent Overlay」をONにします。アプリ起動中にFPSやCPU/GPUの負荷がグラフでオーバーレイ表示されます。

  • Meta Avatars SDKをインポートし、シーンに「OvrAvatarEntity」を含むサンプルプレハブを配置します。設定でApp ID(Metaのダッシュボードで取得)を入力することで、ユーザーのカスタムアバターをロードできます。

  • 対象のオブジェクトに「OVRSpatialAnchor」コンポーネントをアタッチし、スクリプトから `SaveAsync()` を呼び出してクラウドまたはローカルに保存します。次回起動時はUUIDを使ってロードします。

  • AR Plane Managerコンポーネントの「Detection Mode」を「Horizontal」のみ(Verticalのチェックを外す)に設定してください。床や机の上の平面だけが検出されます。

  • プレイヤー視点とは別の固定カメラ(Cameraコンポーネント)をシーンに配置し、そのカメラの「Target Display」をDisplay 1等に設定します。VR HMDにはVR映像が、PCの画面にはその固定カメラの映像が映ります。


アプリビルド

  • ①アプリ(APKファイル)をビルドするにはBuildSettingsを開き、現在のシーンをScene in Buildに追加してください



    ②Buildボタンを押すと保存先フォルダが出るので、名前と保存場所を指定して保存してください

    ③APKファイルの保存場所とAPKファイルの名前を決めます

    ④保存する場所と名前を決定したら保存ボタンをおします

  • 「Build Settings」>「Build」ではなく、となりの「Build And Run」を押すことでAPKの作成からインストールまで行ってくれます。

    この方法でサイドクエストを使わずに直接APKファイルをインストールすることが可能です。この方法は通常の検証時にオススメです。

  • 「Edit」>「Project Settings」>「Player」を開き、「Default Icon」の欄にアセット内の画像(SpriteまたはTexture2D)をドラッグ&ドロップしてください。

  • 「File」>「Build Settings」を開き、「Scenes In Build」のリスト内でビルドに含めたくないシーンのチェックボックスを外すか、選択してDeleteキーでリストから削除してください。


グラフィクス

  • Unityでは3Dモデルの裏面は描画されないよう設定(カリング)されています。

    光の貫通を防ぐ方法として、天井と壁を選択し、「Cast Shadows」>「Two-Sided」に変更します。

    こうすることで表裏の面で影の投影は計算されるようになり、光が貫通しなくなります。

  • 【VRアプリを開発する場合、パフォーマンスを定期的にチェックしてCGモデルを描画する頂点数を減らして処理を軽減する「リダクション」が必須です】

    CGパフォーマンスの確認方法は以下の順に行います

    1:UnityエディタのGame画面にStatsという項目があります。ここをクリックするとStatisticsが表示され、Unityを実行したときのパフォーマンスを表示してくれます

    2:頂点数=Vertsです。Unity実行中の数値を確認します

    3:Quest2での理想値は300kです。大きすぎた場合はリダクションをしてください。

    この数値は現在描画している範囲を表しています。カメラの見える範囲が変わると数値も変わるので注意してください。

  • 現状、Meta Questシリーズ(Quest 2、Quest 3)はスタンドアロンデバイスであり、独自のAndroidベースのOSを使用しています。
    スタンドアロン動作時には、DirectXではなく、OpenGL ESまたはVulkanが使用されます。
    そのため、Quest 3のスタンドアロン環境でDirectX 12を直接使用することはできません。

    しかし、PCと接続してQuest LinkまたはAir Linkを使用する場合は、PCのGPUとそのDirectXバージョンに依存します。
    この場合、DirectX 12は使用可能です。

  • デフォルトだと実行中なのかわかりづらいので 以下の方法でカラーを変更する。

    ①メニューバーの「Edit」→「Preferences」をクリック
    ② Preferencesパネルの中の「Colors」を選択
    ③「Playmode tint」が再生中の色なので 自分の見やすい色に変更する。

  • Unityのヒエラルキーで作った3Dオブジェクトを、fbxファイルとしてエクスポートする方法です。
    ①ウィンドウ > PackageManager を選択
    ②検索窓よりFBX Exporter をインストール。
    ③ヒエラルキーにてFBXでエクスポートしたいオブジェクトを選択(画面上でも可)
    ④右クリックしてExport To FBX を選択。
    ⑤保存先を指定してExportをクリック。

    https://docs.unity3d.com/Packages/com.unity.formats.fbx@5.1/manual/index.html

  • Edit > Project Settings > Quality を開き、「Shadow Resolution」を「High」などに設定するか、Directional Lightのインスペクターで「Shadow Type」を「Soft Shadows」に変更してください。

  • 対象のマテリアルの「Emission」にチェックを入れて色と強度(Intensity)を設定し、URP設定やPost Processingの「Bloom」エフェクトを有効にすることで周囲が光を帯びて見えます。

  • Window > Rendering > Lighting から Environment タブを開き、「Other Settings」の中の「Fog」にチェックを入れます。色や密度(Density)を調整してください。

  • URPを使用している場合、Global Volumeをシーンに配置し、「Add Override」からPost Processingエフェクト(Color Adjustmentsなど)を追加するか、専用のCustom Renderer Featureを作成して適用します。

  • Projectウィンドウで画像(Spriteなど)を選択し、Inspectorの「Filter Mode」を「Bilinear」から「Point (no filter)」に変更し、Applyを押してください。

  • マテリアルのInspectorを開き、Base Map(またはAlbedo)の横にある「Tiling」のXとYの数値を増やすと、テクスチャが繰り返して表示され細かくなります。

  • ポリゴンの「法線(Normal)」の向きが逆になっているのが原因です。Blender等のモデリングソフトで面を選択し、「法線を反転」させてからFBXを再インポートするか、マテリアルをTwo-Sided対応のシェーダーにしてください。

  • 対象のParticle Systemを選択し、Inspector内のメインモジュールにある「Looping」のチェックボックスをオンにします。

  • Window > Rendering > Lighting を開き、Environmentタブの「Environment Lighting」の「Source」を「Color」にし、Ambient Colorを暗いグレーなどに設定することで全体的な底上げができます。

  • Projectウィンドウで右クリック > Create > Materialを作成し、Shaderを「Skybox/Procedural」や「Skybox/Panoramic」等に変更します。色を夕暮れ風に調整し、Lightingウィンドウの「Skybox Material」にアタッチしてください。


入力処理(コントローラー・ハンドトラッキング)

  • シーン上に配置したControllerの設定を変更する必要があります。ヒエラルキーで「Camera Rig」>「TrackingSpace」>「LeftHandAnchor」>「LeftControllerAnchor」>「[BuildingBlock] Controller Tracking Left」の順番に選択してください。次にインスペクター上でOVR Controller HelperのControllerタブをクリックしてボタンを変更してください。それぞれのボタン配置は画像で確認してください。



  • OVRPlayerControllerを検索してヒエラルキーにドラッグアンドドロップして、Camera Rigを子オブジェクトにしてください

    OVRPlayerControllerのOVRCameraRigは削除してください。

    コントローラのスティック入力で移動が可能になります。OVRPlayerControllerにはRigidBodyがついてるので、必ずPlaneなど地面を設置してください。

  • XR Interaction Toolkitを使用している場合、対象オブジェクトに「XR Grab Interactable」をアタッチし、「Movement Type」を「Velocity Tracking」に設定します。これにより手の速度がオブジェクトに伝わり、自然に投げることができます。

  • XR Grab Interactableの設定で、「Force Grab」などを調整するか、スクリプトでInteractorの `isSelectActive` 状態を上書き保持するよう制御することで、一度持ったら離せないアイテムを作成できます。

  • XR Originに「Locomotion System」と「Teleportation Provider」を追加し、移動させたい床に「Teleportation Area」または「Teleportation Anchor」コンポーネントをアタッチしてください。

  • XR Originに「Continuous Turn Provider (Action-based)」コンポーネントを追加し、SystemフィールドにLocomotion Systemを割り当て、コントローラーの入力アクション(Right Hand Turnなど)を設定します。

  • XR Interaction Toolkitの場合、`XRBaseControllerInteractor.SendHapticImpulse(振幅, 期間)` メソッドをスクリプトから呼び出すことで、アクション時に振動を発生させることができます。

  • Canvasに「TrackedDeviceGraphicRaycaster」コンポーネントを追加し、コントローラー側に「XR Ray Interactor」を設定します。また、シーンに「XR UI Input Module」を持つEventSystemが存在することを確認してください。

  • Meta Interaction SDKやXRIのPoke機能を使用します。手の先端に「XR Poke Interactor」を設定し、ボタン側に「Poke Interactable」を付与して物理的に触れる距離を調整します。

  • Meta Interaction SDKの「Active State」機能や「Pose Detection」機能を使用し、各指の屈曲(Finger Flex)や向き(Finger Feature State Provider)の条件を組み合わせて独自のポーズ判定を作成します。


Meta Quest 操作

  • 右コントローラーにあるクエストボタン(∞に似たマーク)を長押しすると、正面の位置を調整することができます。

  • 【最初に確認!】QuestとPCが同じWi-fi環境に接続している/接続ケーブルはUSB 3.0を使用している
    1:Meta Quest LinkアプリをPCにインストールしてください。
    インストールはこちら
    https://www.meta.com/ja-jp/help/quest/articles/headsets-and-accessories/oculus-link/set-up-link/

    アプリを立ち上げたら「設定」>「ベータ」>「開発者ランタイム機能」をオンにしてください。

    2:オンにしたら左の欄から「デバイス」を押して、お持ちのQuestを追加してください。
    3:Meta Questを起動しQuestの「設定」>「デバイス」>「開発者モード」をオンにしてください。
    4:PCとQuestを一度再起動して再度接続してください。

  • QuestをPCにUSB接続し、HMD内で「ファイルへのアクセスを許可」を選択します。PCのエクスプローラーでQuestの内部ストレージ(`Oculus/Screenshots` または `Oculus/VideoShots`)を開き、ファイルをコピーしてください。

  • Questホーム画面の「設定(歯車アイコン)」>「ストレージ」を開くと、現在の使用容量とインストールされているアプリごとのサイズ一覧が確認できます。

  • Questの開発者モードが有効な状態で、ホーム画面の設定>「開発者」メニューに移動し、「境界線を無効にする」のトグルをオンにします。

  • PCやスマホから `oculus.com/casting` にアクセスするかMeta Questアプリを開き、Quest本体のメニューの「カメラ」または共有ボタンから「キャスト」を選択して送信先を指定します。

  • Questのホーム画面で下部メニューバーの時計やWi-Fiアイコンがある部分(クイック設定)をクリックすると、ヘッドセット本体と左右のコントローラーのバッテリー残量(%)が表示されます。


その他

  • Meta Quest 2 の瞳孔間距離(IPD)は、58mm、63mm、68mmの3段階からいずれかから選ぶことができます。
    ヘッドセットの内側のレンズ部分を両手でつかみ内側もしくは外側へゆっくり動かし自分に合う位置を調整します。
    瞳孔間距離(IPD)は眼科で計測してもらうか、スマホの外部アプリ (例:EYE MESURE等)でも簡易ですが測る事ができます。


=VRアカデミー学校説明会=