好吧,所以我有一個敵人的類(與旋轉,位置,紋理等)。我在屏幕上產生了一些敵人,他們四處移動,但他們互相重疊。所以我試圖在同一個班級的兩個敵人之間進行碰撞檢查。但不管我嘗試什麼方法,它都不是很有效。我試過的最好的東西是:同一類別的兩個物體之間的碰撞
foreach (Enemy enemy1 in enemies)
{
enemy1Pos = new Vector2(enemy1.position.X, enemy1.position.Y)
foreach (Enemy enemy2 in enemies)
{
enemy2Pos = new Vector2(enemy2.position.X, enemy2.position.Y)
if (Vector2.Distance(enemy2Pos, enemy1Pos) < 200)
{
enemy1Pos += new Vector2((float)(enemy1.Speed * Math.Cos(enemy1.Rotation)), (float)(enemy1.Speed * Math.Sin(enemy1.Rotation)));
}
}
}
這不是確切的代碼,所以它可能會有一些錯誤。無論如何,當我實施這個解決方案時,敵人並不重疊,所以一切都很好。但是,他們總是移動到屏幕的右側。
我也查了植絨等,但我想知道,我怎麼能檢測到同一類的兩個對象之間的碰撞?
你到底在問什麼?您已經使用邊界球執行碰撞檢測。如果你想要別的東西,更多的信息是必要的。就我個人而言,每次敵人移動時我都會檢查碰撞(碰撞時將其移回)。這樣,總是負責碰撞的敵人被移動。 –