【发布时间】:2014-05-05 05:44:21
【问题描述】:
我正在 XNA 中制作 2D 射击游戏。我一直在研究玩家的射击速度(玩家每隔多久可以射击另一颗子弹)并使其只有在前一颗子弹行进一定距离后才能再次射击,如下所示:
if (this.bulletList[0].BULLETS[(this.bulletList[0].BULLETS.Count) - 1].X >= Pos.X + attackSpeed)
canShoot = true;
bulletList 是玩家可以射击的可用 Projectiles,BULLETS 是已经射击的子弹列表,attackSpeed 是子弹应该被射击的速率,或者简单地说:子弹到另一个子弹必须行进的距离可以射击。
现在我一直在研究碰撞。我的方法是在子弹击中目标后将其丢弃,如下所示:
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);
}
问题是,如果子弹在击中目标时被移除,我就无法再询问该子弹是否已通过给定距离以发射另一颗子弹。 为了解决这个问题,我希望子弹在被击中时变为不可见,然后它会在另一个已经创建的函数中处理。
【问题讨论】: