检测到碰撞,现在怎么办?

问题描述

我正在检查播放器与其他所有对象之间的碰撞,它是否起作用,但是我现在该怎么办。 这就是我现在要做的,但是当玩家从下方击中某物时,它会在被击中物体的顶部传送。

我要说的是:如果掉落在物体上,则在顶部传送,当从下方撞击时将最大y速度设置为0,将侧面的最大x速度设置为?

是这样做吗?

但是这不适用于圆对撞机,那么如何使我的物体在撞击时正常停止?

for (GameObject &g : gameObjects) 
{ 

        if (BoxCollision(player,&g))
        {
            player->velocity.y = 0;

            // set player feet location to the top of hit object
            player->transform.pos.y = g.transform.pos.y - player->sprite.height * player->transform.size.y;

            player->canJump = true;
        }
}

冲突检查:

bool BoxCollision(GameObject* g1,GameObject* g2)
{
    if (g1 != g2)
    {
        bool left = 0,right = 0,top = 0,bottom = 0;
        left = g1->transform.pos.x < g2->transform.pos.x + g2->sprite.width * g2->transform.size.x ? true : false;
        right = g1->transform.pos.x + g1->sprite.width * g1->transform.size.x >= g2->transform.pos.x ? true : false;
        bottom = g1->transform.pos.y + g1->sprite.height * g1->transform.size.y > g2->transform.pos.y ? true : false;
        top = g1->transform.pos.y < g2->transform.pos.y + g2->sprite.height * g2->transform.size.y ? true : false;

        return left && right && bottom && top ? true : false;

    }
    else return false;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)