对象碰撞C#

时间:2015-02-14 03:53:30

标签: c# collision-detection collision

我一直在开发游戏,我遇到了这个游戏的碰撞部分的问题,而且我不确定如何修复它

    private void timer1_Tick(object sender, EventArgs e)
    {
        List<Obstacle> removed = new List<Obstacle>();
        foreach (Obstacle o  in obstacles_)
        {
            Rectangle bounds = o.Bounds;

            if (players_[0].Bounds.IntersectsWith(bounds))
                removed.Add(o);             
        }
        foreach (Obstacle ob in removed)
            obstacles_.Remove(ob);
    }

基本上我需要它做的是如果玩家遇到一个对象,那么它将从列表中删除并停止在表单上绘制。

编辑 - 已实现我还没有真正说出问题所在,当对象发生碰撞时,它不会自行移除,并继续被绘制

编辑 - 2修复 - 请参阅下面的评论!

2 个答案:

答案 0 :(得分:0)

我的第一个猜测是你在绘制步骤中使用的对象列表比在碰撞步骤中使用的不同。如果你要从障碍物中移除物体_但是在绘制步骤中你会遍历objects_,例如,仍然会绘制物体。

另一个问题可能是每一步都重建障碍列表。我建议单步执行此块,确保实际删除对象,然后检查绘制步骤,看看列表是否是最新的(对象消失了)。如果可以的话,从一个障碍开始,让自己轻松一点。

答案 1 :(得分:0)

好的伙计们,感谢所有的帮助,我已经设法弄明白了,我在代码开头的障碍类中创建了界限,但随后它更新了它的位置边界没有更新......

看起来很愚蠢,但我想我现在已经整理好了。

感谢所有试图提供帮助的人!