unity3d添加物理特性_unity2d物理引擎和3d物理引擎 - CSDN
  • 1:创建一个Cube 2:Component->Mesh Collider : ...此时 该物体已经有了物理下落的属性 在物体下面创建一个Plane ,会发现物体会落在Plane上 如何增加类似弹跳的效果呢 4:在Project 窗口右键-> Create -> Physic

    1:创建一个Cube


    2:Component->Mesh Collider  : 为物体添加一个多边形碰撞体组件


    3:添加刚体组件 Component -> RigidBody

    此时 该物体已经有了物理下落的属性

    在物体下面创建一个Plane  ,会发现物体会落在Plane上

    如何增加类似弹跳的效果呢

    4:在Project 窗口右键-> Create -> Physic Material 创建一个物理材质并修改Bounciness 为0.9

    5:将刚创建的材质拖到物体的 Mesh Collider 的Material上

    展开全文
  • 目前3D手游的开发主要工具是使用Unity3D引擎,于是,如何在Unity3D的开发过程中结合入物理功能变一个需要仔细考虑的问题。 我们考察的2种物理效果实现方案:Unity3D物理引擎和Havok物理引擎。 Unity3d物理引擎介绍...

    背景

      在重度手游的研发过程当中,游戏中的车辆模拟,场景互动,特效展示等功能很多时候需要物理引擎的介入,以提供丰富的交互体验。目前3D手游的开发主要工具是使用Unity3D引擎,于是,如何在Unity3D的开发过程中结合入物理功能变一个需要仔细考虑的问题。

      我们考察的2种物理效果实现方案:Unity3D物理引擎和Havok物理引擎。

      Unity3d物理引擎介绍

      Unity3d在内部集成了PhysX物理引擎,为其提供了物理模拟能力。

      Physx是目前使用最为广泛的物理引擎,PhysX目前由Nvidia公司开发并维护,特点是免费且带N卡的GPU物理计算加速功能(1)。

      PhysX被很多游戏大作所采用,使用PhysX制作的游戏:


                                      

    4.X版本的Unity3D集成的是2.8.3的PhysX,该版本较为老旧。在Unity5中将集成PhysX3.3,较2.8.3版本在功能和性能上有较大幅的提升,但是目前unity5并不是非常稳定。

      Havok物理引擎介绍

      Havok物理引擎是由Havok公司开发的老牌物理引擎,与PhysX不同,Havok专注于CPU端+多线程模拟方案,并且与PhysX的强大市场推广以及免费策略不同,Havok授权很严格,而且基本不提供试用版本下载(2)。

      使用Havok引擎的游戏大作在数量上与使用PhysX的不相上下,而且很多令人印象深刻:

      Unity3D物理与Havok物理的功能对比

      Unity3D集成的PhysX物理功能:

      Unity3D通过其提供的各种Component访问PhysX的物理功能,打开菜单栏中的Component->Physics便可以看到各种组件:


      其中,

      Rigidbody提供了刚体的访问接口。

      各种XXXCollider提供了3种碰撞包围体方案(Primitive,Mesh,Terrain)。

      WheelCollider组件提供了车轮模拟方案。

      XXXCloth组件提供了布料模拟方案。

      XXXJoint组件提供了关节与连接点模拟方案。

      PhysicsMaterial资源类型提供了表面物理材质描述功能。

      在Unity3D中每一种物理组件都有对应的编辑界面,且即拖即用,非常方便。



      PhysX引擎目前已经涵盖各个平台,且跨平台特性已经融入Unity3D的跨平台机制中,用户无需再关注跨平台开发。

      由于PhysX与Unity3D的深度结合以及Unity3D的闭源特性,修改PhysX的底层模拟机制基本不可能。

      Havok物理引擎功能介绍:

      Havok物理引擎以C++库的形式,通过组件式的方式,提供了丰富的物理功能。包括了:

    • Rigidbody刚体模拟。
    • 5种碰撞包围体模拟方案(Primitive,Convex,Mesh,Compount,Terrain)
    • 完整的VehicleKit车辆模拟方案。
    • HavokCloth不了模拟方案。
    • Constraint关节与连接点模拟方案。
    • HKX物理资源数据描述格式以及对应序列化与反序列化接口。
    • HavokDestruction破碎模拟方案。


      Havok并没有开发官方的Unity3D结合插件,市面上也没有第三方的结合插件可以使用,需要自行开发,有一定的开发成本。

      Havok具备称述的跨平台能力,但是由于没有结合入Unity3D的跨平台机制,在发布到多平台上需要一点额外的工作量。

      Havok在获得授权之后,用户可以修改与定制各个层级的物理功能。

      Unity和Havok主要物理功能对比



      结论:

      游戏中简单的物理效果展示可以使用生的PhysX引擎,但是如果需要扩展功能或者订制细腻的物理效果,可以考虑其它物理方案。

      Unity与Havok物理引擎的结合

      既然有结合其它物理方案的需求,那么接下来我们便讨论一下结合的方案。

      结合基本原理

      要实现Havok与Unity3D相结合,那么两个系统之间的交互通信机制便是实现的关键。Unity3D提供的二次开发平台是Mono,并没有提供NativeCode级别的接口,而Havok是完全以C++编写的Native实现。所幸,Mono为IL提供了跨平台的NativeCode交互机制。

      在Win和Linux(Android)平台上,Mono提供了以dll和so为基础的动态链接库交互C++代码形式,而在IOS平台上则是以AOT为基础的静态链接库交互形式,而这种混合编程的方法,便是让Unity3D与Havok交互的基础。