▣ 안녕하세요. 이번장에서는 폭발 효과
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 오브젝트가 많이 뒤로 밀리는걸 확인할 수 있습니다.
'[ Unity ] > - 유니티 실습' 카테고리의 다른 글
유니티 - [회전과 방향 전환] (0) | 2022.04.20 |
---|---|
유니티 - [rotation, LookRotation, Quaternion, Slerp] (2) | 2022.04.07 |
유니티 - [Destroy, ParticleSystem, GetComponentInChildren] (0) | 2022.03.27 |
유니티 - [글로벌좌표, 로컬좌표, 이동, Space.World] (0) | 2022.03.21 |
유니티 - [AddForce와 Velocity 차이] (2) | 2022.03.16 |
댓글