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