Unity5.6 2D物理引擎Effector

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq563129582/article/details/78658544

Unity2D-5.6中更新了5个以”Effector”为组成要素的组件,构成2D游戏的效应器组件。使用这些组件在无需编码的情况下可以构建一些特殊游戏效果,例如: 排斥力、吸引力、浮力、方向力、单向通过等。

  • 1.PointEffector2D,模拟2D排斥与吸引效果。
  • 2.SurfaceEffector2D,模拟2D物体表面方向力。
  • 3.AreaEffector2D,模拟2D物体内部一个方向力。
  • 4.PlatformEffector2D,模拟2D 物体平台的方向通过性。
  • 5.Buoyancy Effector2D,模拟2D浮力效果。


以下是我们将要给大家介绍的5大组件,后面笔者会就每一个组件进行详述。

下图1.0是官方针对前四种效应器组件给出的演示示意图,这样先让大家有一个大体的了解。


 

1.0 部分精灵效应器组件效果示意图

这个组件模拟在“点范围”内,2D的排斥与吸引力效果。 如下图1.1所示,演示效果:当小鸟靠近红色(下方)箱子时会被一股力弹开,当靠近黑色(上方)箱子时则被一股吸引力吸住无法脱离。

制作步骤:

1:给下图“Box_repulsive”对象添加“PointEffector2D”组件(属性窗口Add Component-->Physics2D--> PointEffector2D,其属性“Force Magnitude”表示力的大小,正数表排斥力,负数表吸引力。

2:添加PointEffector2D组件后,属性窗口会报警告信息。按照系统要求,在对应的2D碰撞体组件中需要勾选“Is Trigger”与 "Used By Effector"属性。

 

 

1.1  Point Effector 2D 组件设置

 

这个组件模拟在物体表面2D的方向力,类似表面很光滑或者表面推动力效果(类似现实生活中的刮风) 如下图1.2所示,演示效果:当小鸟靠近绿色箱子(中间有斜度的并排四个箱子)表面时会被一股力快速推下去,仿佛受到了一种方向力的推动。

制作步骤:

1:给下图Box_1Box_2Box_3Box_4对象添加“SurfaceEffector2D”组件(属性窗口Add Component-->Physics2D--> SurfaceEffector2D,其属性“Speed”表示速度,正数表向右的方向力,负数表向左的方向力。

2:添加SurfaceEffector2D组件后,属性窗口会报警告信息。按照系统要求,在对应的2D碰撞体组件中需要勾选 "Used By Effector"属性。


 

1.2  SurfaceEffector2D 组件设置


这个组件模拟在“区域内部”,2D的方向力效果。 如下图1.3所示,演示效果:当程序运行后,大量小鸟会被四根大型管道内不同方向的力所推动不断的向前运动。由于设置的四根管道组成了一个封闭逆时针的循环往复力空间,所以大量小鸟会不断的逆时针往复无限运动。

制作步骤:

1: 给下图Pipe_1Pipe_2Pipe_3Pipe_4对象添加“AreaEffector2D”组件(属性窗口Add Component-->Physics2D--> AreaEffector2D,其属性“Use Global Angle”表示全局角度建议勾选,“Force Angle”表示力的角度(0:右方、90:上方、180:左方、270下方),“Force Magnitude”表示力的大小。

2:添加AreaEffector2D组件后,属性窗口会报警告信息。按照系统要求,在对应的2D碰撞体组件中需要勾选“Is Trigger”与 "Used By Effector"属性。


 

1.3  AreaEffector2D 组件设置


这是一个构建“方向通过性”组件,详细说就是2D精灵关于某个角度的可通过性。 如下图1.4右图所示,演示效果:当小鸟靠近不同2D对象时,其可通过性都不一样。

1>:左上角“LandSky1”对象只能从下往上通过。

2>:左下角“LandSky2”对象只能从上往下通过。

3>:中间“Box1”对象左边沿无法通过,其他三个方向均可。

4>:右边“Box2”对象只有右下角方向可以通过,其他三个方向无法通过。

结合图1.4左图的扇形区域,我们就可以总结规律是: 凡是在弧度之内的2D对象边沿都不能通过,反之可以通过。

以左上角“LandSky1”对象为例,

制作步骤:

1: 参考图 1.5所示,给“LandSky1”添加“PlatformEffector2D”组件(属性窗口Add Component-->Physics2D--> PlatformEffector2D)。其属性“Rotational Offset”表示角度偏移量,填入-90(单位为“度”,表示-90角度)。确认勾选 Use One Way”。属性“Surface Arc”填入 180,表示表面180度之内阻止通过。

2:添加PointEffector2D组件后,属性窗口会报警告信息。按照系统要求,该对象必须存在2D碰撞体组件,且需要确认勾选了"Used By Effector"属性。


图1.4 PlatformEffector2D

 

 

 图1.5 PlatformEffector2D

 

这是浮力效应器组件,模拟2D世界的湖泊与河流等。演示效果:运行程序后,上空大量木箱在重力的作用下纷纷往下掉落,当落在水面上的木箱因为有的质量大有的质量小(注: 通过Rigibody 2D 的“Mass”属性调节物体质量)的缘故,部分木箱漂浮水面,部分逐渐下沉。如下图1.6所示。

制作步骤:

1: 给下图“Water”对象添加“Buoyancy Effector2D”组件(属性窗口Add Component-->Physics2D--> Buoyancy Effector2D),其属性Desity 表示水的密度,填入数值2 Surface Level 表示水面的高度。Damping Linear Drag/Angular Drag 分别表示水面的线性与角阻力,填入5Flow Angle /Flow Magnitude 等数值表示水流的角度与大小,填入一定数值后,水中的木箱等物件会随着“水流”而冲走。

2:添加Buoyancy Effector2D组件后,属性窗口会报警告信息。按照系统要求,在对应的2D碰撞体组件中需要勾选“Is Trigger”与 "Used By Effector"属性。

 

 

1.6  Buoyancy Effector2D效果演示图

猜你喜欢

转载自blog.csdn.net/qq563129582/article/details/78658544