【问题标题】:Collision isn't working properly?碰撞无法正常工作?
【发布时间】:2015-08-20 18:56:25
【问题描述】:

我正在开发一款类似生存的游戏,我有两种类型的碰撞,一种是玩家的敌人,另一种是敌人的子弹。我还有一个生命值条,由于某种原因,移除 pi​​cbox 后,生命值仍然下降,就像敌人正在与玩家互动一样。

private void checkbulletcollsion()
{
    for (int i = 0; i < bulletlistupright.Count; i++)
    {
        for (int u = 0; u < infectedlistdownleft.Count; u++)
        {
            if (bulletlistupright[i].Bounds.IntersectsWith(infectedlistdownleft[u].Bounds))
            {
                this.Controls.Remove(infectedlistdownleft[u]);
                this.Controls.Remove(bulletlistupright[i]);
            }
        }
    }
}

这是子弹碰撞的代码块(所有8个方向的代码都相同)

for (int i = 0; i < infectedlistupright.Count; i++)
{
    if (infectedlistupright[i].Bounds.IntersectsWith(picplayer.Bounds))
    {
        infectedcount6 = 0;

        if (infectedcounter % 15 == 0)
        {
            health--;
        }

        infectedcounter++;
    }                
}

这是敌人和玩家碰撞的代码

【问题讨论】:

    标签: c# collision


    【解决方案1】:

    即使您已移除 UI 控件,但您并未将其从您的 infectedlist* 数组中移除。

    【讨论】:

    • 只是另一个提示,如果您在 checkbulletcollsion 循环中删除了它,请确保您没有跳过下一次检查(即您也需要减少循环索引)
    猜你喜欢
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多