1. Attak 상태 만들기
1) 이름이 OnAttack인 Trigger를 Prameter로 만듦
- Trigger는 true,false 할 필요없이 선택만하면 넘어가도록 함
2) Idle상태를 선택하고 Attack 상태와 서로 연결 (Make Transition)
3) Run 상태에서 Attack 상태로 가는 선 서로 연결
4) Idle > Inspector > Condition > OnAttack Trigger 선택
- Has Exit Time 체크 해제
5) Player_Attack 스크립트 만듦
6) Player_Idle.cs 에 코드추가
7) Player_Run.cs 에 코드추가
2. 적만들기
1) create empty > "Enemy"
2) trasnform Reset 후 Z : 15
3) Add Component - capsule collider, rigid body 추가
4) 축이 바뀌지 않도록 Freeze Rotation 세 좌표 모두 체크
5) Enemy layer 생성 후 설정
6) 다운받아놓은 데모 모델을 Enemy의 자식으로 연결
7) 데모 프리팹의 위치를 리셋한뒤 Scale (1.5 1 1.5) - (스케일을 키우게되면 충돌박스도 키워야함!!)
8) 부모인 Enemy의 설정도 모델에 맞춰서 키워줌
3. 적 Animator 만들기
1) Animator 폴더 > create > animator controller > 이름 : "Enemy" 생성
2) 만든 Enemy animator controller와 데모모델을 연결 (드래그앤드롭)
3) Enemy 더블클릭 후 위에서 했던 방법과 같이 Idel state 추가함
4) Inspector > motion - DS_onehand_idle_A 설정
5) "Walk" state 생성 Inspector > motion - DS_onehand_walk
6) Idle -> Walk 로 Make Trasition
7) parameter 창에서 Trigger로 "OnWalk" 만들기
8) 트랜지션 화살표 선택후 condition > + > OnWalk
- Has Exit Time 체크해제
9) add behavior > Enemy_Idle 생성
10) 코드 작성
11) walk state 누른 후 add behaviour로 "Enemy_Walk" 생성
12) 코드 추가
- 적이 자기 의지대로 움직이면 성공
- 애니메이션 속도가 느려졌는지 확인
4. 적 Chase
1) Chase state 만들고 DS_onehand_walk로 연결
2) transition 연결과 parameter
3) condition > IsChase > true, Has Exit Time 체크 해제
4) walk -> chase Make Transition
- condition > IsChase > true , Has Exit Time 체크 해제
5) chase -> Idle Make Transition
- condition > IsChase > false, Has Exit Time 체크 해제
6) Enemy_Chase 라는 이름으로 Add Behaviour
7) 코드 작성
5. 적 Attack
1) attack state 생성
2) Make Transition
- state가 많아지면 FSM 프로그램은 관리하기가 어려워짐
3) bool형 IsAttack()을 만들고 Attack condition에 추가.
4) Attack -> Chase 로 Transition 해주고 IsAttack false 추가
5) Enemy_Attack 스크립트 생성 (add behaviour)
6) 코드 작성
7) DS_onehand_Attak의 Loop Time을 체크해줌 (처음엔 비활성화 되있는데 Edit 클릭)
6. Player Animation Event 처리 (애니메이션의 특정시점을 함수랑 연동하기 위함)
1) "PlayerModelController.cs" 생성 후 RPGHeroPBR 모델과 연동
2) 코드 작성
7. Enemy Animation Event 처리
1) "EnemyModelController.cs" 만든 후 모델과 연동
2) 코드 작성
3) Read-only로 rock을 걸어놓았음 - DS_onehand_attak_A
4) 그렇기때문에 따로 edit 으로 가서 설정
5) 코드 작성~~~
6) 실행해보면~~~~ 됨~!
'Unity' 카테고리의 다른 글
0704 GameRTS (0) | 2019.07.04 |
---|---|
0703 Game RTS (0) | 2019.07.04 |
0702 Animation programming (0) | 2019.07.02 |
0701 데이터 관리 (0) | 2019.07.01 |
0625 Projectile 만들기 (발사체) (0) | 2019.06.25 |