如何在Unity中碰撞.fbx动画

时间:2013-02-06 11:31:37

标签: animation unity3d unityscript

我是团结的新手。我有两个.fbx格式的动画。他们可以移动..现在我想要两个都会相互碰撞声音会产生。我有什么想法我会怎么做。谢谢你提前

3 个答案:

答案 0 :(得分:2)

我认为您需要了解物理学如何工作,然后如何处理Trigger-Events和Colission检测。

在此处阅读thisthis。第一个让您深入了解Unity引擎的工作原理。后者提供了有关如何进行碰撞检测的视频教程。

如果您不想这样做而只是想要代码,我在快速Google上找到了this

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);
}

答案 1 :(得分:0)

您可以将MeshCollider添加到fbx网格物体中。无论如何,这不是一个好主意,因为这会导致性能问题。

你可以为每个角色创建一个空的游戏对象,并添加到它们:fbx动画和一个简单的对撞机(一些立方体,球体,胶囊等)。然后,当您为它们使用脚本时,将它附加到父对象,然后从那里处理整个事物。

如果您希望对撞机从动画中的特定位置移动(如打孔移动或踢动),则可以要求3D动画师/建模者在该点上添加简单网格。例如,一个打孔上的球体,随着动画移动。然后,在Unity中,您将隐藏球体的网格,但为其添加网格对撞机。 :)

希望它有所帮助!

答案 2 :(得分:0)

大多数情况下,如果您将动画应用于对象,那么您将放松物理反应。不相信我?见这里:http://www.youtube.com/watch?v=oINKQUJZc1Q

显然,动画不是Unity物理的一部分。想一想...... Unity物理学根据牛顿和朋友定律决定物体的位置和旋转。您如何看待这些法则可以符合关键帧任意动画?他们不能:因此你尝试时会得到疯狂的结果。

如何解决?将Unity物理也用于动画:学习掌握rigidbody.AddForce和所有其他描述的here

您可能始终希望将物理和动画分开。 That's how you get out of trouble

如果你真的想知道:这是关于如何用动画调解物理的个人经验。

  

有时,甚至将一个简单的参数绑定到物理和另一个   动画(或调解用户输入的脚本)可能导致   灾难性的结果。我做了一个星舰:旋转控制器   用户鼠标(通过标记“块刚体旋转”),方向和   物理速度。它在一个盒子对撞机里面。想象一下会发生什么   如果一个立方体,以几度角度定位,遇到平坦的地面:它   应该下降并旋转,直到其中一个面完全放在上面   地面。这是不可能的,因为我阻止任何物理交互   身体的旋转:因此盒子想要平坦   地面但不能。这种紧张最终导致它前进   永远:在现实世界中不可能的东西。要调解此错误,   我根据动态改变了“块旋转”参数   对用户输入:当船正在移动时,旋转受到控制   用户但是一旦用户停止控制船舶   旋转参数被返回给物理引擎。另一个   解决方案是将射线投射到对撞机上,检查是否有地面   如果船没有移动,靠近并避免碰撞(这是怎么回事   我认为Halo Combat Evolved中的女妖是受控制的。什么时候   玩电子游戏,总是看看你的用户输入是怎样的   介入物理引擎:你可能会发现一些东西   普通玩家通常不会注意到。