在XNA 4.0中清空/卸载矩形

时间:2012-04-02 19:43:04

标签: c# xna

我正在XNA中创建一个Space Invaders的克隆作为练习。在过去的5天里,我遇到了各种各样的障碍,尤其是我曾经解决的碰撞问题。我终于让它工作只打了另一个问题。

来自玩家的子弹碰撞并摧毁入侵者,然而,我创建的矩形作为碰撞的碰撞盒仍然存在。 (我认为)

整个解决方案可以放在这里,这样你只需按F5就可以重新创建问题,空格键可以杀死绿色入侵者,留下的空白空间我认为是矩形:https://www.dropbox.com/sh/pzy7fx3tuprzza2/GIjhZ6V5ll

我的问题是:当子弹击中入侵者时,我如何移除矩形,或者让它们相交。

1 个答案:

答案 0 :(得分:0)

问题似乎是你没有意识到你的入侵者已经在Game1.c的第524行被炸毁了你有一个FOR语句通过入侵者旋转,找出入侵者应该在哪里,然后检查如果命中框相交。你不检查它的hitbox相交的入侵者是否已经死了。

在Invaders对象(Invader1,Invader2等)中,您需要跟踪变量以确定Invarder是否处于活动状态。如果您愿意,似乎您可以使用变量invaderVis,因为这似乎决定了您是否应该显示该入侵者。

所以第524行应改为

if (Type1Invaders[Count].invaderVis && rectMissile.Intersects(rectInvader))
{
    //Do logic for hit
}

同样在lne 539上更改你的不明飞行物击中检查也是如此。