3Dゲームは作るのが難しい、とっつきにくい、ってよくいわれますが、そのひとつの要因として
「2Dゲームに比べて、情報量が圧倒的に多い」ってことがあると思う今日この頃。
単なる四角形のあたり判定で済んだあのころが懐かしい・・・・。
そういうわけで、今日は「坂道とのあたり判定」をレッツシンキング。
坂道テクは、スーパーファミコンくらいのころから、頻繁に使われるようになったと思います(マリオとか)。
スーファミ時代から使われているテクを、高速なCPUを持つパソコンで実現できないはずがない!!ということで(もちろん、頭が働けばの話だけど・・・)。
実際、パソコンのゲームでそういうのは見たことがないですしね。そういうわけで、イメージから入ってみます。 ![]() えーと、青と赤、点線で囲まれたふたつの線分がありますね。直線ではなく線分として考えてください。理由は後ほど。 さて、このふたつの明らかに交わっていますね。それでは、ちょっと数学っぽくいってみます。
y=a1x+b1,y=a2x+b1であらわされる直線が二つある。 中学生のころによくみたような問題ですね。では、これを解いてみてください。 ・・・解けましたか?一応、僕が解いたものを挙げてみます。
y=a1x+b1・・・(1)
y=a2x+b2・・・(2)
この二直線が交わるとすると
(3)に(4)に代入する
a1(b2-b1)/(a1-a2)+b1=a2(b2-b1)/(a1-a2)+b2
この式が成り立てば、二直線は交わる(終わり)
さて、直線の交わりさえ検出できればあとは簡単ですね。上の図の「点線」同士が重なっていれば、二線分は交わったことになりますよね。 つまり、直線の交わりさえ検出できれば、後はその線分の範囲のあたり判定となります。矩形同士、円同士、矩形と円・・・など 好きなように出来ます。 ここまで来れば、坂道とのあたり判定は簡単(?)なはずです。ひとまず「概念」として全部見てきたので、 多少問題はあると思いますが・・・。ちなみに、坂道の角度を45度に制限とかそういう条件を加えてやれば、 もっと簡単に判定できると思います。恐らくスーファミの坂道判定などは、そのような「だまし」テクニックの 方が多いんじゃないのかな?。 というわけで、次はいろいろあたり判定を見ていきたいと思います。
|