0

假设我将 (0.5,0.5) 移动到表面法线为 (-1,0) 的墙上。我希望最终结果是 (0,0.5),所以我不能继续向墙壁移动,而是沿着表面滑动。

我怎样才能做到这一点?我有

comp_u = n * (maths::dot(dir,n) / maths::dot(n,n));

这给了我垂直于碰撞表面的方向的分量,其中“n”是垂直于碰撞表面的向量,我可以将其抵消。但是,如果我尝试离开墙壁,它会取消该组件,这意味着我永远无法离开墙壁。

4

1 回答 1

1

仅当运动方向与法线方向相反时才应执行该操作...dot(dir,n)即为负。

如果结果是肯定的,那么您正在远离墙壁并且您不修改dir.

于 2012-10-07T12:42:56.237 回答