"自作ゲーム"カテゴリーの記事一覧
-
例のおっぱいマウスパッドに右腕を守られつつ、
熱い日々のなかFPSを作っておりますw
さてと、FPS視点と基本操作は完成しましたが、壁ズリの
バグをまだ修正していません。と言うより、熱くてやる気に
ならないと言うのが本音です・・・
前回は自キャラ座標から一点まで線分を伸ばして判定していました。
一本の場合自キャラがぶつかった座標に再設置すると、壁との距離
が近すぎ、ポリゴンの中にカメラが突っ込んでしまうと言うバグが起こ
ります。これを回避するには自キャラを囲む4つの点で同じことをする
のです。
一応これで判定は上手くいくはずですが、問題がまだあるんですよね。
凸がある壁でそれは起こります。特に角度が少ない壁であらがでるので、
さらに自キャラを中心に十字を描くように4つの点を追加します。つまり、
8つの点で同じことをすると言うことですね。処理はそれだけ重くなりますが
当たり判定は大事ですから、他で高速化を図ることにします。
まず、この一ヶ月で終わらせる気力が無いので、先にモデリングや音楽作成
を先に済ますのも手ですね。
おまけ
ボルトアクションエアガンを購入しました。Kar98kです。
なんと薬莢風カートリッジを実際にチャンバーに押し込み、ボルトアクション
するとカートリッジが排出されると言うロマンあふれる中華銃。今度写真
でも貼っておきますね。 -
さてさて、ラジアンとはコンピューターが扱う角度と言うわけですが、
実はDirectX SDKにヘルパー関数が既にありました。
D3DXToRadian();
これは角度からラジアンに変換する関数。
D3DXToDegree();
続いてこちらはラジアンから角度に変換する関数。
なんて便利なのでしょう。
もっと早く気づいていれば・・・
とにかく、FPS基本操作もまだなので、早いところ
完成させたいです。その次は壁ずりですね。 -
いままでHSPのプラグインE3Dでの回転運動は、ラジアンは使わず、
そのままの値で罷り通って来ました。一回点するとちょうど360になり
360を超えたら0に戻す、これで完了。C++もそうだと思っていました。
しかしこれは残念なことにHSP版E3D出の話だったらしく、実際には
角度をラジアンに変換しなければならないようなのです。
目みたいなのは度(°)を表します。角度の求め方は
二つの点が必要になります。つまりベクトルです。ベクトルから
は長さも求めることが出来ますが、同時に角度も求めることが
できます。
★角度を求める式★
// ------------------------------------------------------------
//軸は考えず回る座標x,yを使う。
//-------------------------------------------------------------
角度 = atan2(y,x) * 180.0f / M_PI;
ここで重要なのはatan2()にx,yの順ではなく逆と言うこと。
しかしこの角度を取得したからと言って、そのまま移動量
に加えてしまうと大変なことになってしまいます。