목차
Patrol 기능 구현
Patrol 기능
Move 안에서 Patrol State 를 뽑아도 되고,
패트롤 => 내가 랜덤으로 찍어준 값으로 이동해야하는데
내가 찍어준 값으로 이동가능한지 체크해야함
이동가능한지 체크 할 수 있는 네브메시 메소드
네비메쉬가 움직일 수 있는 위치를 가능한지 판단해주는 함수 구현
함수를 만들어보자!
네임스페이스 Using System; 을 지워줌!
Random 함수의 기능을 UnityEngine 네임스페이스꺼를 사용하고싶기 때문에!
근데 이렇게 하면 지점에 갔다가 다른곳을로 가는게 아니라,
계속 찾고 있음.
지정했던 지점에 도착 한 후, 그 다음 지점 을 찾게 해야함!
아직 이동할 곳을 못찾았다면
이동할 곳을 계속 찾고
찾으면
움직이게 해야함
여기서 Mission
사이 각을 구하면 됨!!
내적을 취하면 cos(theta) 값을 구할 수 잇음!
이 코사인의 부호만 사용하면 됨!
즉, 코사인의 부호가 양수이면 -90~90 인거임!
이렇게 else 에 페트롤을 뺄 수도 있음!
그리고 if문에 거리와 내적값을 넣어줘서
구조를 따로 짤 수 있음!
좀더 가시적으로 볼 수 잇게 DrawLine 으로 그림!!
(참고)
Occulusion Culling (최적화)
복잡도가 늘어나버리면 성능이 떨어짐!
그래서 이럴 때 속도와 성능을 어떻게 조절 할 수 있을까에 대해서 알아보자!
보이지 않는곳은 안그리게 해보자!!
culling (최적화)
시야 밖에 있는것들은 안그려 버림
근데 안보이는데도, 시야 안에 있으면 굳이 그림...
차폐되서 가려진 애들을 culling 하는 기법이 있음!
이게 Occulusion Culling 이다!
Environment 에 다 넣고
다 Static 체크 하고 네비게이션으로 처리!
원래는 기획적으로 봤을 때는 미리 위치를 찍어서 배열값으로 넣어주어 랜덤으로 뽑아서 쓰는게 훨씬 낫다!
오컬루젼 테스트를 위해서 이걸 그냥 true 로 바꿔보자!
차폐된곳은 안그리게 해주자!!
와.. 대박
장단점.
CPU가 알아서 해주는데, 덩어리가 클수록 알아보기 쉬울텐데
오브젝트가 작아지면 작아질 수록 CPU 가 연산량이 많아짐.
그렇기 때문에 오픈월드인데, 자잘한게 많으면 오히려 오래걸리게 됨!
View Frustum 컬링
Far 값을 늘리면 알다시피 멀리까지 보는 시야가 늘어난다!
큰박스 안에 작은 박스를 하나 넣어놨다.
Near 값을 늘리면
저기 박스 안에 있는 박스도 볼 수 있고
이렇게, Culling 에 Near, Far 를
그냥 카메라를 가까이 , 멀리 시키는게 아니라
응용해서 좋은 효과를 구현 할 수 있다!
이런 연습을 많이 해보자!
'3D_FPS' 카테고리의 다른 글
8_19 (Camera Shake_Animation) (0) | 2022.08.19 |
---|---|
8_18 (속성 사용) CameraShakeBase,CameraShake, CS_Random, CS_Sine (0) | 2022.08.18 |
08_16 애니메이션 IK , NevMesh (0) | 2022.08.16 |
08_12 Player 애니메이션 구현. Move, Attack, CrossFade (0) | 2022.08.13 |
08_11 (코루틴의 전반적인 설명, Damage() 코루틴으로 구현) (0) | 2022.08.12 |