たびたび、質問させていただきすみません。
以前に「アーマード・コア的な物を作る前に3Dの初歩的なゲームを作ってみては?」
という解答を受けて、3Dの当たり判定を利用したゲームを作っています。
本格3Dじゃなくてすみません;
DXLIBのサイト、サンプルを参考にさせてもらっています。
http://homepage2.nifty.com/natupaji/DxL ... llObj.html
ステージの衝突、当たり判定を付けたいのですが上手くいきません。
キャラ処理のまとめが「Playerファイル」
キャラの移動処理は「Player_Moveファイル」
設計ミスでステージの当たり判定のコードが「Stage_Areaファイル」にあります。
おそらくはメインループがある「Testファイル」も何かもんだいがありそうですが、
どう直したらいいか、教えてください!
3Dでステージの衝突をしたい。
3Dでステージの衝突をしたい。
- 添付ファイル
-
- GameProg.zip
- (28.2 MiB) ダウンロード数: 99 回
Re: 3Dでステージの衝突をしたい。
こんにちは。ookamiです。
Stage_Area.cppのProcess関数は、
http://homepage2.nifty.com/natupaji/DxL ... llObj.html
↑の、Player_Move関数と同じですか?
改造しているところがあれば教えてください。
あと、上手く行かないというのは具体的にどんな感じですか?
Stage_Area.cppのProcess関数は、
http://homepage2.nifty.com/natupaji/DxL ... llObj.html
↑の、Player_Move関数と同じですか?
改造しているところがあれば教えてください。
あと、上手く行かないというのは具体的にどんな感じですか?
Re: 3Dでステージの衝突をしたい。
少々改良しました。
当たり判定に使用するモデルをロードして、
PLAYER_MOVEクラス内で判定を済ませます。
関数はC_PLAYER_MOVE::CollProcess
壁だけの判定なので床分の判定コードは省いています。
壁判定となるポリゴンの向きもY軸に垂直ではなくZ軸に垂直に変更しています。
当たり判定に使用するモデルをロードして、
PLAYER_MOVEクラス内で判定を済ませます。
関数はC_PLAYER_MOVE::CollProcess
壁だけの判定なので床分の判定コードは省いています。
壁判定となるポリゴンの向きもY軸に垂直ではなくZ軸に垂直に変更しています。
- 添付ファイル
-
- GameProg.zip
- (28.2 MiB) ダウンロード数: 93 回
Re: 3Dでステージの衝突をしたい。
起動すると、はじめからよからぬ方向へ飛んで行っているのを確認しました。
関数内にDrawFormatStringで表示するようにしてあります。
関数内にDrawFormatStringで表示するようにしてあります。
Re: 3Dでステージの衝突をしたい。
私の力不足で申し訳ないのですが、
私なら、もう一度動く状態まで戻して(もしかするとサンプルをコピーしてきたところまで戻して)、
そこからちょっとずつ改造しては実行して確認するとかになります
どこか、符号を間違えているとか、YをZに直し忘れてるとか、あるんだと思いますが、ちょっと分かりません。ごめんなさい。
私なら、もう一度動く状態まで戻して(もしかするとサンプルをコピーしてきたところまで戻して)、
そこからちょっとずつ改造しては実行して確認するとかになります
どこか、符号を間違えているとか、YをZに直し忘れてるとか、あるんだと思いますが、ちょっと分かりません。ごめんなさい。
Re: 3Dでステージの衝突をしたい。
やっぱり分かりませんか・・・
自分のコードも読みにくいし、そのままコピペというわけにもいかないし・・・。
とりあえず移動できたところから順番に少しずつやってみます。
自分のコードも読みにくいし、そのままコピペというわけにもいかないし・・・。
とりあえず移動できたところから順番に少しずつやってみます。
Re: 3Dでステージの衝突をしたい。
とりあえず何がやりたいかを書いて(?)置きます。
http://daidai.moo.jp/aos2/aos2.html
わが部活において、尊敬するサークルの一つ。橙汁さんの「AOS2」です。
自分も作ってみたいと思って着手したものの、
この有様です・・・。
それと、一応当たり判定を作る前のプログラムも載せておきます。
XY座標でのゲームですが、簡単な3Dのカーブも実装しています。
http://daidai.moo.jp/aos2/aos2.html
わが部活において、尊敬するサークルの一つ。橙汁さんの「AOS2」です。
自分も作ってみたいと思って着手したものの、
この有様です・・・。
それと、一応当たり判定を作る前のプログラムも載せておきます。
XY座標でのゲームですが、簡単な3Dのカーブも実装しています。
- 添付ファイル
-
- GameProg.zip
- (28.2 MiB) ダウンロード数: 89 回
Re: 3Dでステージの衝突をしたい。
たびたびの更新です。
どうやら移動成分からの動作フラグを立てる時点でミスってたようです。(なぜだ・・・
とりあえず本家の
// x軸かy軸方向に 0.01f 以上移動した場合は「移動した」フラグを1にする
if( fabs( MoveVector.x ) > 0.01f || fabs( MoveVector.z ) > 0.01f )
{
MoveFlag = 1 ;
}
else
{
MoveFlag = 0 ;
}
の部分を自分のコードで使用していた変数Stateで代用しました。
Stateが0以外で移動しているということになっています。
どうやら移動成分からの動作フラグを立てる時点でミスってたようです。(なぜだ・・・
とりあえず本家の
// x軸かy軸方向に 0.01f 以上移動した場合は「移動した」フラグを1にする
if( fabs( MoveVector.x ) > 0.01f || fabs( MoveVector.z ) > 0.01f )
{
MoveFlag = 1 ;
}
else
{
MoveFlag = 0 ;
}
の部分を自分のコードで使用していた変数Stateで代用しました。
Stateが0以外で移動しているということになっています。
- 添付ファイル
-
- GameProg.zip
- (28.2 MiB) ダウンロード数: 91 回
Re: 3Dでステージの衝突をしたい。
一応当たり判定作成までは解決しました。
その分自分が作ったコードが少しごちゃごちゃしましたが;
で、ステージ当たり判定作成に伴い、
新たな問題が出てきたので別トピックで質問します。
DXLIB本家よりサンプルコード改良点
・当たり判定となる壁の法線をZ軸垂直に変更
・自機が円形なのでカプセルでの判定ではなく、球体での判定に
その分自分が作ったコードが少しごちゃごちゃしましたが;
で、ステージ当たり判定作成に伴い、
新たな問題が出てきたので別トピックで質問します。
DXLIB本家よりサンプルコード改良点
・当たり判定となる壁の法線をZ軸垂直に変更
・自機が円形なのでカプセルでの判定ではなく、球体での判定に
- 添付ファイル
-
- GameProg.zip
- (28.19 MiB) ダウンロード数: 111 回