Avoid The Walls 開発日記 1

旧称 VR イライラ棒。Avoid The Walls を作る日記です。

ゲームらしいゲームを作りたくなって、イライラ棒が簡単に作れて VR 向きで良さそうだったので挑戦中。

果てさてどこまでやれるのか…今日は1日目。

3月10日

  • プラン決め
  • コアとなる棒の動きを実装
  • 壁にぶつかったら反応を返す
  • スカイボックスの変更

プラン決め

ざっくりと作るもののプランを決める。コアな目標だけあればよくて、細かく決めてもどうせ諸々の事情が生まれて変わるし、固執すると自分を縛ってしまって歩みが遅くなるので。

下記のようなテキストファイルを作成。軽い軽い。しかし今見ると矛盾しそうな点がちらほらあるな…

コアとなる棒の動きを実装

棒がカメラ=頭の動きと連動してそれらしく動くようにします。

GearVR 想定なので(ポジトラがないので)、MainCamera の Rotation のみを取得し、これを棒の Position に反映させます。

Quaternion についてはまだよくわかってません。x, y, z で軸の方向を指定して、その軸で w の分だけ回すんじゃないのかしら。回転かけるときにはそれで良くても、取得するときには違うのかもしれない…とインスペクタで値を見ながら DK2 を回して思うのであった。でもとりあえずこれで狙った動きになった。

1つ注意したいのは、DK2 と Gear VR では得られる回転の軸方向が逆っぽいということ。いざビルドしてみたら、DK2 と逆に動いて??となった。そういう違いを吸収するのがUnity の仕事なのでは?(DK2 は開発機だから知らないよって事かしら?あるいは実行環境によって軸の方向を変える設定があるとか)

壁にぶつかったら反応を返す

壁を避けるゲームなので、壁にぶつかっても何も起こらないのでは楽しくありません。

将来的には要素を重ねていくにしても、とりあえず意味がわかるくらいにはしようと実装。(というより OnCollisionEnter をそういえば使ったことなかったなと思って)

棒の色が変わるだけです。

スカイボックスを変更

デフォルトでも別にいいし、スカイボックスだけ変えたところで VR 的な価値は何ら向上しないわけですが、余りに素の状態なので Asset Store から適当に見繕います。ちょうど無料セールしてたのを使用。

最終的にこうなりました。

red

まとめ

初め Quaternion 同士を足そうとして膝にエラーを受けたり(最終的には float 4 つの構造体なんだから足せたっていいじゃんと思う)していたら2時間くらい飛びました。

そういえば Start 関数のコストなんてそんなに考えなくてもいいんだろうけど、インスペクタで参照を指定しておくのと、Start 関数で GetComponent するのってどっちがローコストなんでしょう。やっぱ前者かな。コードも短くなるし、可能なシチュエーションではそうするべきか…あんまり増えるとインスペクタの表示領域を圧迫するわけですが。

今回のスクリプトファイル全文はこちら。

そんなこんなで次回はこちら

Avoid The Walls 開発日記 1” への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です