팀 프로젝트가 2D로 되어 있는 상태라 물리엔진을 사용하려면 Rigidbody2D Component를 사용해야 하는데 기본적직인 Rigidbody2D에서 적되는 물리엔진이 있지만 여기에 추가로 Physics Material 2D를 사용해볼 기회가 생겨 블로그에 남겨본다.
기존 구현 내용은 이러하다.
(그림 맞추기라서 배열이 4x4이니 당구로 오해하지 말자^^;;)

제일 아래에 배치된 흰색공을 클릭하면 클릭한 영역의 역방향으로 코드처럼 물리적인 힘을 가해주게 되는데
gameObject.GetComponent<Rigidbody2D>().AddForce(100, ForceMode2D.Impulse);
Physics Material 2D 를 적용하지 않은 상태에서 보면 근처에 물리 요소와 충돌할때 튕기는 현상을 볼수가 없다.
그래서 방법을 찾다가 Physics Material 2D를 적용하게 되면 수치에 따라 충돌위치에서부터 Bounce 되는 효과를 적용할 수 있게 된다.
우선 준비해야할 것이 있다. 이미지에서 볼 수 있듯이 WhiteBallMaterial이란 녀석을 볼 수 있다.
지금처럼 Materials에 추가를 해놨지만 다른데에 추가를 해도 무방하다. 임시로 Material에 추가했다. WhiteBallMaterial을 클릭해서 Inspector에서 보면
2개 값만 있는 것을 볼 수 있다. 매뉼얼에 따르면
- Friction : 콜라이더의 마찰 계수
- Bounciness : 충돌이 표면에서 다시 바운스되는 정도 0이면 바운스하지 않고, 1이면 에너지 손실 없이 바운스
설명대로라면 원하는 수치에 따라 적절한 바운스와 마찰을 적용할 수 있다고 한다.
그래서 위에 이미지 처럼 Friction을 0.7, Bounciness를 0.8로 설정하고
Rigidbody2D를 사용하는 Object에 Material로 설정해주면
이런 느낌으로 Bounce Bounce 되는 것을 확인 할 수 있다.
(당구채가 방향이 고정인건 시간적인 여유가 없어서 패스했다..ㅎㅎ)