3Dでステージの衝突をしたい。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
G.G.
記事: 63
登録日時: 10年前
連絡を取る:

3Dでステージの衝突をしたい。

#1

投稿記事 by G.G. » 8年前

たびたび、質問させていただきすみません。

以前に「アーマード・コア的な物を作る前に3Dの初歩的なゲームを作ってみては?」
という解答を受けて、3Dの当たり判定を利用したゲームを作っています。
本格3Dじゃなくてすみません;

DXLIBのサイト、サンプルを参考にさせてもらっています。
http://homepage2.nifty.com/natupaji/DxL ... llObj.html

ステージの衝突、当たり判定を付けたいのですが上手くいきません。

キャラ処理のまとめが「Playerファイル」
キャラの移動処理は「Player_Moveファイル」
設計ミスでステージの当たり判定のコードが「Stage_Areaファイル」にあります。

おそらくはメインループがある「Testファイル」も何かもんだいがありそうですが、
どう直したらいいか、教えてください!
添付ファイル
GameProg.zip
(28.2 MiB) ダウンロード数: 22 回

アバター
ookami
記事: 214
登録日時: 10年前
住所: 東京都

Re: 3Dでステージの衝突をしたい。

#2

投稿記事 by ookami » 8年前

こんにちは。ookamiです。

Stage_Area.cppのProcess関数は、
http://homepage2.nifty.com/natupaji/DxL ... llObj.html
↑の、Player_Move関数と同じですか?
改造しているところがあれば教えてください。

あと、上手く行かないというのは具体的にどんな感じですか?

アバター
G.G.
記事: 63
登録日時: 10年前
連絡を取る:

Re: 3Dでステージの衝突をしたい。

#3

投稿記事 by G.G. » 8年前

少々改良しました。
当たり判定に使用するモデルをロードして、
PLAYER_MOVEクラス内で判定を済ませます。

関数はC_PLAYER_MOVE::CollProcess
壁だけの判定なので床分の判定コードは省いています。
壁判定となるポリゴンの向きもY軸に垂直ではなくZ軸に垂直に変更しています。
添付ファイル
GameProg.zip
(28.2 MiB) ダウンロード数: 19 回

アバター
G.G.
記事: 63
登録日時: 10年前
連絡を取る:

Re: 3Dでステージの衝突をしたい。

#4

投稿記事 by G.G. » 8年前

起動すると、はじめからよからぬ方向へ飛んで行っているのを確認しました。
関数内にDrawFormatStringで表示するようにしてあります。

アバター
ookami
記事: 214
登録日時: 10年前
住所: 東京都

Re: 3Dでステージの衝突をしたい。

#5

投稿記事 by ookami » 8年前

私の力不足で申し訳ないのですが、
私なら、もう一度動く状態まで戻して(もしかするとサンプルをコピーしてきたところまで戻して)、
そこからちょっとずつ改造しては実行して確認するとかになります

どこか、符号を間違えているとか、YをZに直し忘れてるとか、あるんだと思いますが、ちょっと分かりません。ごめんなさい。

アバター
G.G.
記事: 63
登録日時: 10年前
連絡を取る:

Re: 3Dでステージの衝突をしたい。

#6

投稿記事 by G.G. » 8年前

やっぱり分かりませんか・・・
自分のコードも読みにくいし、そのままコピペというわけにもいかないし・・・。

とりあえず移動できたところから順番に少しずつやってみます。

アバター
G.G.
記事: 63
登録日時: 10年前
連絡を取る:

Re: 3Dでステージの衝突をしたい。

#7

投稿記事 by G.G. » 8年前

とりあえず何がやりたいかを書いて(?)置きます。

http://daidai.moo.jp/aos2/aos2.html
わが部活において、尊敬するサークルの一つ。橙汁さんの「AOS2」です。

自分も作ってみたいと思って着手したものの、
この有様です・・・。

それと、一応当たり判定を作る前のプログラムも載せておきます。
XY座標でのゲームですが、簡単な3Dのカーブも実装しています。
添付ファイル
GameProg.zip
(28.2 MiB) ダウンロード数: 14 回

アバター
G.G.
記事: 63
登録日時: 10年前
連絡を取る:

Re: 3Dでステージの衝突をしたい。

#8

投稿記事 by G.G. » 8年前

たびたびの更新です。
どうやら移動成分からの動作フラグを立てる時点でミスってたようです。(なぜだ・・・

とりあえず本家の

// 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) ダウンロード数: 14 回

アバター
G.G.
記事: 63
登録日時: 10年前
連絡を取る:

Re: 3Dでステージの衝突をしたい。

#9

投稿記事 by G.G. » 8年前

一応当たり判定作成までは解決しました。
その分自分が作ったコードが少しごちゃごちゃしましたが;

で、ステージ当たり判定作成に伴い、
新たな問題が出てきたので別トピックで質問します。


DXLIB本家よりサンプルコード改良点
・当たり判定となる壁の法線をZ軸垂直に変更
・自機が円形なのでカプセルでの判定ではなく、球体での判定に
添付ファイル
GameProg.zip
(28.19 MiB) ダウンロード数: 38 回

閉鎖

“C言語何でも質問掲示板” へ戻る