프로그래밍/Unity 72

오브젝트 풀링(Object Pooling)

2016.07.18. 17:02 오브젝트 풀링(Object Pooling) 사용할 객체를 미리 만들어 놓은 후 필요할 때 가져다 사용하는 방식. 모바일 플랫폼에서 게임오브젝트 또는 프리팹을 동적으로 생성하는 작업은 물리적인 부하가 걸린다. 따라서 주기적 또는 반복적으로 생성하는 객체는 씬이 처음 로드할 때 모두 생성한 후 사용하는 방식이 속도면에서 유리하다.

Delegate

2016.07.13. 19:41 Delegate 델리게이트는 함수를 가리키는 변수라고 생각하면 이해하기 쉽다. 이벤트를 정의 하려면 델리게이트를 이용해 이벤트 함수의 원형을 선언해야 한다. public delegate void 델리게이트명(인자); public static event 델리게이트명 이벤트명; 아래 코드는 선언부에서 델리게이트를 선언하고 델리게이트 변수에 함수를 연결한 후 실행한다. 매번 호출방식으로 SendMessage를 사용했지만 비효율적인거 같아서 이벤트 구동방식으로 변경...했는데. 이전에 알고있던 거랑 달라서 .. 익혀둬야지.

2016.07.12. 20:11

emission, normal map 적용. 실시간 그림자. 후에 projecter - plane mesh으로 바꿈 + 카메라/발사궤적효과/충돌시 파티클추가 ..etc 카메라를 이동시키니 어지럽다 그냥 캐릭터가 도는게 나은거같아 Min Distance 볼륨 100%값으로 음원이 들리는 영역 범위 : 작은 원 Max Distance 음원이 들리는 최대 영역범위 : 큰 원 muzzle Flash. FPS 게임또는 숄더 뷰(Shoulder View)게임에 적합한 총구화염으로. blood Decal이랑 blood Effect. 총을 맞은 곳에는 particle을 이용한 혈흔 효과, 그리고 바닥에 뿌려지는건 plane mesh를 이용한 혈흔 데칼. + 몬스터 애니메이터/상태 조절, 총알 사운드 , barrel 폭..

tilemap_navmesh

2016.06. 현재 유니티는 게임도중 동적으로 메쉬를 못 굽는다. 그래서 커다란 맵에 대한 하나의 nav mesh를 가진 뒤에 실제 돌아다닐 맵부분의 바깥에 위치한 부분들은 nav mesh에서 마스킹.(가림) 쿼드를 추가하고 맵생성기에서 크기제어, Bake한후 장애물들을 nav mesh에서 마스킹해서 적들이 장애물들은 통과하지 못하게. 몹들이 맵밖으로 나가거나 지름길로 다니거나 하지않게 가장자리까지 마스킹. *동적으로 잘리고 남은 nav mesh가 잘 안맞으면 타일크기를 조정하고나, Bake에서 Agent Radius를 조정하면 된다. 잘라낸 빈공간은 Carve Hole 이라고한다. 단, Agent Radius를 너무 작게하면 Path를 찾는 계산 시간이 증가된다는 에러가 뜨기때문에 0.45~0.4정도만.

AngryBot_0)

2016.02.20. 17:57 기본속도랑 키보드 동작시 움직이는방향으로 바라보는 것까지 저~~번에하고 오늘은 애니메이션,이랑 총알발사 등등. player가 가지고있던 애니메이션 클립을 넣어주면 끝. shotPoint는 총알이 발사되는 지점 shotFX는 총알이 발사될때의 이펙트 Main Camera - Add Component - audio - audio listener 추가 private AudioSource ShotAudio 추가. AddComponent로 Audiosource를 가져오고 한번 눌렀는데 여러번 소리나지 않도록 loop는 false로 설정 주석처리 된 부분이 이전 버전거. 0.15초 정도 딜레이를 주려고 WaitForSeconds. 사운드가 플레이 된 후 ShotFX변수를 한번 활성화..

Physics.IgnorCollision

2016.02.20. 18:37 Physics.IgnorCollision 특정 오브젝트의 충돌을 무시하고자 할 때 사용되는 스크립트. Physics.IgnoreCollision(☆.GetComponent(), ★.GetComponent()); ☆은 충돌체1, ★은 충돌체2 예를 들어 총알을 발사하는 player가 총알이 발사될때 뒤로 밀릴때 Physics.IgnoreCollision(bullet.GetComponent(), GetComponent()); 이렇게 한줄을 추가해주면 끝. 만약 Rigidbody 상태를 비활성화 할 경우, 해당 스크립트를 또 한번 호출해야한다.