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

问题描述 投票:0回答:1

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

我试过以下:

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

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

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

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

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

我的问题是:如何以另一种方式制作平滑的玩家 - 墙壁 - 碰撞,这也适用于与一个或多个其他墙壁相连的墙壁。

c++ collision sliding
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.