2

事前にベイク処理されたアニメーションを使用して、.fbx形式でインポートされたモデルがあります。モデルに物理学を適用したいのですが、アニメーションを再生すると物理学が妨げられるようです

アニメーションを再生すると、モデルは「落下」/衝突しませんが、インスペクターで「アニメーション」のチェックを外すと、モデルはゲームオブジェクトに適用された物理リジッドボディ/メッシュコライダーに正しく反応しますが、スイッチをオンに戻すとすぐにモデルが元の開始位置に戻るアニメーション(ただし、アニメーションは正しく再生されます)

私は何が間違っているのですか?

編集:これは私が話していた「アニメーション」チェックボックスです:

アニメーションコンポーネントを示すUnityのインスペクターのスクリーンショット

4

2 に答える 2

1

あなたが言及しているこの「アニメーション」チェックボックスについては少し確信が持てませんが、探求できるいくつかの予感があります.

Unity の物理と衝突にはさまざまな種類があり、すべてがうまく混ざり合っているわけではありません。Rigidbody は、物理に関連するあらゆるものに適していますが、非常に多くの文字列が付属しています。たとえば、Rigidbody のみが他の Rigidbody と衝突します (下部を参照)。プレイヤーや敵などとして、物理的なものを動かしたいようですね。こうなるとRigidBodyが混ざります。

操作する必要がある設定は、rigidbody コンポーネントの「.isKinematic」です。これをオンにすると、リジッドボディの物理シミュレーションがオフになり、キャラクター コントローラーなどはデフォルトでフォールバックします。このスクリプトをチェックして、物理を切り替えて、キャラクターが何かをプッシュできるようにします。

心に留めておくべきもう 1 つのことは、モデルがアニメーションで世界中を移動してはならないということです。すべての変換は、ゲームの動作によって処理される必要があります。

于 2013-02-04T19:03:07.763 に答える
0

このアドバイスに従い、コンテナとして使用する空のゲーム オブジェクトを作成し、剛体/メッシュ コライダー/スクリプトをコンテナ ゲーム オブジェクトに追加してから、そのゲーム オブジェクトの子としてモデルを追加することで解決できました。このようにして、スクリプトで適用された変換がコンテナに適用され、アニメーションはモデルの動きに影響しなくなります!

于 2013-02-05T15:26:37.643 に答える