1

私は団結するのが初めてです。私は.fbx形式で2つのアニメーションを持っています.それらは動くことができます..今、私は両方が互いに衝突するときに音が生成されることを望んでいます.これを行う方法について何か考えはありますか.

4

3 に答える 3

2

物理がどのように機能するか、そしてトリガーイベントと衝突検出がどのように処理されるかについて読む必要があると思います。

これをこことこれを読んでください。最初のものは、Unity エンジンがどのように機能するかについての洞察を提供します。後者は、衝突検出の方法に関するビデオ チュートリアルを提供します。

それをしたくなくてコードだけが必要な場合は、簡単なGoogleでこれを見つけました

var crashSound : AudioClip; // set this to your sound in the inspector function   
OnCollisionEnter (collision : Collision) {    
    // next line requires an AudioSource component on this gameobject5.    
    audio.PlayOneShot(crashSound);
}
于 2013-02-06T12:28:09.640 に答える
0

ほとんどの場合、オブジェクトにアニメーションを適用すると、物理反応が失われます。私を信用しない?こちらをご覧ください: http://www.youtube.com/watch?v=oINKQUJZc1Q

明らかに、アニメーションは Unity の物理演算の一部ではありません。考えてみてください... Unity の物理学は、ニュートンとその仲間の法則に従って、オブジェクトの位置と回転を決定します。これらの法則は、キーフレームの任意のアニメーションにどのように適合すると思いますか? 彼らはできません。したがって、試してみるとクレイジーな結果が得られます。

それを解決する方法は?アニメーションにも Unity の物理演算を使用します。rigidbody.AddForceと、ここで説明されている他のすべてのものをマスターする方法を学びます。

物理とアニメーションを常に分けておきたいと思うかもしれません。それがあなたがトラブルから抜け出す方法です

あなたが本当に知りたいのであれば、アニメーションで物理学を仲介する方法についての私の個人的な経験があります.

場合によっては、単純なパラメーターを物理にバインドし、別のパラメーターをアニメーション (またはユーザー入力を仲介するスクリプト) にバインドするだけでも、壊滅的な結果になることがあります。私は宇宙船を作りました:ユーザーマウスによる回転コントローラー(「ブロック剛体回転」にフラグを立てることにより)、物理学による方向と速度。ボックスコライダーの中にありました。数度の角度で方向付けされた立方体が平らな地面にぶつかるとどうなるか想像してみてください。面の 1 つが完全に地面に置かれるまで、立方体は落下して回転するはずです。これは不可能でした。体の回転との物理的な相互作用をブロックしたためです。その結果、ボックスは地面に平らになろうとしましたが、できませんでした。この緊張により、最終的には永遠に前進しました。これは、現実世界では不可能なことです。このエラーを解決するために、「ブロック ローテーション」を行いました。パラメータはユーザー入力に応じて動的に変更されます。船が動いているとき、回転はユーザーによって制御されますが、ユーザーが船の制御を停止するとすぐに、回転パラメータが物理エンジンに戻されます。別の解決策は、コライダーに光線を投げかけ、地面が近くにあるかどうかを確認し、船が動いていない場合は衝突を回避することです (これが、Halo Combat Evolved のバンシーが制御される方法だと思います)。ビデオゲームをプレイするときは、ユーザー入力が物理エンジンにどのように伝達されるかを常に確認してください。通常のプレイヤーが通常気付かないことを発見できるかもしれません。別の解決策は、コライダーに光線を投げかけ、地面が近くにあるかどうかを確認し、船が動いていない場合は衝突を回避することです (これが、Halo Combat Evolved のバンシーが制御される方法だと思います)。ビデオゲームをプレイするときは、ユーザー入力が物理エンジンにどのように伝達されるかを常に確認してください。通常のプレイヤーが通常気付かないことを発見できるかもしれません。別の解決策は、コライダーに光線を投げかけ、地面が近くにあるかどうかを確認し、船が動いていない場合は衝突を回避することです (これが、Halo Combat Evolved のバンシーが制御される方法だと思います)。ビデオゲームをプレイするときは、ユーザー入力が物理エンジンにどのように伝達されるかを常に確認してください。通常のプレイヤーが通常気付かないことを発見できるかもしれません。

于 2013-02-10T22:58:03.163 に答える
0

MeshCollider を fbx メッシュに追加できます。とにかく、これはパフォーマンスの問題を引き起こすため、良い考えではありません。

キャラクターごとに空のゲームオブジェクトを作成し、fbx アニメーションと単純なコライダー (キューブ、球体、カプセルなど) を追加できます。次に、スクリプトを使用して親オブジェクトにアタッチし、そこからすべてを処理します。

アニメーションの特定の場所からコライダーを動かしたい場合 (パンチの動きやキックなど)、3D アニメーター/モデラーに依頼して、そのポイントに単純なメッシュを追加することができます。たとえば、アニメーションとともに移動する 1 つのパンチの球。次に、Unity で球のメッシュを非表示にしますが、メッシュ コライダーを追加します。:)

それが役に立てば幸い!

于 2013-02-10T22:49:25.713 に答える