[過去ログ] Windowsゲームプログラミング 質問スレ (973レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
14(8): 2008/11/11(火)22:02 ID:v37PimrE(1/3) AAS
AA省
20(1): 2008/11/12(水)10:40 ID:kFb9KO8q(1) AAS
>>14
>>19でも指摘されてるけど、2つのブロックに同時に触れた場合は
移動方向が元に戻るから貫通するよ。
だから「ShellVY*=(-1);」の後に「break;」を入れれば
とりあえず貫通するバグは無くなる。
でもそもそも判定ロジックが間違ってるので、全部書き直さなきゃダメ。
当たった部分が縦の面か横の面かの判定をしなきゃまともに跳ね返らない。
前フレームの玉の位置と現在の位置を線で結んで、各ブロックの
4つの側面のどこと交差しているかを判定する必要がある。
横面と交差してるならYだけ反転、縦面と交差してるならXだけ
省4
21(1): 14 2008/11/12(水)15:58 ID:58FrgqUc(1) AAS
なるほど、理屈は理解できました
しかしどういうソースを書けばいいのかがまるで思いつかない……
いったいどういしたらいいのでしょうか?
23(1): 14 2008/11/14(金)05:07 ID:wWFUvlwz(1/4) AAS
>>22
ありがとうございます
しかし読んでみたはいいのですがそれをどう組み込んでいいかがやっぱり思いつきませんでした
なのでがんばって自己流で判定組んでみたら
「○○.exe の 0x0056e0b6 でハンドルされていない例外が発生しました: 0xC0000094: Integer division by zero」
とか出されてしまいました、一体これはどういうことなんでしょうか?
24: 14 2008/11/14(金)05:14 ID:wWFUvlwz(2/4) AAS
ソース
int ShellAX, ShellAY, ShellXT, ShellYT;
//xが次のエリアに到達するまでの時間
if(ShellVX==0){ //分母が0防止
ShellXT=0;
}else{
if(ShellVX>0){ //右に変化中
ShellXT=(35-(ShellBX%35))/ShellVX;
}else{ //左に変化中
ShellXT=(-1)*(ShellBX%35)/ShellVX;
省14
25(1): 14 2008/11/14(金)05:14 ID:wWFUvlwz(3/4) AAS
AA省
26(1): 14 2008/11/14(金)05:15 ID:wWFUvlwz(4/4) AAS
AA省
28: 14 2008/11/15(土)03:43 ID:NhltAbHO(1) AAS
前のほうでやってるのに忘れていました
とりあえず
ShellXT<ShellYT のところを
ShellXT<ShellYT && ShellXT!=0 にしてみたら動いたは動いたのですが
ボールがあらぬ挙動をします
当たっているのに当たった動きをしなかったり、突然わけのわからないところへ移動したり
原因がさっぱりです……
一応上記の判定は、画面を35*20のエリアに分けて、今いるエリアから別のエリアに移動したら、
そこにブロックが有るか無いか判定、という形で組んでみています
(今更ですが、ブロックを35*20でやっているので、ですね)
省2
33: 2008/11/20(木)02:14 ID:njtRhxXk(1) AAS
AA省
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.033s