问题描述
我正在检查播放器与其他所有对象之间的碰撞,它是否起作用,但是我现在该怎么办。 这就是我现在要做的,但是当玩家从下方击中某物时,它会在被击中物体的顶部传送。
我要说的是:如果掉落在物体上,则在顶部传送,当从下方撞击时将最大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 (将#修改为@)