Я делаю 2D-шутер в XNA. Я работал над скоростью стрельбы игрока (каждый раз, как часто игрок может стрелять другой пулей) и сделал так, чтобы игрок мог стрелять снова только после того, как предыдущая пуля прошла определенное расстояние, например так:
if (this.bulletList[0].BULLETS[(this.bulletList[0].BULLETS.Count) - 1].X >= Pos.X + attackSpeed)
canShoot = true;
Где bulletList — это доступные снаряды, которые игрок может выстрелить, BULLETS — это список уже выпущенных пуль, а AttackSpeed — это скорость, с которой должны быть выпущены пули, или, проще говоря, расстояние, которое пуля должна пройти, пока не будет выпущена другая пуля. .
Сейчас я работаю над Collisions. Мой метод заключался в том, чтобы избавиться от пули после того, как она попала в цель следующим образом:
for (int i = 0; i < player.BULLETLIST[0].BULLETS.Count; i++)
{
if (CollisionManager.PlayerBulletOnBot(player.BULLETLIST[0].BULLETS[i], bot))
player.BULLETLIST[0].BULLETS.RemoveAt(i);
}
Проблема в том, что если пуля была удалена при попадании в цель, я больше не могу спросить, прошла ли эта пуля заданное расстояние для выстрела другой пули. Чтобы решить эту проблему, я хотел бы, чтобы пуля становилась невидимой при попадании, а затем она удалялась в другой уже созданной функции.