プロジェクト15
かなり長い間ほったらかしになっていたプロジェクト15をとりあえず、今の段階で完成とすることにした。 空間上に配置されたキューブを視線で選び、そのキューブの上へワープするというもの。 キューブはライフゲームのルールに従うようになっており、周辺の…
Unityの最新版で、作成途中のプロジェクトを読み込み、コンバートして動作確認をした。 最初、ビルドしようとしたらコンポーネントが足りなくてビルド出来なかったのでUnityHubでコンポーネントを追加しなおした。 このあたりはUnityHubでだいぶ楽になった。
昨日のオブジェクトが取得できない問題は、指定するコンポーネント名が間違っていた。スクリプト名を指定すればいいところをプレハブにつけた名前を指定していた。 これで視線でオブジェクトを選べるようになったので、その位置へと移動する部分を実装した。…
プレイヤーを作成して、メインカメラをその子供にすることによって、移動も対応することができた。 次に視線で選択したオブジェクトをスクリプトで取得するには VREyeRaycasterを利用する。 Unity - VRでのインタラクション 視線にヒットした VRInteractiveI…
指定した位置へ移動させようと思い、カメラ位置を変更しようとしたが、カメラ位置はHMDのポジションで決まるのでうまくいかなかった。 カメラではなくプレイヤーオブジェクトを用意して、そこにカメラを付け、プレイヤー側を移動すればうまくいくかな。
視線で選んだCubeがフェードアウトで消えるようにして、消えたらオブジェクトを削除するようにした。 見るだけでオブジェクトが消えていくのは面白いがちょっと物足りなく感じてしまった。爆発するようなエフェクトで消したほうが面白いかな。
視線で選んだCubeがフェードで消えていく処理を実装中。 フェード部分はコルーチンを使うことでシンプルに書くことができた。 しかし、フェード中に別のイベントが来るとうまくいかないことに気がついたので修正中。
オブジェクトを透明にするにはMaterialのAlbedoカラーのアルファ値を変更すれば良い。 例えば半分の透明度にするには次の通り。 Renderer renderer; Color color = renderer.material.color; color.a = 0.5f; renderer.material.color = color; MaterialのRe…
視線で選んだCubeの色を変更する部分を実装。 選んだかどうかはイベントで実装できていたので、マテリアルの色を変更するだけだから、すぐに実装できた。 これでだいぶ以前の状態に戻ってきた。
ゲームマネージャーを追加して、ステージ上にCubeを配置する部分を実装。 前と同じようにCubeを配置することはできたのだが、Cubeに落ちる影の解像度が低くエッジがギザギザになってしまっている。どこかの描画の設定を変えないと。
新たにプロジェクトを作り直してシーンを新たに作成。 VR Samplesをインポートして、VRSampleScenesのPrefabsのUtilsからMainCameraをシーンに登録。 Cubeを作成して、コンポーネントでVRInteractiveItemのスクリプトを追加。 新たなスクリプトを作成して、V…
FPSControllerとHMDの動きの関連について調査中。 マウスによる向きの回転はFPSControllerのY軸の回転に反映されているようだ。HMDを動かしてもFPSControllerの位置や向きは変わらない。HMDからの入力はFPSControllerの子供のFirstPersonCharacterに反映され…
FPSControllerでVirtual Reality Supportedにチェックを入れ、プロジェクトを実行してからHMDを動かすと、FPSControllerのカメラが上下に細かく振動してしまう。HMDを置いて動かさなくても振動は止まらない。 上下の振動ということで頭の揺れに関わるかと思…
標準アセットのFPSControllerは通常ではマウス操作で視線方向を変えることができる。 しかし、Project SettingsでVirtual Reality Supportedにチェックを入れて、Oculus RiftのHMDを使えるようにすると、マウスの移動では左右の向きだけで、上下方向は変える…
Unityのバージョンをチェックしたときに、以前のバージョンもダウンロードできることに気がついた。 バージョンアップして読み込めなくなった前のプロジェクトを開けるかもしれないと、以前のバージョンをインストール。 インストールするフォルダを別にすれ…
視線方向をわかりやすくするためのターゲットアイコンを表示。 FirstPersonCharacterの子供としてGameObjectを作成。さらにその子供にUI/Canvasを追加。またその子供にImageを追加してそこにアイコンの画像ファイルをアサイン。 あとはCanvasの座標やスケー…
前のスクリプトやプレハブを使ってステージ上にオブジェクトを配置して、実行してエラーにならないところまで復元できた。 ただ、VR対応はまだなので、これからそちらの対応作業。
新たにプロジェクトを作り直して復元中。 前のプロジェクトのAssetsフォルダをコピーしてみたら、新しい方でもプレハブやスクリプトが読むことができた。 あとはシーン上のGameObjectはどうだったか思い出しながら追加していかないと。
バージョンアップしたら正しく動かなくなったプロジェクトを詳しく見てみたら、標準アセットに互換性が無かったらしく、インポートしたものが消えていた。 元に戻すにはけっこう修正が必要になりそうなので、最初から作り直したほうが早そう。 ということで…
Canvsの子供にImageを追加して、さらにフリー素材のアイコン画像をドラッグして登録。 これで目の前にターゲットアイコンを表示することができた。 しかし、オブジェクトの後ろに隠れてしまう。常に前面に表示するようにしたいのだが。
視線でターゲットを選択したことがわかるようにUIとしてターゲットアイコンを実装中。 とりあえず、FirstPersonCharacterの子供としてUI/Canvasを追加。 だがまだうまく表示されていない。パラメータがどこか間違っているのだろう。
視線方向にレイキャストを飛ばしてヒットしたオブエジェクトの色を変更し、視線が外れたら色を戻すというのを実装。 当たっていたレイキャストが外れたというのは、ヒットしたオブジェクトを保持しておいて、レイキャストが外れたり、別のオブジェクトにヒッ…
昨日のVR Studiesのドキュメントを読んでいたら、レイキャストを行うスクリプトはカメラのスクリプトではなく、カメラの子供として追加したオブジェクトのスクリプトで行っていた。 自分も同じようにFirstPersonCharacterの子供にキューブを追加して、そのキ…
まだVRを有効にしたときの座標の取得に苦戦中。 Rayの始点の座標をログ表示してみたら、Virtual Reality Supported がOnのときもOffのときも値が変わらない。でも画面上の見た目はずれている。右側にずれているようにみえるので、もしかして右目の位置とかに…
Rayの始点がプレイヤーの顔の位置とずれていることがわかった。 HMDのポジションと方向を中心に戻すRecenterを呼び出していなかったのでスタート時に呼び出すようにしたらだいぶ良くなった。 VR.InputTracking.Recenter - Unity スクリプトリファレンス だが…
デバッグ描画をしてみたら、Rayを飛ばす向きはあっているが、位置が間違っていることが分かった。 ポジショントラッキングで移動した部分が考慮されていないみたいだ。 ということで修正中。
オブジェクトに設定したマテリアルの色が出ないと思ったら、視点から伸ばしたCubeだったので、常にCubeの中にいることになり、裏面で描画されていなかった。 このことに気がつくまでけっこう時間がかかってしまった。調べている途中でシェーダー関連のドキュ…
プリミティブの色を変更するには、マテリアルの色を変えれば良い。 GetComponent<Renderer>().material.color = Color.red; しかし、スクリプトで作ったプリミティブではうまく描画されなかった。 実行中に表示されるプロパティのマテリアルのところではちゃんと指定し</renderer>…
Cubeをラインのように描画するようにした。 まずCubeを細長くするためにXとZのスケールを極端に小さくし、Yのスケールを線分の長さとする。 始点から終点へ向くようにCubeを回転させる。向きはQuaternion.FromToRotation()を使って求めた。 回転位置はオブジ…
プリミティブのCubeを細長くしてラインのように使おうと実装中。 ラインなら始点、終点を指定するだけで済むけど、Cubeなのでそうはいかない。スケールをラインの長さにして、回転を合わせてやればいいかなと試行錯誤中。