[過去ログ]
Windowsゲームプログラミング 質問スレ (973レス)
Windowsゲームプログラミング 質問スレ http://mevius.5ch.net/test/read.cgi/gamedev/1225974525/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
19: 名前は開発中のものです。 [sage] 2008/11/12(水) 06:00:58 ID:xaKS9jsU >>15 > ShellVX*=(-1); 同時に2つのブロックに接触すると元に戻りそうな嫌なコードだ http://mevius.5ch.net/test/read.cgi/gamedev/1225974525/19
20: 名前は開発中のものです。 [] 2008/11/12(水) 10:40:33 ID:kFb9KO8q >>14 >>19でも指摘されてるけど、2つのブロックに同時に触れた場合は 移動方向が元に戻るから貫通するよ。 だから「ShellVY*=(-1);」の後に「break;」を入れれば とりあえず貫通するバグは無くなる。 でもそもそも判定ロジックが間違ってるので、全部書き直さなきゃダメ。 当たった部分が縦の面か横の面かの判定をしなきゃまともに跳ね返らない。 前フレームの玉の位置と現在の位置を線で結んで、各ブロックの 4つの側面のどこと交差しているかを判定する必要がある。 横面と交差してるならYだけ反転、縦面と交差してるならXだけ 反転させる。 玉のスピードが速いと、複数のブロックと同時交差する場合もある。 その時は一番玉に近いブロックとの判定だけに絞り、玉の位置も そのブロックに接触する直前のポジションまで移動させる。 http://mevius.5ch.net/test/read.cgi/gamedev/1225974525/20
33: 名前は開発中のものです。 [sage] 2008/11/20(木) 02:14:48 ID:njtRhxXk なんかわからんけど >>14 と >>19 を見た感じ これでいんじゃね? CurShellVX = ShellVX; CurShellVY = ShellVY; for(int i=0;i<BlockX;i++){ for(int s=0;s<BlockY;s++){ if(BlockFlag[i][s]){ if(ShellX>=LeftEdge+35*i-ShellR && ShellX<=LeftEdge+35*(i+1)+ShellR){ //X範囲の判定 if(ShellY>=UpEdge+20*s-ShellR && ShellY<=UpEdge+20*(s+1)+ShellR){ //Y範囲の判定 BlockFlag[i][s]=0; ShellVX = -CurShellVX; ShellVY = -CurShellVY; } } } } } http://mevius.5ch.net/test/read.cgi/gamedev/1225974525/33
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.026s