首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Object Collision C#

Object Collision C#
EN

Stack Overflow用户
提问于 2015-02-14 11:53:30
回答 2查看 658关注 0票数 0

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

代码语言:javascript
复制
    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修复-请参阅下面的注释!

EN

回答 2

Stack Overflow用户

发布于 2015-02-14 12:13:58

我的第一个猜测是,您在绘制步骤中使用的对象列表与在碰撞步骤中使用的对象列表不同。例如,如果要从obstacles_中删除对象,但在绘制步骤中遍历objects_,则仍会绘制这些对象。

另一个问题可能是,如果每一步都重新构建obstacles_列表。我建议单步通过这个块,确保对象确实被删除了,然后检查绘制步骤,看看列表是否是最新的(对象已经消失)。如果可以,从一个障碍开始,让它对你自己来说更容易。

票数 0
EN

Stack Overflow用户

发布于 2015-02-14 12:33:46

好的,伙计们,感谢大家的帮助,我已经弄清楚了,我在代码一开始的时候在障碍类中创建了边界,但是当它更新它的位置时,边界没有更新……

看起来有点愚蠢,但我想我现在已经解决了。

感谢所有想要帮助我们的人!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28512248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档