【问题标题】:C++ Smooth player - wall - collision (sliding against wall)C++ 平滑播放器 - 墙壁 - 碰撞(靠墙滑动)
【发布时间】:2014-09-18 13:08:11
【问题描述】:

我已经尝试过解决平滑播放器-墙壁-碰撞的问题,让播放器沿着墙壁滑动。

我尝试了以下操作:

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

但是如果玩家接触到墙壁,他就不会滑动…… 他只是停下来。 (我也将 W、A、S 和 D 分开。)

仅当我将播放器位置设置回 他接触的墙壁的位置。如下:

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

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

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

【问题讨论】:

    标签: c++ collision sliding


    【解决方案1】:

    您可以从播放器中投射出一条光线,看看它是否撞到了墙上。如果确实发生了碰撞,请使用墙壁的法线创建一个向量,该向量沿玩家运行方向的侧面运行。

    【讨论】:

    • “使用墙壁的法线”是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    • 1970-01-01
    • 2012-12-06
    • 2016-10-26
    • 2016-04-24
    • 1970-01-01
    • 2015-08-03
    相关资源
    最近更新 更多