我是新来的团结。我有两个 .fbx 格式的动画。它们可以移动..现在我想当两者相互碰撞时会产生声音。有什么想法我会怎么做。提前谢谢
3 回答
我认为您需要了解物理的工作原理,以及如何处理触发事件和碰撞检测。
在这里阅读这个,和这个。第一个让您深入了解 Unity 引擎的工作原理。后者提供了有关如何进行碰撞检测的视频教程。
如果您不想这样做而只想要代码,我在快速谷歌上找到了这个:
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);
}
You can add a MeshCollider to the fbx meshes. Anyway, this is not a good idea because this will cause performance issues.
You can create an empty gameobject for each character, and add to them: the fbx animation and a simple collider (some cube, sphere, capsule, etc). Then, when you use a script for them, you attach it to the parent object and from there you handle the whole thing.
If you want that the collider moves from specific places from the animation (Like the punch movement, or a kick),then you can ask to your 3D animator/modeler to add a simple mesh on that points. For example, a sphere on one punch, which will move with the animation. Then, in Unity, you will hide the mesh of the sphere but add a mesh collider to it. :)
Hope it helps!
大多数情况下,如果您将动画应用于对象,那么您将失去物理反应。不相信我?见这里:http ://www.youtube.com/watch?v=oINKQUJZc1Q
显然,动画不是 Unity 物理的一部分。想一想…… Unity 物理根据牛顿和朋友定律决定物体的位置和旋转。你认为这些规律如何能符合一个关键帧的任意动画?他们不能:因此当你尝试时你会得到疯狂的结果。
如何解决?将 Unity 物理也用于动画:学习掌握rigidbody.AddForce以及此处描述的所有其他内容。
您可能总是希望将物理和动画分开。这样你才能摆脱困境。
如果你真的想知道:这是我关于如何用动画来调节物理的个人经验。
有时,即使将一个简单的参数绑定到物理,另一个绑定到动画(或调解用户输入的脚本),也可能导致灾难性的结果。我制作了一艘星际飞船:用户鼠标旋转控制器(通过标记“阻止刚体旋转”),物理方向和速度。它在一个盒子对撞机里面。想象一下,如果一个以几度角定向的立方体遇到平坦的地面会发生什么:它应该下落并旋转,直到其中一个面完全放在地面上。这是不可能的,因为我阻止了与身体旋转的任何物理交互:结果盒子想平放在地上但不能。这种紧张关系最终使它永远向前发展:这在现实世界中是不可能的。为了调解这个错误,我做了“块轮换” 参数根据用户输入动态变化:当船在移动时,旋转由用户控制,但一旦用户停止控制船,旋转参数就会返回给物理引擎。另一种解决方案是向对撞机投射光线,检查地面是否靠近,如果船没有移动,则避免碰撞(我认为这就是 Halo Combat Evolved 中的女妖控制方式)。在玩电子游戏时,请始终注意您的用户输入是如何传递到物理引擎中的:您可能会发现普通玩家通常不会注意到的东西。另一种解决方案是向对撞机投射光线,检查地面是否靠近,如果船没有移动,则避免碰撞(我认为这就是 Halo Combat Evolved 中的女妖控制方式)。在玩电子游戏时,请始终注意您的用户输入是如何传递到物理引擎中的:您可能会发现普通玩家通常不会注意到的东西。另一种解决方案是向对撞机投射光线,检查地面是否靠近,如果船没有移动,则避免碰撞(我认为这就是 Halo Combat Evolved 中的女妖控制方式)。在玩电子游戏时,请始终注意您的用户输入是如何传递到物理引擎中的:您可能会发现普通玩家通常不会注意到的东西。