ニートが頑張るブログ

ニートが現実逃避するために創作活動など色々とカオスに頑張ってみる
ニートが頑張るブログ TOP  >  自作ゲーム開発 >  ピンボール?

ピンボール?

なんかまた、小規模の糞ミニゲームでも作ろうとしています。



今こんな感じです。 基礎だけ。
ボール同士の衝突がメチャクチャだけど、
最終的にボールは1個だけにするかもしれませんので。



今までの自分の3D系のフラッシュは
Y軸回転とX軸回転だったけど
こいつはY軸は固定して、Z軸を回転して傾けるようにしてます。


そんでもって、地形の傾きによってボールが転がるようになってますが、
ここで傾いているのはあくまで
カメラアングルと重力加速度のベクトルだけであって、
地形の傾きは見せかけってのがミソです。
地形データはまったく動かさなくていいのです。

それでも、地形をクイッと下げるとボールが落ちたり
急に持ち上げるとボールが飛んでいったりします。
何故でせう。




3Dボール
まず、自分の作ってる3D系のゲームでは
X軸とZ軸の座標を入れると一意に地形の高さが出るようになっています。

Y軸方向に出っ張っているだけの単純なブロック形状になっているので
すげーシンプルに計算できます。凸


3Dボール
ボールのX座標とZ座標が分かれば、その下の地面の高さが分かります。
これを利用して地面との衝突を計算しています。


ではここで、地形自体が傾いたらどうなるか?
3Dボール
こうなると自分はお手上げです。
この図で、ボールが落ちるべき地面の高度を計算するのも難しいし、
そもそも地形の形状のデータをを回転するのが難しいです。
さらに、地形の高度も、場所によってはX座標とZ座標が分かっても
一意に決まらなくなってきます。


ではどうしたか。

3Dボール
まず、重力加速度のベクトルを、傾けた方向の逆に傾けます。
地形を傾けるのではなくて、落ちていく方向を傾けるのです。

本来、これだけでそれっぽくなります。
重力のベクトルが、Y軸からズレた分だけ、
X軸とZ軸方向に転がる加速度になるので
これだけで、傾けることでボールが転がるゲームは作れます。

でも、それだけでは嘘っぽいのです。
地面をクイッと下げるとボールが落ちたり、
急に持ち上げることでボールを跳ね上げたりすることは、
これだけでは出来ません。



3Dボール
そこで、ボールの座標自体を、傾けた方向の逆に、
原点中心に回転します。

3Dボール
その上で、全体の視点を傾けたとおりに回転します。
これを同時に行うことで、
空中にあるボールは位置を維持したままで、
地形だけが傾けられたように見えるのです。


この最後の図は、見た目的には3枚目の図と同じになっていますが、
内部での地形衝突の計算は、今まで通り超シンプルなままなのです。




こんな感じでこの糞ゲは出来ています。

関連記事
[ 2010/02/04 07:07 ] 自作ゲーム開発 | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

月別カレンダー
10 ≪│2017/11│≫ 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -