2010-05-02 4 views
0

나는 XNA 튜토리얼을 따르고 있으며, 콜리 전 감지 (총알이 타겟과 충돌 할 때 감지)에 대한 다음 코드를 가지고있다. 기본적으로 전체 프로그램을 다시 작성하지 않고 화면에 점수를 표시하기 위해 점수 변수를 증가 시키려고합니다. 아무리 내가이 방법에 배치하면 0에서가 아니라 목표의 수를 증가 시작 보인다. 여기 내가 누락 된 간단한 것이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다. 감사.XNA 게임에서 점수 유지하기

private CollisionType CheckCollision(BoundingSphere sphere) 
{ 
    if (completeCityBox.Contains(sphere) != ContainmentType.Contains) 
     return CollisionType.Boundary; 

    for (int i = 0; i < targetList.Count; i++) 
    { 
     if (targetList[i].Contains(sphere) != ContainmentType.Disjoint) 
     { 
      targetList.RemoveAt(i); 
      i--; 
      AddTargets(); 
      return CollisionType.Target; 
     } 
    } 

    return CollisionType.None; 
} 
+0

점수 변수는 어디에 있습니까? 언제 초기화 되는가? 증분? – tzaman

+0

클래스 상단에서 초기화되지만이 메소드 내부에서이를 증가 시키려고합니다. int score = 0; (수업의 상단) 점수 + = 1; (이 방법을 어딘가에 추가하려고합니다.) 이것은 목표와의 충돌을 감지하는 데 사용되는 방법으로, 충돌이 감지 될 때마다 점수를 1 씩 증가시키고 싶습니다. 이것은 현재 두 번째 if 문 안의 점수와 함께 작동하지만 점수가 0에서 시작하지 않으면 완전히 무작위 인 대상 수 (예 : 1250)에서 시작됩니다. – Seven

답변

0

당신은/증가 다른 곳 점수 변수를 할당하지 않는 가정하고,이 초기화 중에 제로로 설정되어, 내가 생각할 수있는 유일한 다른 것은 어떻게 든 당신이 모든과 충돌을 유발하고 있다는 당신의 어떻게 든 설치 단계에서 가능합니까? 적중 횟수를 확인하기 위해 점수 증가 라인에 중단 점을 설정해 보셨습니까?

2

OnCollision()이라는 별도의 메서드를 사용하여 점수를 업데이트하면 (나중에 원하는 경우 물리를 수행 할 수 있음) Update 메서드에서 충돌을 확인하는 if 문 만 있으면됩니다. 다음과 같이 입력하십시오 :

if(CheckCollision() == CollisionType.Target) 
{ 
    OnCollision(); 
} 

희망이 있습니다.

레이

0

당신이 당신의 클래스의 상단을에 약식, 그리고 충돌이 모든 항목이 처음으로 발생해야하는 것처럼 문이 소리 경우에만 두 번째에를 증가하는 경우.

나머지 코드가 없으면 같은 위치에서 시작하여 AddTargets 함수에서 예를 들어 조정 한 다음 조정하면이 충돌을 모두 검사했을 때 해당 요소를 모두 검증 할 수 있습니다. 그 성격의 무언가.

위에서 언급했듯이 점수를 업데이트 할 때 중단 점을 설정하거나 필요한 경우 속성을 통해 업데이트하고 속성에 중단 점을 설정하여 호출 위치를 확인하고 호출 이유를 추적 할 수 있습니다 . 실제로 충돌하기를 기대하기 전에 0에서 250으로 진행하는 경우 카운터가 잘못 업데이트되는 위치를 쉽게 추적 할 수 있어야합니다. 첫 번째 충돌이 예상되기 전에 일어나기 때문에 첫 번째 250 점을 더합니다.