unity中使用box2d物理引擎一 – unity3d游戏开发

unity的博客好久都没有更新了,今天带了的绝对是劲爆的干货。。。

大家使用unity开发游戏估计有一大部分是开发2D的游戏,可能会用到物理系统。但是unity的物理系统计算了z轴有时候就会感觉不是那么顺手….

———————–这里隔开(上面是废话)————

Box2D是一款免费的开源二维物理引擎,由Erin Catto使用C++编写,在zlib授权下发布。它已被用于蜡笔物理学、愤怒的小鸟、地狱边境、Rolando、Fantastic Contraption、Incredibots、Tiny Wings、Transformice、Happy Wheels等游戏的开发,对于iPhone、iPad和Android游戏,可以使用Cocos2d游戏引擎和Corona Framework。

box2d用来做2d物理游戏很给力,把它用到unity上开发2D游戏并且跨平台不是更给力么
下面介绍一款插件Farseer Physics,几乎是c#版的box2d,作者移植了box2d的核心并且写了一些基础组件

先下载这个Unity package:
FarseerUnity_CatsintheSky.unitypackage
导入包,新建一个场景,设置相机为正交相机orthographic,视口大小size为27(当然可大可小的)
新建一个空物体,附加脚本FSWorldComponent,在这个脚本上设置重力的加速度,一般不用改的

新建四个方块把屏幕内包围起来,确保屏幕内的物体不会弹出屏幕外,然后附加FSBodyComponent组件到每个方块上,设置body type为static.
添加FSShapeComponent组件,use Unity colliders = true.
unity中使用box2d物理引擎一 – unity3d游戏开发_第1张图片

新建一些方块来测试,附加FSBodyComponent和FSShapeComponent组件,选择FSShapeComponent组件的Use Unity Collider. SType为Polygon.
unity中使用box2d物理引擎一 – unity3d游戏开发_第2张图片

到这里点击播放按钮测试可以看到基础的物理碰撞效果,在相机上附加FSDebugDrawComponent组件,可以看到物理的调试信息.

下面我们来试试另外一种生成物体形状的方法,复制出刚才的小方块,删除物体上FSShapeComponent组件和碰撞体组件
unity中使用box2d物理引擎一 – unity3d游戏开发_第3张图片
创建一个空物体,作为当前物体的子物体,重置子物体的Transform组件的所有属性,附加FSShapeComponent组件,去掉Use Unity collider,然后我们使用点连线来绘制物体碰撞体的形状,命名为(P00, P01, P02, P03)
unity中使用box2d物理引擎一 – unity3d游戏开发_第4张图片
unity中使用box2d物理引擎一 – unity3d游戏开发_第5张图片
点击播放测试看看

用这种方法定义多边形更灵活,能定义你想要的任何形状,性能上也肯定比MeshCollider好.

转自:http://www.u3dblog.com/?p=564

你可能感兴趣的:(unity中使用box2d物理引擎一 – unity3d游戏开发)