적과 충돌 한 총알 사이에 boundingBoxes
(Collision)을 만들려고합니다. 불행히도, 나는 적이 화면을 떠날 때마다 System.ArgumentOutOfRangeException
오류가 표시되거나 한 번에 두 개 이상의 탄환이 생성됩니다.여러 개의 경계 상자를 생성 할 때 오류 발생 "System.ArgumentOutOfRangeException"
모두 경계 상자와 같은 총알 & 적 클래스의 Update
기능에서 생성됩니다
boundingBox = new Rectangle((int)position.X, (int)position.Y, texture.Width, texture.Height);
이 관련 코드입니다 내 Game1
업데이트 기능에 사용되는 :
for (int i = bullets.Count - 1; i >= 0; i--)
{
bullets[i].Update(gameTime);
ERROR OCCURS HERE -> if (bullets[i].boundingBox.Intersects(enemies[i].boundingBox))
{
score += 1;
bullets.RemoveAt(i);
}
//Bullets being destroyed upon leaving
if (bullets[i].position.Y < 0)
bullets.RemoveAt(i);
}
하나를 도움을 주시면 감사하겠습니다. 여기에 또한
, 즉 전혀 도움이된다면? 내가 추측해야하는 경우, 오류가 if (bullets[i].boundingBox.Intersects(enemies[i].boundingBox))
문에서 제공
List<Bullet> bullets = new List<Bullet>();
public void Shoot (Vector2 pos, Vector2 dir, float speed)
{
Bullet bullet = new Bullet(bulletTexture);
bullet.position = pos;
bullet.direction = dir;
bullet.speed = speed;
if (bullets.Count() < 40) //Maximum amount of bullets
bullets.Add(bullet);
}
그리고이 예외가 정확히 어디에서 발생합니까? – Dirk
내 사과, 코드의 두 번째 블록에서 다섯 번째 줄에 오류가 발생합니다 : - "(총알 [나는] .boundingBox.Intersects (enemies [i] .boundingBox)))" – Paulie
그건 내가 생각한거야,이 줄 때 서면 언어로 번역하는 것은 의미가 있습니까? i 번째 총알이 i 번째 적과 맞았는지 확인하고 있습니다. 다른 것을 공격 할 수 없습니까? – Dirk