일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 백준 1103번 c++
- 코딩테스트
- 코테
- C#
- Beakjoon
- 백준 17070번
- 2870번
- Algorithm
- 오브젝트 풀링
- 2870번 수학숙제 c++
- 유니티
- Lv.3
- Lv2
- 백준 17070번 c++
- 백준 1103번
- 수학숙제
- 백준 c++ 2870번
- 프로그래머스
- 2870번 c++
- 백준
- 백준 c++ 2468번
- 백준 2870번
- 백준 1103번 게임
- 2870번 수학숙제
- dfs
- 2468 c++
- 17070번
- c++
- 플레이어 이동
- Unity
- 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
Unity - 스크립팅 API: Mathf
Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. 닫기
docs.unity3d.com
https://github.com/godgjwnsgur7/ShootingGame
GitHub - godgjwnsgur7/ShootingGame
Contribute to godgjwnsgur7/ShootingGame development by creating an account on GitHub.
github.com
강의 출처
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 |