일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- heap tree
- C#
- Algorithm
- Back Tracking
- Ainimation Blending
- 플레이어 방향전환
- dp 알고리즘
- pccp 기출문제 1번
- 2D슈팅게임
- Lv.3
- Unity
- 충돌위험 찾기
- 양과 늑대
- 미로 탈출 명령어
- 연속 펄스 부분 수열의 합
- dfs
- CSharp #자료구조
- Animation State Machine
- LayerMark
- 백준 c++ 9375번
- 플레이어 이동
- pccp 기출문제 3번
- 오브젝트 풀링
- 9375번
- Hp바
- pccp 기출문제 2번
- Blend Type
- Lv2
- 프로그래머스
- 유니티
- Today
- Total
주녘공부일지
[ShootingGame] 11. 탄막을 뿜어대는 보스 만들기 본문
0. 준비하기
- 보스몹의 피격상태는 애니메이션으로 관리할 예정 // 트리거 매개변수 OnHit
- 돌아가는 트랜지션의 Has Exit Time 체크 // 컨디션이 따로 없기 때문
Any State : 언제나 실행되는 애니메이션
1. 총알, 적 보스 프리팹
적 기체가 Boss 일 경우
- Awake() : 애니메이션을 가져옴
- OnHit() : 애니메이션의 트리거 매개변수 OnHit 활성화 + 아이템을 드롭하지 않음
- OnEnable() : 보스체력세팅 + 지정된 위치에서 이동x // 2번
- Update() : 보스의 공격패턴은 따로 만들 것이므로 함수호출x
- OnTriggerEnter2D() : BorderBullet 태그에 부딪혀도 파괴되지 않음
+ 보스 총알 프리팹과 보스몹을 오브젝트 풀링에 등록 // GameManager의 enemyObjs도 추가
2. 패턴 흐름
패턴 흐름에 필요한 변수 선언
- patternIndex : 패턴 종류를 index로 가지는 변수
- curPatternCount : 현재 실행되고있는 패턴의 실행 횟수
- maxPatternCount : 패턴의 최대 실행 횟수 // 배열로 4개의 패턴 관리
+ Element 2 : 홀수로 설정해 플레이어의 이동 유발 // 3번
Stop() : 이동을 멈추는 함수
- 생성할때 호출되기 때문에, 비활성화상태에선 작동하지 않음
- 활성화 상태에서 호출 시, 이동을 멈춤 // 속력 = 0
- 이동을 멈춘 후 패턴을 실행시킬 Think() 호출
Think() : 패턴을 실행시킬 함수
- 패턴인덱스가 갯수를 넘기지 않게 0으로 돌아오는 로직을 작성 // 순서대로 호출됨
- 스위치문을 통해 각 패턴을 실행
3. 패턴 구현
- 패턴 카운팅 : 현재 패턴 실행 횟수가 최대 패턴실행 횟수보다 작으면 패턴을 다시 실행하고 아니면 다른 패턴을 호출시킬 Think() 호출 // 2,3,4번에도 똑같은 로직
- ranVec를 이용해 랜덤값을 설정하고 기존 방향에 더하여 범위 내에서의 랜덤한 샷건 구현
- dirVec에 최댓값에 1부터 시작하는 현재 카운트 값을 나누어 쏘는 방향을 이동시킴
- 부드럽게 쏘기 위하여 원주율을 곱하고, 상수를 곱해 방향 이동 속도 조절
+ 당연히 상수를 곱하지 않을 시엔 1에서 -1까지의 값을 한번씩 반환하게 됨
- roundNum에 짝수일땐 roundNumA, 홀수일땐 roundNumB 값을 저장
- dirVec의 x값에 cos, y값에 sin을 넣어 원의 형태로 발사
- 총알 갯수를 원주율 * 2 (원의 둘레) * for문 index를 나눔
- rotVec에 총알 갯수를 정면을 기준(forward)으로 360도 * for문 index로 나눈 값을 저장하고 Rotate()으로 발사하는 방향으로 회전시킴
// 원을 총알 갯수로 일정하게 자른 방향
Mathf.Cos() : 삼각함수 cos으로 각도에 따른 cos 값( -1 ~ 1 사이의 값)을 반환 // Mathf.Pi() : 원주율 값
https://docs.unity3d.com/kr/530/ScriptReference/Mathf.html
https://github.com/godgjwnsgur7/ShootingGame
강의 출처
https://www.youtube.com/watch?v=dnMVMBVpgYA&list=PLO-mt5Iu5TeYtWvM9eN-xnwRbyUAMWd3b&index=11
'GameDevelopment > [Unity] Lecture' 카테고리의 다른 글
[ShootingGame] 13. 게임 확장 - 편의성 개선 (조이스틱, 일시정지, 보스HP바, 등등) (0) | 2022.02.16 |
---|---|
[ShootingGame] 12. 마무리 구현 // 강의 내용 마무리 (0) | 2022.02.09 |
[ShootingGame] 10. 따라다니는 보조무기 만들기 (0) | 2022.02.03 |
[ShootingGame] 9. 텍스트파일을 이용한 커스텀 배치 구현 ( + 구조체 ) (0) | 2022.02.02 |
[ShootingGame] 8. 최적화의 기본, 오브젝트 풀링 (0) | 2022.02.01 |