2016-04-04 6 views
0

私は、プレーヤー、弾丸、および敵の間で私のjavasciptゲームで衝突しています。以前は、弾丸は四角形でしたが、イメージがあります。画像は矩形のボックスにしっかり収まり、2Dコリジョンが機能することが期待されていました。ここに画像があります: Bulletなぜこの2Dコリジョンが自分の画像で十分に機能しないのですか?

弾丸はやや長方形です。私は私の衝突システムでは、このロジックを使用:

return rect1.x <= rect2.x+rect2.width 
    && rect2.x<=rect1.x+rect1.width 
    && rect1.y<=rect2.y+rect2.height//if all statements are true, they are  colliding 
    && rect2.y<=rect1.y+rect1.height; 

衝突がやや働く、しかし、弾丸が大幅にプレーヤーの下にあることと、まだ衝突を誘発し、それがなくて、上から大幅にプレーヤー内の第三の方法であることができ衝突を誘発する。それを修正するために何かできることはありますか?衝突システムはちょうど長方形で完璧に動作し、ここで十分に近いはずですが、十分ではありません。 JS Game

答えて

1

あなたの等号を削除し、衝突がないことを確認してください。しかし、「外」であることを確認してください。

if (rect1.x + rect1.width < rect2.x) //left outside 
    return false; 
if (rect1.x > rect2.x + rect2.width) //right outside 
    return false; 
if (rect1.y + rect1.height < rect2.y) //above/below outside 
    return false; 
if (rect1.y > rect2.y + rect2.height) //above/below outside 
    return false; 
return true; 

この例では、あなたのゲームのために異なる動作します(また、1つのラインにそれらをラップすることもできますが、私はこれは私が言いたいことを明確にし願っていますか)?

+0

あなたのコードを使ってみましたが、結果は同じでした。これは長方形で機能しますが、何らかの理由で画像と一緒に移動します。私は値で遊んでみました。 rect1y

+1

それから、あなたの問題は、衝突検出よりも画像の配置にあるように思えます。どのようにあなたの(見えない)矩形にあなたのイメージを埋め込みますか? – Jankapunkt

+0

あなたはそうです、配置問題でした。画像の左上隅はxとyにありましたが、衝突ではその座標が中心になるように作られていました。私は今これをしました:drawImage(img、x-width/2、y-height/2、width、height)。ありがとうございました –