私はサイトに不慣れで、2D 環境での衝突の概念を理解するのに問題があるため、アカウントを作成することにしました。
私が持っているのは、トップダウンの観点から見た道路スプライトのセットです。プレイヤーが道路から外れるとゲームオーバーになるように、それらとの衝突のルールを設定しようとしています。
ここまでで、直線道路のルールを設定しました。これを以下に示します。
if ((*it)->getType() == ST_RoadStraight)
{
Road* road = (Road*)*it;
// Check to see if the road sprite is within 16 pixels of the bucket either way
int dx = road->getPosition().x - Pos.x;
if (dx < 0) dx = -dx;
if (dx > 200)
{
outOfBounds = true;
}
}
基本的に、プレイヤーが x 軸のどちらかの方向に一定の距離を移動すると、ゲームが終了すると言います。i を y 軸に変更できるので、上下または左右に移動する直線道路では問題ありませんが、曲線道路もあります。アセットの概要は次のとおりです。
ストレート: http://i.imgur.com/bNHYwZO.png
湾曲: http://i.imgur.com/ppPw7ED.png
基本的には、プレーヤーが道路を下ったり、許される場所を横切ったりできるようにする必要がありますが、道路から外れる端にぶつかった場合は、そう言う必要があります。これは直線道路では簡単ですが、プレーヤーが曲がった道路のどこにいるかによって、たとえば Y 軸の高さが 30 ピクセルの場合、道路のある部分では問題なく、別の部分では問題になる場合があります。
基本的に、これをゲームで正確に表現できるような方程式を探しています。
どんな助けでも大歓迎です。