C++平滑播放器-墙-碰撞(靠墙滑动)

C++ Smooth player - wall - collision (sliding against wall)

本文关键字:碰撞 平滑 播放器 C++      更新时间:2023-10-16

我已经尝试解决玩家与墙的平滑碰撞问题,以便玩家沿着墙滑动。

我尝试了以下内容:

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

但如果玩家碰到墙,他就不会滑。。。他只是停下来。(我也为W、A、S和D单独做。)

只有当我将玩家位置设置回他碰到的墙的位置。如下:

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

但它不起作用,因为对于一堵墙来说另一个是球员接触更多的边,球员跳到角落。。。所以它只适用于一面墙。。。

我的问题是:我该如何使玩家-墙-另一种方式的碰撞,也适用于与一个或多个其他人连接的墙。

你可以从玩家身上射出一条射线,看看它是否撞到了墙上。如果它确实发生了碰撞,请使用墙的法线制作一个向量,该向量沿玩家跑步的方向沿边运行。