0
私のゲームでは、プレーヤーは円のテクスチャであり、背の高い狭く回転する四角いテクスチャがたくさんあります。私はIntersector
クラスを衝突のために使用する方法を知っていますが、私が発見したものから回転を考慮しません。テクスチャからシェイプを作成し、それを境界として使用できる方法やクラスがありますか?libgdxを使って回転する四角形との衝突?
私のゲームでは、プレーヤーは円のテクスチャであり、背の高い狭く回転する四角いテクスチャがたくさんあります。私はIntersector
クラスを衝突のために使用する方法を知っていますが、私が発見したものから回転を考慮しません。テクスチャからシェイプを作成し、それを境界として使用できる方法やクラスがありますか?libgdxを使って回転する四角形との衝突?
これはクラスがあるかどうかわかりませんが、私は簡単なアイデアを思いつきました。
人々は太陽が地球の周りを何年も回転していると信じていました。彼らは地球から見たので。 回転する四角形が私たちの世界であり、実際に回転していないと仮定できます。両方の方法で我々はいつ昼夜を知る。
これらの写真を見ると、よりよく理解できます。
この場合は、衝突をチェックするのは難しいです。
そして、この場合簡単です。しかし実際には2つのケースが同じです。
だからあなたはあなたが、円と中心との間の角度を見つけることができ、正方形/長方形
にケースを変更長方形/正方形の点。
ここで、正方形/長方形のクラスのようになります。
public boolean check_collision(Player player)
{
Vector2 pvector=new Vector2(player.xcenter , player.ycenter);
Vector2 svector=new Vector2(this.xcenter , this.ycenter);
float radi=player.radius;
if(pvector.dst2(svector) <
(width + radi) * (width + radi) +
(height + radi) * (height + radi))// dont check if player is too far for collision
{
Vector2 rvector= pvector.sub(svector);// rvector from square center to player center
rvector.setangle(rvector.angle()+ this.rotation);//make sure rotations is CCW
pvector=rvector.add(svector); //new player vector to check collision
return new Rectangle(pvector.x-radi/2f ,pvector.y-radi/2f,radi,radi).overlaps(new Rectangle(svector.x-width/2f ,svector.y-height/2f,width,height));
//assume that player is also rectangle because we already checked worst case with if condition.
}
return false;
}
これは[数学](http://math.stackexchange.com/)のような感じです。 Googleもあなたの友人です。 – markspace
@markspaceそうですね。私はSprite/Textureから衝突境界を抽出する方法を必要としています。これはIntersectorのようなもので使用することができます。私はこの疑問から駄目を捜したが、何も見つけていない。 – Wyatt
これは最善の解決策ではありませんが、ポリゴンを作ることができます。ポリゴンは回転できます。 – eric