-
케이디 강의14 - (풀 파괴, 효과음, 이펙트, 오브젝트 변형)인프런 강의 - 케이디 생존게임 2022. 11. 15. 19:58반응형
public class Grass : MonoBehaviour { //풀 체력(보통 1) [SerializeField] private int hp; //이펙트 제거시간 [SerializeField] private float destroyTime; //폭발력 세기 [SerializeField] private float force; // 타격 이펙트 [SerializeField] private GameObject go_hit_effect_prefab; //##컴포넌트 요청## / *배열로 부르는 이유 여러 자식객체로 이루어진 오브젝트이기 때문 private Rigidbody[] rigidbodys; //중력 활성화용 private BoxCollider[] boxColliders; // 박스 콜라이더 활성화용 [SerializeField] private string hit_sound; void Start() { rigidbodys = this.transform.GetComponentsInChildren<Rigidbody>(); boxColliders = this.transform.GetComponentsInChildren<BoxCollider>(); } public void Damage() { hp--; Hit(); if (hp <= 0) { Destruction(); } } private void Hit() //이펙트,사운드 재생 { SoundManager.instance.PlaySE(hit_sound); var clone = Instantiate(go_hit_effect_prefab, transform.position + Vector3.up, Quaternion.identity); //프리팹 생성, 위치는 약간 위에서 생성, 회전값 기본값으로 Destroy(clone, destroyTime); //생성된 프리팹 삭제 } private void Destruction() // 리지드바디, 박스콜라이더 활성화 { for (int i = 0; i < rigidbodys.Length; i++) //rigidbodys의 배열 길이만큼 반복 { rigidbodys[i].useGravity = true; // 중력 체크사항을 켜줌 rigidbodys[i].AddExplosionForce(force, transform.position, 1f); //폭발하는 힘 추가(폭발세기, 폭발위치, 폭발반경(이 안에 들어온 객체들이 날아감) boxColliders[i].enabled = true; // 콜라이더 컴포넌트를 활성화 상태로 만들어줌 } Destroy(this.gameObject, destroyTime); //풀 오브젝트 삭제 } }
풀 코드
지난 강좌와 거의 동일한 내용이였다.
이미 사운드 매니저를 만들어 놓았기때문에 크게 손이 가는 부분은 없었고
데미지 호출 함수는 도끼에서 불러오도록 하였다.
hitInfo.transform.GetComponent<Grass>().Damage();
ㅡㅡ
지난번과 다른점은
grass 오브젝트 자체가 이미 나누어져 있는데
해당 오브젝트에
rigidbody와 collider를 부여 후
collider의 경우는 비활성화,
rigidbody의 경우는 Use Gravity 항목을 비활성화 하여서 형태를 유지하게 만들었다.
그 후 스크립트에서
rigidbody와 collider를 각각 배열로 불러오고
start 함수에서
GetComponentsInChildren를 이용하여 모든 자식객체의 컴포넌트를 획득하였다.
획득한 배열로
for문을 돌려 (자식객체의 수는 같으므로 rigidbodys.Length를 사용하였다.)
useGravity = true == Use Gravity 항목 활성화
enabled = true == 컴포넌트 활성화
를 통해서 활성화 시켜주었다.
추가적으로
AddExplosionForce(force, transform.position, 1f); 를 통해서 풀 오브젝트들이 조금 흩어지게 만들었다.
반응형'인프런 강의 - 케이디 생존게임' 카테고리의 다른 글
케이디 강의16 - (스테이터스, 아이템 오브젝트, 인벤토리) (0) 2022.11.26 케이디 강의15 - (나무 파괴, 효과음, 이펙트, 오브젝트 변형) (0) 2022.11.16 케이디 강의13 - (나뭇가지 파괴, 효과음, 이펙트, 오브젝트 변형) (0) 2022.11.15 케이디 강의12 - (사운드 매니저 생성, 싱글톤) (0) 2022.11.14 케이디 강의11 - (바위-공격을 통한 이펙트와 파괴 구현) (0) 2022.11.14