Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
假设我将 (0.5,0.5) 移动到表面法线为 (-1,0) 的墙上。我希望最终结果是 (0,0.5),所以我不能继续向墙壁移动,而是沿着表面滑动。
我怎样才能做到这一点?我有
comp_u = n * (maths::dot(dir,n) / maths::dot(n,n));
这给了我垂直于碰撞表面的方向的分量,其中“n”是垂直于碰撞表面的向量,我可以将其抵消。但是,如果我尝试离开墙壁,它会取消该组件,这意味着我永远无法离开墙壁。
仅当运动方向与法线方向相反时才应执行该操作...dot(dir,n)即为负。
dot(dir,n)
如果结果是肯定的,那么您正在远离墙壁并且您不修改dir.
dir