0

表面法線が(-1,0)の壁に(0.5,0.5)移動しているとします。最終結果を(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 に答える