【问题标题】:Collision, how to use collision when object hits the other碰撞,当物体撞击另一个物体时如何使用碰撞
【发布时间】:2021-10-21 10:23:38
【问题描述】:

因此,我需要一些帮助,以了解如何让我的屏幕在小方块击中(射中)圆圈时显示“游戏结束,你赢了”......如果任何一个圆圈进入,则“你输了”在屏幕左侧没有一个小方块被射击,然后游戏重新开始。我有点困惑。我不知道我是否应该使用 dist() 函数或其他东西。

【问题讨论】:

  • 那么您的实际问题是什么?您只是描述了您想要发生的事情,而不是您尝试过的事情以及您认为的问题所在。 medium.com/@gordon_zhu/…

标签: processing


【解决方案1】:

您需要考虑在圆形和正方形之间实施某种形式的碰撞检测。

看看这个网站,它对如何检测圆形/矩形碰撞提供了很好的解释:http://www.jeffreythompson.org/collision-detection/circle-rect.php(也可以查看网站的其余部分,太棒了!)

编写碰撞函数后,让游戏正常运行的最简单方法是检查您拍摄的每个方格和每个圆圈之间的碰撞情况。我建议使用 OOP 方法,这样您就可以将正方形和圆形视为具有自己功能的对象,但这由您决定。我的伪代码是在考虑 OOP 的情况下编写的,但是您必须编写的代码的原理保持不变。

伪代码:

bool CheckForGameEnd()
{
    foreach(Circle circle)
    {
        foreach(Rectangle rectangle)
        {
            // CheckForCollision() is your collision detection function and 
            // returns true or false depending on whether a collision has been found.
            if (CheckForCollision(circle, rectangle))
            {
                return true;
            }
        }
    }
    return false;
}

你的绘图函数看起来像这样(伪代码):

void Draw()
{
        if (gameWon)
        {
            Background("black");
            Text("i won");
            // Dont bother with the rest of the function if game has been won
            return;
        }

        if (CheckForGameEnd())
        {
            gameWon = true;
            // Dont bother with the rest of the function if game has been won
            return;
        }

        // game code whilst not won runs here
        foo();
        bar();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2018-07-07
    • 1970-01-01
    相关资源
    最近更新 更多