我已经尝试解决了一个平稳的玩家 - 墙壁碰撞的问题,以便玩家沿着墙壁滑动。
我试过以下:
playerBox->move();
if (playerBox->intersects(wall)) {
clearMovement();
movePlayerBoxBack();
}
但如果玩家接触墙壁,他就不会滑动...... 他只是停下来。 (我也分别为W,A,S和D做。)
只有在我将玩家位置设置回来时才有效 他触摸的墙的位置。如下:
player->move();
if (intersect) {
moveToWall();
}
但它不起作用,因为与墙相连 另一个玩家触及更多的侧面和玩家 跳到角落...... 所以它只适用于一面墙......
我的问题是:我怎样才能顺利进行 玩家 - 墙 - 以另一种方式碰撞,也适用于与一个或多个其他人相连的墙。
答案 0 :(得分:1)
你可以从玩家身上投下一条光线,看看它是否撞到墙上。如果碰撞,请使用墙壁的法线制作一个向量,该向量沿着玩家运行方向的一侧运行。