« HSP3で3Dゲーム作る(その2) | トップページ | 映画「ペイチェック 失われた記憶」 »

HSP3で3Dゲーム作る(その3)

やっぱり会社が始まると、ペースが落ちますな。んで今回も濃いわ。(苦笑)
■3Dゲームを作るにあたって、自分向けのTips
  • 前回の時点では障害物のブロックをすり抜けていたので、ブロックとの衝突判定を考えてみる。
    衝突判定は「コリジョン」で確認をすりゃいいのでは?と思ったが、参考書には「
    マップを使っての衝突判定」になっていた。
    多分、コリジョンによる判定は対象が多いと処理が重くなるのではないだろうか?
  • (ブロックだけでも前回のプログラムでは256個配置している。)
  • 参考書では弾の当たり判定に「コリジョンによる衝突判定」を使っていたのでオブジェクトの数が少ないモノに使うのであろう。
【雲の上から見た地平は[x-z]平面。】

[x-z]平面の中心0,0は、ブロック同士の隙間になるので、このままでは身動きがとれない。初期値はなにかしら入れる必要がある。
■「各辺'3'の値と持つブロック」を32個縦横に並べられるマスをゲーム上のフィールド範囲としてみた。

■ブロック単位のx,z軸の座標をそれぞれxB,zBとすると、xB,zBは0~31の値を持つ。
また升目は全部で32x32=1024個。
さらに1辺の長さは3x32=96。
そのうち0が真ん中なので、±48の値がx,zの範囲。

■1024個の各マスは1つ1つ番号(0~1023)で管理する。

■任意の座標(x,z)の任意ブロック番号は_
  xB=(x+48)/3・・・(1)
  zB=(z+48)/3・・・(2)
  任意ブロック番号=zB x 32 + xB・・・(3)

(1)~(3)で導き出すことができる。
■「3x3のブロック」に対して「自分(=カメラ)は長さ'1'(半径'0.5')」と考えてy軸を中心に360°回転できるとした。

■すると、1つのブロック枡で自分(=カメラの中心)が動ける範囲は左図グレー部分になる。
■カメラが任意の位置にあるとき、x,z方向への最大・最小値を考えると点A~Dになる。

■点A~Dの4点の座標を(1)~(3)の計算式に当てはめて各点を含むブロック番号を導き出し、そこにブロックが存在していれば衝突(=先に進めない)と判断することにした。
実際にプログラムを組んで実行させると、それなりの動きになったので“良し”とした。

|

« HSP3で3Dゲーム作る(その2) | トップページ | 映画「ペイチェック 失われた記憶」 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: HSP3で3Dゲーム作る(その3):

» HSP3で3Dゲーム作る(その4) [じむの(とりあえず)やってみたの巻]
前回で3Dゲームの基礎的なものは出来上がったので、実際のゲーム作りにとりかかる。 [続きを読む]

受信: 2006/01/22 18:51

« HSP3で3Dゲーム作る(その2) | トップページ | 映画「ペイチェック 失われた記憶」 »