反射ベクトルにおいて色々なサイトを調べ実装しました。
1つ問題が出まして、重力方向に対して垂直の線があって、その上で物体がバウンドし続けるとやがて、バウンドの威力が弱まります。
そして、線の上に止まりますよね?しかし、そのままゆっくりと線を通り抜けてしまいます。これは例の一部で、一番参考になる例と思いました。
デバッグモードで値を調べると、反射ベクトルが進行ベクトルよりも値が少し小さくそれが原因かと思いますが他にも理由は考えられますか?
それ以外であれば、反射ベクトルの式が間違っているか、物体を線の上でとどまらせる他の計算が必要かのどっちかだと思います。
反射ベクトルについて
Re: 反射ベクトルについて
あなたの実装次第ではないでしょうか.
以下,勝手な想像ですが,
>反射ベクトルが進行ベクトルよりも値が少し小さく
例えば,単純に,物体の運動速度ベクトルをある瞬間に上下方向に関して完全に逆転させたとして,
運動速度にはその他に重力加速度の加算処理が行われるとかいうことであれば,そうなりますよね.
ある時刻における物体座標の更新結果が「線」を下回る位置に決定されること を許容(放置)するような実装になっているから通り抜けるのでは?
オフトピック
何をしていてどう実装したのかが(コードなり,あるいは十分な日本語なりで)示されなければ,
全く答えようが無いと思うのですが.
全く答えようが無いと思うのですが.
>反射ベクトルが進行ベクトルよりも値が少し小さく
例えば,単純に,物体の運動速度ベクトルをある瞬間に上下方向に関して完全に逆転させたとして,
運動速度にはその他に重力加速度の加算処理が行われるとかいうことであれば,そうなりますよね.
ある時刻における物体座標の更新結果が「線」を下回る位置に決定されること を許容(放置)するような実装になっているから通り抜けるのでは?
-
ISLe()
Re: 反射ベクトルについて
通り抜けを許容しないようにすると次に来るのは、物体が線の上で振動する、という状況です。
物体が振動したり、物体が密集すると爆発したり、という現象はメジャーな物理エンジンでも発生する問題です。
物体が線に密着した(静止した)、という状態をプログラムで判定すれば良いのですが、これが難しく完璧なものがありません。
そのプログラムに対してどんな対処が適当なのかは状況次第です。
物体が振動したり、物体が密集すると爆発したり、という現象はメジャーな物理エンジンでも発生する問題です。
物体が線に密着した(静止した)、という状態をプログラムで判定すれば良いのですが、これが難しく完璧なものがありません。
そのプログラムに対してどんな対処が適当なのかは状況次第です。