高速で移動するタイプのゲーム制作【UUJ】

質問:
戦闘機のようなものを時速800kmで飛ばすゲームを考えています。
リアルな物理演算を尊重するため、時速800kmで飛ばしていますが、地形があっという間に切れてしまいます。
Terrainで莫大な大きさの地形を作るべきなのか、それとも他にうまいやりかたがあるのか教えて頂けますか?


若干質問の内容と違う話となりますが…
巨大なものを作るにしても、計算してスケールをかけて小さい世界で擬似的に表現するにしても、

大きなマップと高速移動で一つ気をつけなければならないのが浮動小数点の有効桁数です。
32bitの浮動小数点の10進数における有効桁数というのは大体7桁くらいで、それを超えると計算誤差が大きくなります。
つまり、原点からあんまり遠いところに行っちゃうとすぐに計算誤差が大きくなって物理挙動なんかも怪しくなってくるので、高速移動する自機が主役のゲームはカメラと自機はつねに原点において他を動かしたりとか、一定距離毎にワールドすべての位置を自機を原点としてリセットしたりといった処理をいれる必要があります。
時速1000Kmくらいでロボットが飛び回る某ゲームでもこの問題はよく発生したので、上記のような処理を噛ませていたようですね。

上記の方のご意見を大前提として、地形モデルがゲーム性に大きく依存していなければ(単なる見栄えであるなら)
地形モデルをある程度の大きさで分割してパターンを用意し、前方から切れ目なく繰り返し出現させる、などが常套手段でしょうかね。
細かいことはゲーム内容によりけりですが。

中々めんどくさそうですね…
何もフライトシュミレーターを作るわけではないので、その辺りで妥協してもよさそうです

>中々めんどくさそうですね
こだわらなければそんなに面倒じゃないですよ。
全く同じ地形のモデルを2つ用意して、交互に奥から手前へ高速に移動させるだけとかなら。
でも、地形モデルの端と端がキレイにつながるようなモデルを用意する事が面倒かも知れませんね。

2Dのゲームでもよく使いますよね同じ地形の繰り返し。

飛行機ゲームはかなり上空から俯瞰するので、繰り返し地形かわかりやすいのが難点ですね。
雲模様からハイトマップを作ったり、unity仮面のアセット記事を参考にするといいかもしれません。

Space for Unity(S4U: http://www.spaceunity.com/ )で遊んでいた時に、
S4Uのデモが面白い方法を採っていたのですが、
地形が重要でないなら似たような手法を採れるかもしれないです。
skitch
この画像を見てほしいのですが、何をやっているかというと、惑星と自機のようにスケール感の違うものをカメラを分けてしまって描画しています。
惑星側のカメラは自機の動きに呼応して回転したり移動したりしますが、スケールの扱いは1=100kmみたいな扱いになっていて、非常にゆっくり移動します。
対して自機と自機のカメラは1=1mの空間を移動していて、この二つのカメラを合成して絵を作っています。シーンビュー的で見ると惑星と自機が同じくらいのサイズになっていておかしな感じがするのですが、縮尺の違いすぎるものをおさめて表現するにはうまいやりかただと思いました。

「宇宙をカメラで描画する」のはどうやったらいいのですか?

http://docs-jp.unity3d.com/Documentation/Components/class-Camera.html(カメラドキュメントへのリンク)
シーンには複数のカメラを置くことができ、カメラで描画する対象はCulling Maskで指定することが出来ます。
Culling Maskに指定するレイヤーは各ゲームオブジェクトのインスペクター右上のあたりから設定できます。
あとは、カメラのDepthをいじって描画順を調整し(数値が大きいほど後に描かれる)、
Clear Flagsを変更して手前のカメラの描画結果をどうクリアするか(あるいはしないか)を調整すれば複数のカメラをつかった表現の出来上がりです。
S4Uのより詳しい動作は気になるようであればアセットを取得してみてくれればと思いますが、
複数カメラを使った表現は上記の手順だけであっさり出来るので、色々研究してみてくれればいいかと思います。

フライトシューティングゲームを作っているものです。
僕はシンプルにすべての距離と速度と拡大率を10分の1にしていますね。
unity上の1が10mといった具合です。
マッハ2ぐらいでもそこまで違和感はありませんでした。
それ以上縮小すると、今度はオブジェクトの配置で荒くなる感じがしました。

Terrainは使いましたか?

Terrainを使うために10分の1にしています。
 地形の詳細表示の境目が通常では2000が限界なので、10分の1に縮小する事で見かけ上10000m先まで詳細表示できます。
もちろん飛行機ゲームの特性上広大なマップとメモリが必要になりますけどね。

Comments

comments

スポンサーリンク
336*280px