回転した長方形のJava衝突検出?
-
29-10-2019 - |
質問
私は最初のJavaゲームを書いています。
私はWSADと一緒に歩き回ることができる長方形を作りました、そして、彼は常にマウスが指している場所に直面しています。また、クリックすると、彼はあなたのマウスが指している弾丸を撃ちます(そして、弾丸がその方向に向かうように回転します)。私はまた、あなたを追いかけている敵を作りました、そして、彼らはあなたのキャラクターに向かって直面するために回転します。私が抱えている問題は、私が書いた衝突検出は、回転する前にオブジェクト(キャラクター、敵、弾丸)の衝突(.intersects()を使用)のみを検出することです。これは、描かれたときに体の一部が重複することを意味します。
私は周りを見回してきましたが、自分の状況に理解したり、適用できる解決策を見つけていません。私はこれまでのところ、各オブジェクトのグラフィック2Dグリッドを回転させてきたので、実際には回転しておらず、ただ引き出されています。実際に彼らの形を回転させてから.intersects()のようなものを使用する方法はありますか?
どんな助けや提案も感謝しています。
x軸を移動することで衝突するかどうかを確認するために使用するものは次のとおりです。
public boolean detectCollisionX(int id, double xMove, double rectXco, double rectYco, int width, int height)
{
boolean valid=true;
//create the shape of the object that is moving.
Rectangle enemyRectangleX=new Rectangle((int)(rectXco+xMove)-enemySpacing,(int)rectYco-enemySpacing,width+enemySpacing*2,height+enemySpacing*2);
if (rectXco+xMove<0 || rectXco+xMove>(areaWidth-width))
{
valid=false;
}
if(enemyNumber>0)
{
for (int x=0; x<=enemyNumber; x++)
{
if (x!=id)
{
//enemies and other collidable objects will be stored in collisionObjects[x] as rectangles.
if (enemyRectangleX.intersects(collisionObjects[x])==true)
{
valid=false;
}
}
}
}
return valid;
}
正しい解決策はありません
所属していません StackOverflow