* Dongle과 GameManager 2개의 스크립트 사용.
- 변수 설정.
- [Header]는 유니티 인스펙터상에서 더욱 구분지어 확인할 수 있게 해줌.
- [Range()]는 public 변수값을 범위내에서 스크롤로 결정할 수 있게 해줌.
* 마우스 포인터 따라 이동.
- 클릭 하는 동안 드래그, 이후 드래그 bool값 변수를 두어 이동이 되지 않게 함.
- rigid.simulated는 물리효과 활동에 관여하는 기능을 하며, false로 해주면 드래그 중 오브젝트가 떨리지 않음.
- Lerp(출발위치, 목적위치, 이동속도 혹은 시간), 부드럽고 천천히 이동하게 해주는 함수.
* 프리펩, 오브젝트 풀링을 이용한 오브젝트 생성. (이펙트 오브젝트도 풀링 진행.)
- 오브젝트에 랜덤한 범위의 level 변수를 설정, 애니메이션 파라미터를 int변수로 설정한 뒤에 애니메이션으로 오브젝트 종류 구현.
- 동글은 프리펩으로 저장하고 오브젝트 풀링으로 정리 및 구현.
1) 오브젝트 풀링으로 프리펩 생성 함수 구현.
- List<>, Instantiate를 사용하여 생성 후 저장.
Awake 단계에서 실행하여 오브젝트 비활성화로 보관. (동글은 프리펩 자체로 비활성화로 저장.)
- WaitNext 함수는 다음 동글이가 생성되기까지 시간차이를 주는 역할.
(코루틴에 while문이 들어가면 update의 역할을 해줄 수 있음.)
2) 풀링으로 생성된 오브젝트 정보를 가져오고, 다음으로 활성화 될 오브젝트를 정함.
- 게임 시작 버튼, onClick으로 실행되는 GameStart 함수 내에 Invoke 함수를 통하여 시간차로 생성시킴.
* 동글이 합쳐졌을 때, 레벨업 및 동글이 사라지게 하는 함수 구현.
- 합쳐지는 것은, 조건을 달아줌.
레벨이 같을 때, 이미 떨어진 other와 지금 떨어지는 중인 me와 비교하여 x축, y축 위치에 대한 조건을 달아줌.
- 합쳐지게 되면 other는 Hide 되어야 함.
- Levelup, Hide에 대한 함수를 생성해 놓고 OnCollisionStay2D에서 사용.
- 시간 차이를 줘야 하는 곳에서는 코루틴 함수를 이용.
* 이펙트 함수 구현.
- 파티클을 이용하여 이펙트 생성.
- 동글이 합쳐질 때, 활성화 시킴.
- 오브젝트 풀링으로 미리 생성시켜 놓고, 동글이와 1개의 Set가 되어 작동하도록 구현. (오브젝트 풀링 사진 참고)
* 게임 오버 구현.
- 경계선에 닿으면 붉은색으로 변했다가, 더 시간이 경과하면 게임 오버 되는 것으로 구현.
(게임 오버되기 전에 경계선에서 떨어지게 되면, 다시 원래 상태로 되돌아오도록 함.)
- 게임 오버 되면, 장면 안에 활성화 되어 있는 동글이들의 대한 오브젝트를 모두 가져온 후에 물리효과를 비활성화 시킴.
그리고 화면에서 보이지 않는 위치로 이동 시킨 후에, 오브젝트 사라지는 함수에 연결 시킴.(이펙트 구현)
* Best Score, 최고 점수 구현
- 게임 오버 되면 나오는 화면에서, 최고 점수를 갱신하면 Best 표시와 함께 점수 갱신.
- Playerprefs 함수 사용.
(게임 오버에서 점수 저장, Awake 단계에서 저장된 점수를 다시 가져옴.
조건문을 이용하여 이미 저장되어 있는 HasKey가 없다면 최고 점수를 0으로 저장.)
* 사운드
- Audio Source가 여러 개이면 사운드가 여러개 동시에 재생 될 수 있음. (중복으로 사운드 효과 가능.)
- SfxCursor라는 변수를 사용하여 Audio Source가 반복적으로 사용되게 함.
sfxcursor = {sufcursor+1) % sfxPlayers.Lenghth;
변수에 1을 더한 값에 배열의 길이를 나누어 나머지를 다시 변수에 저장하는 것으로.
배열 길이가 3이라면, 0~2까지의 값이 반복되게 됨.
(나머지를 사용하는 이 방법은 반복적으로 배열을 실행해야 할 때에 유용하게 사용할 수 있음.)
- Audio Clip, Auido Source 모두 배열로 생성하여 진행.
* Rigidbody의 InterPolate는 이전 프레임과 비교하여 움직임을 더욱 부드럽게 보정해줌.
* Rigidbody의 Sleeping Mode는 물리연산을 멈추고 쉬는 상태모드를 설정하는 것.
(멈추지 말고 작동해야 할 때에는 꺼주는 것이 좋다.)
* [Header], [Range()] 등 속성지시자라는 것이 있음.
* 경계선이 표시되지 않는 오류 발생.
-> Order in Layer를 높여주어 해결
* 게임 오버시, 동글이들이 사라지지 않음.
- 해결 필요.
댓글