C ++平滑播放器 - 墙 - 碰撞(滑向墙壁)

时间:2014-09-18 13:08:12

标签: c++ collision sliding

我已经尝试解决了一个平稳的玩家 - 墙壁碰撞的问题,以便玩家沿着墙壁滑动。

我试过以下:

playerBox->move();
if (playerBox->intersects(wall)) {
    clearMovement();
    movePlayerBoxBack();
}

但如果玩家接触墙壁,他就不会滑动...... 他只是停下来。 (我也分别为W,A,S和D做。)

只有在我将玩家位置设置回来时才有效 他触摸的墙的位置。如下:

player->move();
if (intersect) {
    moveToWall();
}

但它不起作用,因为与墙相连 另一个玩家触及更多的侧面和玩家 跳到角落...... 所以它只适用于一面墙......

我的问题是:我怎样才能顺利进行 玩家 - 墙 - 以另一种方式碰撞,也适用于与一个或多个其他人相连的墙。

1 个答案:

答案 0 :(得分:1)

你可以从玩家身上投下一条光线,看看它是否撞到墙上。如果碰撞,请使用墙壁的法线制作一个向量,该向量沿着玩家运行方向的一侧运行。