当たり判定できたー
以前のコードは多分欠陥があるので、後日覚えていて気が向いたら載せようと思う。誰も見ないかな・・・。
デモプログラムを作って当たり判定の威力を試していたんだけども、なぜか速度のY成分が負のときだけすり抜けが起こる。
なぜだー!と思って昨日はやめて、今日学校で紙の上でバグ修正をしたんだけども、残念見当違い。
こうして今まで悩んだ結果、原因は昨日載せたコード
xtMin = (B.Location.X - A.Location.X - A.Size.Width) / deltaVelocity.X; // X軸についてのtの上限 xtMax = (B.Location.X - A.Location.X + B.Size.Width) / deltaVelocity.X; // X軸についてのtの下限 // 分母の符号が負だった場合の不等号反転への対処 if (deltaVelocity.X < 0) { float swap = xtMin; xtMin = xtMax; xtMax = swap; } ytMin = (B.Location.Y - A.Location.Y - A.Size.Height) / deltaVelocity.Y; // Y軸についてのtの上限 ytMax = (B.Location.Y - A.Location.Y + B.Size.Height) / deltaVelocity.Y; // Y軸についてのtの下限 // 分母の符号が負だった場合の不等号反転への対処 if (deltaVelocity.Y < 0) { float swap = ytMin; ytMin = ytMax; ytMax = ytMin; // ←ここだよ!!!!!!!!!!!!!!!! }
おいおいおいおいおいこんなくだらないミスでwwwww
あばばばばばばばwww
とりあえずこいつを直したら完璧だったので良かった。あー疲れた。無駄にね。