1

私はHTML5/Canvas / Javascript/jQueryでシンプルなプラットフォームゲームに取り組んでいます。ここで見ることができます。

私は2つの長方形の交差をチェックする方法を知っています(それに関してここにいくつかの質問があります)、そして私のゲームは2つの長方形の交差をチェックして処理しますが、非常に特定の状況下でのみ、そしてキャラクターが私のブロックより広くはありません。

私の質問:交差がどちらの方向から発生するかがわかる方法で、2つの長方形の交差を計算するにはどうすればよいですか?私が考えることができる唯一の方法には、20以上のifステートメントが含まれます(これは適切な方法ではありませんか?)。

スプライト座標(x + dx、y + dy)が長方形と交差するかどうかを確認するために前方を「覗き見」し、交差する場合は、スプライトの新しい座標を長方形の端だけに設定するため、交差の方向を知る必要があります。次の目盛りの長方形。

4

1 に答える 1

2

長方形の相対的な位置を取得するには、スプライトの長方形の中心を使用して、ブロックに対する位置を取得します。
次の関数は、ポイントの位置を別のポイントに取得することです。それはあなたを助けるはずです。スプライトの中心とブロックの中心を使用して、ブロックに対するスプライトの位置を確認するように適応する必要があります (または、スプライトの中心の位置をブロックの左上隅と右下隅に確認します)。

function positionOf(point, relativeTo) {
    var dx = point.x - relativeTo.x; // diff on x axis
    var dy = point.y - relativeTo.y; // diff on y axis

    if(dx >= dy) { // point is on top right half from relativeTo
             return dx >= - dy ? 'EAST' : 'NORTH';
    }
    else { // point is on bottom left half from relativeTo
             return dx >= - dy ? 'SOUTH' : 'WEST';
    }
}

編集:x軸とy軸の原点がビューポートの左上隅にあると考えると、これはすべて良いことです

于 2011-03-31T09:20:26.310 に答える