0评论

Unity2D 效应器详解

文章来自https://blog.csdn.net/qq_34307432/article/details/83653235 2019-03-21 155浏览
Unity2D 中有5个以”Effector”为组成要素的组件,构成2D游戏的效应器组件。使用这些组件在无需编码的情况下可以构建一些特殊游戏效果,例如: 排斥力、吸引力、浮力、方向力、单向通过等,图中是这5个组件外观。

以下就给大家介绍的下效应器的这5大组件,后面会对每一个组件进行详细介绍。
  • PointEffector2D,模拟2D排斥与吸引效果。
  • SurfaceEffector2D,模拟2D物体表面方向力。
  • AreaEffector2D,模拟2D物体内部一个方向力。
  • PlatformEffector2D,模拟2D 物体平台的方向通过性。
  • Buoyancy Effector2D,模拟2D浮力效果。

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

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

制作步骤:

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

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


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

制作步骤:

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

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

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

制作步骤:

1. 给下图Pipe_1、Pipe_2、Pipe_3、Pipe_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"属性。

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

1>:左上角“LandSky1”对象只能从下往上通过。
2>:左下角“LandSky2”对象只能从上往下通过。
3>:中间“Box1”对象左边沿无法通过,其他三个方向均可。
4>:右边“Box2”对象只有右下角方向可以通过,其他三个方向无法通过。

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

以左上角“LandSky1”对象为例,叙述制作步骤:

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

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


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

制作步骤:

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

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