ゲーム制作メモ

ゲーム制作メモ

ゲーム制作に関しての記事を適当に書いてます。
のんびりしてってね。
Note:https://note.com/wooroncha/n/n9222d8f25d16

Amebaでブログを始めよう!

参考にしたのはこちらの記事です。
http://tech.nitoyon.com/ja/blog/2008/06/18/as-3d-lessen3/

https://w3e.kanazawa-it.ac.jp/math/category/gyouretu/senkeidaisu/henkan-tex.cgi?target=/math/category/gyouretu/senkeidaisu/rotation_matrix.html

 

 

コモンイベントの実装後は以下のようになります。

 
マップエディター
ゲームで描画されるマップ
 
投資投影の図示
「AS3.0 で 3D プログラミングを1から勉強する (3) - 透視投影」より
【3次元座標とスクリーン座標の位置関係】
焦点とはプレイヤーの目の位置に当たる部分で、
スクリーンは実際にプレイヤーが見る平面です。
 
先ほどの記事の内容をお借りすると

点(x,y,z)をスクリーン上に投影した時の点(xs,ys)は、y-z図が上図に表されるように

ys:y=(zs-zf):(z-zf)

ys=y*(zs-zf)/(z-zf)
xについても同様に
xs=x*(zs-zf)/(z-zf)
計算式を簡単にする為に焦点zf=0、スクリーンの位置zs=1とすると
ys=y/z
xs=x/z
 
これで位置関係が表せました。
【画面上に描画する座標】
具体的に画面のどの座標に描画するか決めます。
ゲーム内座標と、画面に描画する座標を考えます。
画面に表示する最大の高さをheight、画面上の座標をys'として、焦点の角度をθと置いた時
ys':ys=(height/2):tanθ
だから
ys'=(ys*height)/(2*tanθ)
 
x-z平面についても同様に考えて、角度をΦと置いた時
xs':xs=(width/2):tanΦ
だから
xs'=(xs*width)/(2*tanΦ)
 
【回転時の座標】
今までは、正面を向いていた際の描画座標について考えました。
次はプレイヤーの視点を移動した際について考えます。
z軸方向をプレイヤーは正面としているとします。
2次元の回転行列の式より
x-z平面(Y軸周り)について視点をθ'回転させた時(左右を向いたりする時)、回転後の座標XとZは
X=xcosθ'-zsinθ'
Z=xsinθ'+zcosθ'
 
y-z平面(X軸周り)について視点をΦ'回転させた時(上下を向いたりする時)、回転後の座標YとZは
Y=ycosΦ'-zsinΦ'
Z=ysinΦ'+zcosΦ'