2012-04-21 4 views
0

XNA에서 같은 유형의 적의 충돌을 감지해야합니다.
충돌이 감지되면, 나는 적들이 돌아 서서 다른 방향으로 걸어 가기를 원했습니다.적의 충돌 감지

모든 인스턴스를 목록에 저장하는 경우 다른 (그러나 같은) 유형의 적들이 충돌하는 경우 어떻게 감지 할 수 있습니까?

이것은 C# XNA에 있습니다.

EDIT : 나는 "적"이라고 불리는 클래스에 적을 가지고 있으며, 내 게임의 모든 적들은이 클래스에서 생성됩니다. 적들이 충돌했는지 확인할 수 있어야합니다.

편집 2 :

// Fields.   
    private List<Enemy> enemies = new List<Enemy>(); 

    // Add our enemies when we need to. 
    enemies.Add(new Enemy(this, position, spriteSet)); 

    // Here is it's update method. 
    private void UpdateEnemies(GameTime gameTime) 
    { 
     foreach (Enemy enemy in enemies) 
     { 
      enemy.Update(gameTime); 

      // This code works because it's comparing the player. 
      if (enemy.BoundingRectangle.Intersects(Player.BoundingRectangle)) 
      { 
       OnPlayerKilled(enemy); 
      } 
      // This code is always ture because enemy is enemy I can't figure out how to solve this. 
          if (enemy.BoundingRectangle.Intersects(enemy.BoundingRectangle)) 
      { 
       // Make enemies turn... This if statement is the problem. 
      } 
     } 
+0

으로 자신의 위치가 동일하며 자신의 typs 인 경우 각이 적 검사를 위해. – Jasper

+1

그리고 저는 맹세합니다. 그러나 우리는 당신에게 더 많은 도움을 줄 수 없습니다. 우리가 당신의 어플리케이션에 대해 더 자세히 설명해 줄 수는 없습니다. – Jasper

답변

2

두 원수가 충돌 한 경우, 당신은 그들 각각 점유 사각형을 찾을 필요가 확인하려면 : 여기

은 코드 샘플입니다. 그런 다음 Rectangle.Intersects(Rectangle)을 사용하여 중복되어 있는지 확인할 수 있습니다.

Re : 편집 :

모든 적들은 항상 자신과의 충돌을 확인하고 있습니다. 아니 당신이 원하는 : (|)이 같은

뭔가 당신이 원하는 무엇인가 :

foreach (Enemy enemy1 in enemies) 
{ 
    foreach (Enemy enemy2 in enemies) 
    { 
     if (enemy1 != enemy2 && enemy1.BoundingRectangle.Intersects(enemy2.BoundingRectangle)) 
     { 
      // enemy1 is colliding! 
     } 
    } 
} 
+0

모든 적들은 그들이 충돌하고 있다고 생각합니다. 나는이 질문을하기 전에 시도한 것입니다. – user1172635

+0

인터 섹트 방법을 사용하여 테스트하기 전에 적 개체를 구별하는 방법을 알아야합니다. – user1172635

+0

그런 다음 두 개의 적들이 같은 유형인지 확인하십시오. 그게 네가 준 정보로 내가 말할 수있는 전부 야. –