好的,所以我有一个敌人类(具有旋转、位置、纹理等)。我在屏幕上生成了几个敌人,它们四处移动,但它们彼此重叠。所以我尝试在两个同级别的敌人之间进行碰撞检查。但无论我尝试什么方法,它都不太奏效。我尝试过的最好的事情是:
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)));
}
}
}
这不是精确的代码,所以它可能有一些错误。无论如何,当我实施这个解决方案时,敌人并没有重叠,所以那部分一切都很好。但是,他们总是移动到屏幕的右侧。
我也查看了植绒等,但我想知道,如何检测同一类的 2 个对象之间的碰撞?