본문 바로가기
[ CODING STUDY ]/》유니티 실습

유니티 - [폭발효과, OverlapSphere, AddExplosionForce]

by MRG 2022. 3. 28.
728x90
반응형

▣ 안녕하세요. 이번장에서는 폭발 효과

OverlapSphere, AddExplosionForce를 공부해보겠습니다. 

 

▣ 우선 저번장과 이어서 3D 프로젝트를 생성해주세요. 

그리고 Player, Plane을 3D 오브젝트로 생성해주세요. 

Player안에 리지드 바디, 스크립트, 그리고 콜라이더를 두 개를 넣어주세요.

Collider 충돌과 Is Trigger를 동시에 사용하기 위함입니다. 

 

 

▣ 그리고  Enemy 또한 리지 디바디까지 추가해주세요.

이건 폭발 효과에 힘을 받기 위함입니다. 

 

▣ 그리고 Layer메뉴에서 Add Layer로 레이어를 추가해줍니다.

이건 Tag과 동일하게 모든 오브젝트에 힘을 주면 메모리가 많이 사용되는 걸 방지하기 위해

보통 물리효과는 Layer로 구분을 하기 때문에 연습 삼아 레이어로 지정하겠습니다. 

 

▣ 이렇게 Enemy레이어를 추가해주세요.

 

 

▣ 그리고 Enemy오브젝트에 Layer를 Enemy로 변경해주세요.

 

▣ 이제 플레이어 스크립트에서 코드를 작성해보겠습니다.

저번장에 진행했던 파티클은 저번장과 동일하게 진행하겠습니다.

그리고 public LayerMask layerMask;로 변수를 지정해주세요.

직접 코드에서 작성해도 되지만 이렇게 스크립트를 지정하면

 

▣ 스크립트에 이렇게 Layer를 지정할 수 있는 메뉴가 생기게 됩니다.

여기서 Enemy로 지정해주세요.

꼭 스크립트를 저장하고 진행해주세요.

 

 

▣ 그런 다음에 OncollsionEnter() 함수를 작성해주세요.

이건 저번장을 참고해주시면 됩니다. 

 

▣ OnTriggerEnter() 함수를 작성해보겠습니다.

플레이어가 바닥으로 떨어지는 주위에 있는 오브젝트가 힘을 받는 걸 해보겠습니다. 

Physics.OverlapShere() 함수를 사용하겠습니다.

Physics는 물리효과에 대한 함수를 가지고 있습니다. OverlapShere() 함수는 

원 반경에 있는 콜라이더 값을 배열 형태로 반환해주는 함수입니다. 

다시 말해 OverlapShere(내 위치, 반경, layerMaks)로 지정을 하면

20미터 안에 있는 layerMaks에 지정되어 있는 Enemy라면 colliders 배열에 값을 반환하게 됩니다. 

 

▣ 그리고 for() 문으로 값을 하나하나 접근합니다.

enemyRid에 쌓인 상대방에 Rigidbody를 컴포넌트를 해주고

AddExplosionForce() 함수로 상대방에게 폭발 힘을 주게 됩니다. 

AddExplosionForce(전달 힘, 내 위치, 반경)을 입력해주시고 저장해주세요.

 

▣ 그런 다음에 확인하면 플레이어가 땅에 닿으면 Enmey오브젝트가 뒤로 밀리는 걸 확인할 수 있습니다.

 

▣ 여기서 다시 2000으로 값을 올리고 저장한 다음에 

 

▣ 플레이를 해보면 이렇게 Enemy 오브젝트가 많이 뒤로 밀리는걸 확인할 수 있습니다.

728x90
반응형

댓글