1.보스F 프리팹 만들기
- 기존의 보스 프리팹의 텍스쳐만 바꿔주어 보스F프리팹을 생성
2.Enemy 스크립트 수정
- 보스F 인경우 Enemy 스크립트에서 기존의 보스인경우만 제외했던 로직들에 보스F인 경우도 추가하기 위해
일반 몬스터 타입과 보스타입 2개로 나눔(이 과정에서 NONE 타입을 추가 해야했던 이유)
- 기존에 보스타입인 경우를 제외하고 실행되어야 했던 함수(return)는 ||를 써서 보스F타입을 추가해주면 되었고
기존에 보스탑입인 경우에만 발동시켜야 했던 함수는 &&를 써서 보스F타입을 추가해주어야 했다
3. Boss스크립트 수정
- 보스패턴을 생각하는 Think()함수에 기존의 돌굴리기 공격에 보스F타입인 경우 레이져 공격을 하도록 하였고
4. 레이저오브젝트 생성
- 레이저오브젝트의 자식으로 여러 레이저 관련 라인렌더러 및 파티클이펙트를 활용, 애니메이션을 활용하여
레이저오브젝트를 보스F프리팹의 하위 자식오브젝트로 넣어줬다
5.RazerSc스크립트 생성
- 레이져 오브젝트를 활성화 시키는 것만으로 레이져가 나가도록 4의 레이저 오브젝트에
RazerSc라는 스크립트 까지 넣어줬다
- 자식오브젝트들의 애니메이션을 컴포넌트 창으로 드래그 앤 드랍할 수 있도록 Animator 를 public 해주는
과정에서 경고선과 달리 실제 레이져 이펙트를 담당하는 애니메이션을 가진 여러 레이저 관련 자식 오브젝트
들을 배열로 묶어 주었다
- 애니메이션에 trigger를 주어 해당 애니메이션이 비활성화에서 활성화 될 경우 1회만 정상적으로 실행되도록
코드를 만져주었다
*Animator.GetCurrentAnimatorStateInfo(0).IsName("애니메이터 레이어 이름. 애니메이션State이름")
현재 진행중인 애니메이션 상태를 확인할때 사용한다
*더불어 현재 애니메이션 종료를 체크하는 것까지
=> Animator.GetCurrentAnimatorStateInfo(0).normalizedTime < 0~1 : 0~1의 의미는 애니메이션 진행률(0%~100%)
참고: blog.naver.com/showmeii1201/221188307687
[Unity]00.애니메이터(Animator)& 애니메이션 클립 종료 체크하기
이번에는 애니메이터에있는 애니메이션클립 이라고 해야할까요? 애니메이터에서 사용하는 애니메이션종료시...
blog.naver.com
6.Boss스크립트 수정
- 위에서 만든 레이져 오브젝트를 활성화 하는 것만으로 이펙트가 발생하도록 RazerAtc 코루틴을 구현해주고
- 보스가 레이져를 발사하면서 천천히 플레이어를 바라보도록 Quaternion.Slerp()를 활용하여 구현해준다
*회전에 관하여 => 참고 yooncoding.tistory.com/281
Unity- 회전
acecome.tistory.com/entry/01-Unity3D-%ED%9A%8C%EC%A0%84-%EC%A0%95%EB%A6%AC-transformLootAt?category=601710 01. Unity3D 회전 정리 [transform.LookAt] 오브젝트의 회전을 담당하는 euler , Quaternion 개념..
yooncoding.tistory.com
7.레이져 피격 구현
- 기존 4의 레이저 오브젝트의 자식오브젝트중 실제 레이져를 맡고 있는 RazerEdge오브젝트에
새롭게 BossRazer라는 Tag를 추가해주고, 기존의 Bullet 스크립트를 추가해주었으며
Bullet 스크립트의 bulletType에 BossRazer를 추가해주고 해당 Tpye으로 설정 및 damage를 1로 설정,
콜라이더 컴포넌트를 추가해주고 istrigger 체크, 기본 비활성화설정, 애니메이션으로 RazerEdge오브젝트의
라인렌더러 컴포넌트와 함께 Enable, disable되도록 애니메이션을 수정해주었다
- Player 스크립트의 OnTriggerStay()에서 만약 플레아어가 위에서 만든 레이저오브젝트의 RazerEdge
오브젝트에 맞아서 트리거상태이면 isdamaged를 true로 하고 HP를 레이저데미지인1만큼 계속 깍아내고
캐릭터를 노란색으로 만든다 , 플레이어 뒷방향으로 지속넉백을 준다
- Player 스크립트의 OnTriggerExit()에서는 위 레이저오브젝트에서 벗어나면 is damaged를 false로 하고
다시 플레이어를 하얗게 만든다
완)
'Unity > Unity3D_Quater' 카테고리의 다른 글
Unity3D_Quater - 777슬롯머신 만들기 (0) | 2021.04.26 |
---|---|
Unity3D_Quater - 룰렛만들기 (0) | 2021.04.25 |
Unity3D_Quater - 몬스터공경 경고라인, 3쿠션 공격 만들기 (0) | 2021.04.16 |
Unity3D_Quater - 몬스터HP 부드럽게 감소시키기, HP감소 잔상 만들기 (0) | 2021.04.12 |
Unity3D_Quater - 플레이어 단위체력바 만들기 (0) | 2021.04.12 |