好吧,所以我有一个敌人的类(与旋转,位置,纹理等)。我在屏幕上产生了一些敌人,他们四处移动,但他们互相重叠。所以我试图在同一个班级的两个敌人之间进行碰撞检查。但不管我尝试什么方法,它都不是很有效。我试过的最好的东西是:同一类别的两个物体之间的碰撞
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)));
}
}
}
这不是确切的代码,所以它可能会有一些错误。无论如何,当我实施这个解决方案时,敌人并不重叠,所以一切都很好。但是,他们总是移动到屏幕的右侧。
我也查了植绒等,但我想知道,我怎么能检测到同一类的两个对象之间的碰撞?
你到底在问什么?您已经使用边界球执行碰撞检测。如果你想要别的东西,更多的信息是必要的。就我个人而言,每次敌人移动时我都会检查碰撞(碰撞时将其移回)。这样,总是负责碰撞的敌人被移动。 –