
EffectorUnity 2D 환경에는 Effector라는 컴포넌트가 존재한다. 이는 물리 처리에서 Collider와 Rigidbody의 물리 반응을 제어하거나 보강하기 위한 컴포넌트로, 일반 충돌이나 마찰 외에도 특수한 물리 효과를 추가하는 것이 가능하다.
먼저 Unity 2D Effector를 사용하기 위해서는 Collider 2D 컴포넌트를 추가한 뒤 Used by Effector 체크박스를 활성화해야한다.
Platform Effectorplatform Effector는 Effector 중 가장 흔히 사용되며, 플랫폼 게임에서 밑으로는 올라갈 수 있지만, 위에서는 멈추는 타일을 구현하는데 쓰인다.

Point Effectorpoint effector는 고정된 정점(좌표)을 중심으로 끌어당기거나 밀어내는 힘을 구현한다. 주의할 점은 Point Effector의 작용방식을 제대로 알아야 구현을 정확히 할 수 있는데, Effector는 범위 외의 오브젝트에는 전혀 영향을 주지 않는다.
이때 해당 범위는 Trigger로 설정된 Collider 2D의 영역이며, 오브젝트가 Trigger 내부로 들어와있을 때만 힘이 작용한다. 따라서 영역 설정 없이, 단순히 중력장 같은 효과를 기대하고 effector만 추가하기만 한다면 제대로 된 효과를 낼 수 없다.
따라서 Point Effector를 추가하였다면, Collider 2D의 영역을 중력장을 적용시키고자 하는 범위만큼 확대시키고 Is Trigger 옵션을 켜줘야한다.

Surface Effectorsurface effector는 오브젝트가 닿았을 때 지정된 방향으로 밀어주는 컨베이어 벨트 같은 효과를 구현한다. 주의할 점은 player의 이동 방식과 호환이 되지 않을 경우 effector가 작용하지 않는 것처럼 보일 수 있다는 것이다.
만약 player가 rigid.velocity를 Fixed Update에서 계속 덮어씌우는 방식으로 이동하면 effector에게 힘을 받아도 속도가 바로 덮어씌워져 효과가 제대로 적용되지 않는다. 따라서 AddForce 방식을 사용하거나, Vector.Lerp를 활용해야한다.

Area Effectorarea effector는 특정 영역 내에 들어온 오브젝트에 일정한 방향의 힘을 적용하는 효과를 구현한다. point effector와의 차이는 방향을 지정할 수 있다는 점이다. area effector의 대표적인 예시로 포트리스 같은 게임에서의 바람을 구현하는 것이 있다.
