1

プレイヤーが 2D 空間を動き回るゲームを作成しました。現在のビューは上から見たもので、プレイヤーを真下から見ています。私が追加したいのは、ビューを上から 2.5d パースペクティブに移行する機能です。基本的には上から見たものを地平線に変えたいと思っています。Frogger のビューからより FPS スタイルのビューに移行するようなものだと考えてください。

では、X 座標と Y 座標を取得し、疑似 3D ポイントに変換するにはどうすればよいでしょうか。2 次元の点を 3 次元の点に変換する方法の例を見てきましたが、それを完全に 2 次元のものに適用する方法がわかりません。

これを達成するのに役立つ例やコードはありますか?

4

3 に答える 3

0

あなたが探しているのは、R^2からR^3への翻訳です。空間内の各ポイントに変換を適用して、それをベクトルと見なす必要があります

行列の乗算

(私はそれをインターフェースにすることをお勧めします)

ここで、ゲーム内の各オブジェクトには、ある種の(x、y)座標のペアがあると仮定します。R ^ 2で作業しているので、空間全体の基本ベクトルはe1(0,1)とe2(1,0)です。これを3dに変換したいので、これは線形であることを思い出して、任意のスケーラー(番号)。

だからこれはによって与えられます

'z'を生成するには、行列の乗算を行う必要があります。

r ^ 3では、e1は(0,1,0)になり、e2は(1,0,0)になり、e3は(0,0,1)になります。

これにより、上記の答えと同様に、視点が地面の高さに設定されます。

今、このwolframをチェックしてください私は完全に任意の値を設定しました

http://www.wolframalpha.com/input/?i=matrix&a= C.matrix-_ Calculator.dflt-&a = FSelect _ ** matrixOperations-.MatrixOperations-&a = * FP.MatricesOperations.matricesop- matrixmult&f4 =%7B% 7B79%2C4%7D%2C%7B8%2C8%7D%7D&f = MatrixesOperations.theMatrix1%7B%7B79%2C4%7D%2C%7B8%2C8%7D%7D&f5 =%7B%7B1%2C0%2C5%7D%2C %7B0%2C1%2C5%7D%7D&f =MatrixesOperations.theMatrix2_%7B%7B1%2C0%2C5%7D%2C%7B0%2C1%2C5%7D%7D

行列の乗算は、オンラインで見つけることができる(元の意味での)単純なアルゴリズムです。

この関数から3Dベクトルとして返されたAnを描画できます。

ウィキペディアからの式

CC WIKI

青い部分を無視して同じことをします。

x'(100,0)*(1,0,0)y'(0,100)* v(0,1,0)の場合

グーグルで簡単に見つかります

グーグル

于 2012-05-17T22:10:53.903 に答える
0

2.5d 投影 (正射投影とも呼ばれます) の場合、最も簡単な方法は、3 次元の 2d ベクトルを選択し、それを重みとして使用して、幅と高さに深さを追加することです。

if third-dimension weighting parameters are:  vec2d( a, b ),
then:  vec3d( x, y, z )  -->  vec2d( x + a*z, y + b*z )

の正確な選択は( a, b )あなた次第ですが、 から始めることをお勧めします( 0.5, 0.5 )aいずれにせよ、またはの絶対値bが より大きいことは意味がありません1.0


2 次元から 3 次元に戻ることは、z座標によっては必然的にあいまいになります。

a given 2d point:  vec2d( x, y )
can correspond to any 3d point of the form:  vec3d( x - a*z, y - b*z, z )

ユーザーが( x, y )画面上の特定の場所をクリックすると、これは複数の異なるオブジェクト (異なるz深さ) の場所に対応する場合があります。このような目的のために、この方法でクリック可能なオブジェクトの境界ボックスを画面スペースに維持したい場合があります....

于 2012-05-17T21:45:13.923 に答える
0

オブジェクトごとにアイテムの高さを設定できます。「床の高さは0、キャラクターの高さは1」など。

これは入手できる最も単純なものです。より複雑な高さのマッピングについては、画面上の各アイテムの 3D モデルを用意するしかないと思います。

于 2012-05-17T21:37:11.117 に答える