2012-07-23 3 views
4

나는 최근에 내가 (물론 도움을 얻어서) 알아낼 수있는 총알을 발사하는 것에 관한 질문을 게시했다. 이제 새로운 문제가 생겨서 총알과 내 적의 충돌 감지를 파악할 수 없습니다. 한 번에 모든 코드를 게시 할 필요가 없으므로 여기에 귀하의 요청에 게시 할 코드 목록이 나와 있습니다.Space Invaders와 같은 게임에서 총알/적 사각형 충돌 감지를 수행하려면 어떻게해야합니까?

  • cButton (이 코드는 '재생'버튼이 아닙니다. 필수).
  • 총알
  • GAME1

P.S. 이건 내 두번째 게시물이다.) 참고 : 플레이어는 단지 좌우로 움직이며, 원수는 해협 선에서 위로부터 아래로 이동한다 (도움이된다면)

답변

0

나는 총알이 현재 우주선이 차지하고있는 블록에 진입했는지 확인해야합니다. 그렇다면 우주선을 파괴하고 총알을 제거하십시오. 관련 코드를 게시하면 도움이 될 것입니다. :)

+0

숀 이봐, 내가 자습서를 다음과 된 원수 같은

Rectangle bulletRect = new Rectangle(bulletPosition.X, bulletPosition.Y, bulletText.Width, bulletText.Height); 

을 포럼에서이 코드를 각각의 클래스에 넣으라고했습니다. public Rectangle bulletRectangle() { return new Rectangle ((int) position.X, (int) position.Y , (int) texture.Width, (int) texture.Height); } 그런 다음 중첩 된 for 루프 (삭제 한)를 사용하지만 작동하지 않습니다. 내 코드 조각을 들여 쓰기위한 태그를 알 수 있습니까? –

+0

나는 당신이 의견에 있다고 생각하지 않는다. :) 중첩 된 for 루프는 충돌을 검사했을 수 있습니다. – Shawn

+0

예치 나는 그들이 그것을 언급했다고 생각하지만, 나는 그것이 다음과 비슷한 것이라고 생각한다. if (bullet.bulletRectangle.Intersects (Enemy.enemyRectangle())) 나는 계속 오류를 얻었고, 그것이 무엇을 말했는지 기억하지 못한다 : ( –

2

다음은 이전에 사용한 적이있는 아주 간단한 방법입니다. 총알 주위에 사각형을 설정 : 다음

Rectangle enemyRect = new Rectangle(enemyPosition.X, enemyPosition.Y, enemyText.Width, enemyText.Height); 

충돌을 테스트 할 때 사용할 수 있습니다 :

if(bulletRect.Intersects(enemyRect)) 
{ 
    //We have a collision 
} 
+0

질문에 대한 사과드립니다. 저는 프로그래밍에 익숙하지 않지만, 클래스 글 머리 기호 메서드에 Rectangle 문을 넣으시겠습니까? 그렇다면 정확하게 if 문을 넣어야 할 곳은 어디입니까? –

+0

if 문은 게임 업데이트 이벤트에 들어가기 때문에 끊임없이 충돌을 확인하려고합니다. 직사각형에 관해서는, 당신은 총알 클래스와 적 클래스를위한 속성을 보유 할 속성을 원할 것입니다. 또는 일반적으로 공유되는 속성 중에서 직사각형을 포함하는 BaseClass를 가질 수 있습니다. 그런 다음 적/플레이어/글 머리 기호 개체에서 상속받을 수 있습니다. 'Player : GameObject'. – dtsg

+0

고마워, 나는 그것을 줄 것이다 :) –

관련 문제