Unity 강의/Unity Course(2) - 절대강좌! 유니티
[Unity Course 2] 05. 총 발사 로직 4
첨부엉.
2024. 6. 20. 17:06
반응형
위키북스 출판사 이재현 저자님의 '절대강좌! 유니티' 책을 참고하여 필기한 내용입니다.
폭발 효과 및 폭발력 생성

import 해서 받은 Barrel에셋 모델을 씬 뷰에 드래그 앤 드롭
미리 만들어진 Barrel의 프리팹은 삭제하고 모델로 작업
Scale Factor
외부에서 임포트한 3D모델은 반드시 Transform의 Scale 속성을 조절하지 않고 FBX Import Setting의 Scale Factor 속성을 수정

하이어라키 뷰에서 Barrel에 Rigidbody와 Capsule Collider 컴포넌트를 추가하고 아래와 같이 속성을 변경한다.


Wall에서 사용했던 RemoveBullet 스크립트를 추가하고 SparkEffect도 연결한다.
드럼통은 총알을 3발 맞았을 때 폭발하는 코드 BarrelCtrl 이라는 스크립트를 새로 생성하고 다음과 같이 작성
using UnityEngine;
public class BarrelCtrl : MonoBehaviour
{
// 폭발 효과 파티클을 연결할 변수
public GameObject expEffect;
// 컴포넌트를 저장할 변수
private Transform tr;
private Rigidbody rb;
// 총알 맞은 횟수를 누적시킬 변수
private int hitCount = 0;
private void Start()
{
tr = GetComponent<Transform>();
rb = GetComponent<Rigidbody>();
}
// 충돌 시 발생하는 콜백 함수
private void OnCollisionEnter(Collision coll)
{
if(coll.collider.CompareTag("BULLET"))
{
// 총알 맞은 횟수를 증가시키고 3회 이상이면 폭발 처리
if (++hitCount == 3)
ExpBarrel();
}
}
// 드럼통을 폭발시키는 함수
void ExpBarrel()
{
// 폭발 효과 파티클 생성
GameObject exp = Instantiate(expEffect, tr.position, Quaternion.identity);
// 폭발 효과 파티클 5초 후에 제거
Destroy(exp, 5.0f);
// Rigidbody 컴포넌트의 mass를 1.0으로 수정해 무게를 가볍게 함
rb.mass = 1.0f;
//위로 솟구치는 힘을 가함
rb.AddForce(Vector3.up * 1500.0f);
// 3초 후에 드럼통 제거
Destroy(gameObject, 3.0f);
}
}

Exp Effect에는 SmallExplosionEffect 를 연결해준다. 이 이펙트도 모두 반복하기 때문에 Open Editor로 들어가서 Looping을 모두 해제해준다.

하이러키 뷰의 간략화
지금까지 만든 Barrel 오브젝트를 프리팹으로 만든다.
하이러키 뷰에 빈오브젝트인 "STAGES"를 생성한다.

이렇게 여러개의 Barrel을 복제하고 STAGES 오브젝트의 하위로 넣어준다.
반응형