2014年10月26日

ゲームのアップグレード (3) | ジャイロの動きでカメラを回転!

さてようやく本番。
なんか準備ばっかり、いっつも長いですよね〜。
でわ、ジャイロの実装いってみましょうか!


その前に地球モデルのアップグレード
さて、いきなり話しが変わっちゃいました。
実は、アセットストアを見てみたら、なんかいい感じの地球モデルが無料で置いてあったんですよね♪
Screen Shot 2014-10-23 at 2.50.49 AM.png
なんで、ちょっとダウンロードして、差し替えてみたいと思います。
興味があれば、ここから見てみてくださいね。
Screen Shot 2014-10-23 at 2.51.09 AM.png
このパッケージは4種類の解像度のプレファブを含んでいるんで、それぞれの環境や見え方に合った解像度を選べばいいと思います。
さて、プレファブをドラッグして...コリジョンは付いてないんで、前から使ってたローポリSphere の Mesh Collier を使ってます。厳密にいつとちょっとずれもあるだろうけど、ここでは関係無いしね!
あとは、ぼんやりと空気の層を表現する為に "Halo" っていうObj がプレファブに居て、ポイントライトの "Draw Halo" 機能を使ってるみたいだけど、自分の環境だと調整してもいい感じで出ないんだなぁ〜。
なんで、コレは非表示にして使わない事にしますね。

で実行してみると....

Screen Shot 2014-10-23 at 2.54.03 AM.png
なんか、コレだけでずいぶん完成度が上がった気になっちゃうね...w
ちなみに、下から2番目の解像度の "Earth960Tris" プレファブでこんだけいけます。


本番のジャイロでカメラ回転の対応!
では本命のジャイロ機能ですね!
一応前にテストでちゃんと動いてるからちょっと油断してるけど、どうかな?
大丈夫!
ま、今回も100%と言い切れないけど、ちゃんと動いてますね!!
通常の3Dカメラにくっ付いてるスコアとかゲームオーバーテキストとかも回っちゃってますが、コレは後で直しますね^^;

さて、実はそれ以上の問題があって...
デバイスの向きなんですが、どうも起動時の姿勢を基に計算されてるみたいで、Unityが提供してくれるオイラー角の情報だけ見てると、変な体制でゲーム起動された時に、今のやり方だと、傾きが正しく取れないみたいなんですよね。

なんで、前にやってたクォータニオンからオイラー角の情報を取ってくるやり方から変えてみますね。


デバイスの傾き計算の改良
さて、なんかいろいろトライ&エラーの繰り返しやリサーチをして、結構時間掛かっちゃったんですが、結局の所、角度の情報をヨー・ピッチ・ロール形式のオイラー角の情報にしないと駄目みたいです。

で、ここ とか ここ にとっても役立つ情報を見つけて実装の役に立ちました。
具体的には、クォータニオンから、ヨー・ピッチ・ロール形式のオイラー角に変換する式を書いてくれてたんですよね。
で、実装したスクリプトはこんな感じ!
Screen Shot 2014-10-24 at 3.00.15 AM.png
ヨー・ピッチ・ロール形式の角度を求める所は、さっき参考にしたサイトの式をそのまんまですね^^;
その後はちょっと自分なりの改良がしてありますが、デバイスを持った時の画面上側の傾き具合によって、得られるロール角の値が違ってくる、もっと具体的に言うと、デバイスが寝た状態だと、入ってくるロール角が小さくなるんで、デバイスの状態によって検出する基準値を変えて、操作感が変わらない様に一応努力!
じゃ、確認してみましょうね。
ばっちり!?これでどんなユーザーがどんな向きに向いてても、ちゃんとZ向きの回転だけ取れてますよね?
床向きに近い向きでも、天井向いてても、ちゃんと角度、みれてますよね?

ちなみに、参考値はこんな感じ。(単位ラジアン)
画面の向きRollPitch 平行Pitch 右傾斜Pitch 左傾斜
画面横向き - PI / 20-1.41.4
画面上向きPI0-0.40.4
画面下向き00-0.40.4

いや〜。しかしなんか、このハンドル操作みたいなのって、結構みんな使ってると思ったのに、なんか全然資料が見当たらないんですね〜。
こんなに苦労するのは想定外でした!!
もう、簡単過ぎて、書くまでもないって事なのかな〜?

        にほんブログ村 ゲームブログ×PlayNCBlogへ
 初めてみました。よかったらクリックお願いね ♪


若いっていいなぁ〜。でも、外でもちゃんと遊びなさいね
posted by やまけん at 14:13| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: