-
[Unity Engine] 유니티로 퍼즐드래곤 만들기 - part22014.07.30 PM 11:05
1. 이전 보충 설명
UITable에서 실행하는 Rep-osition 관련 이슈를보자
이 부분을 보면 충돌시 서로의 좌표를 Swap 하고 board에게 Rep-osition 명령을 실행한다.
현재 잡고 있는 드롭까지 정렬을 하면서 문제가 생기는 것을 다음 동영상으로 확인할 수 있다.
Rep-osition의 내부 코드를 보면 Rep-ositionVariableSize 라는 함수가 있는데 virtual로 선언되어 있지
않은 것을 볼 수있다. 만든사람이 이건 override 하지 말라는 소리인데 이런 엔진 내부 코드는 절대 건드리지 않는게 좋다.
그래서 일단 virtual 함수인 Rep-osition을 override 하자
기본 아이디어는 새로운 List인 IgnoreRep-osition를 선언하고
해당 리스트에 있는 Element들은 Rep-osition 하기전에 좌표를 저장하고
Rep-osition 후에 저장된 좌표로 되돌리는 방법을 사용했다.
이렇게 설정해두고 Element 부분에서는 마우스로 집을때 해당하는 리스트에
자기 자신을 넣어주면 해당하는 Element는 Rep-osition을 무시하게 된다.
이렇게 하면 이전챕터 마지막에서 올렸던 동영상과 같은 동작을 하는 것을 볼 수 있다.
2. 이동 애니메이션.
일단 제목은 애니메이션이지만 한글로는 보간? 영어로는 easing이 필요한 부분이다.
간단히 말하면 특정한 두값을 시간의 흐름에 따라 변경하는 것을 말하는데
여기서는 코드를 쓰고 해당하는 코드를 설명하는 식으로 할것이다.
여기서 사용할 Unity 기능으로 Corotine(코루틴)을 사용할 것이다.
물론 NGUI에 Tween이라는 강력한 보간 라이브러리가 있지만 커스터마이징을 해야
쓰기편하기 때문에 그냥 코루틴으로 독자적인 코드를 사용할 것이다.
이것도 역시 모른다면 따로 공부하는 것을 추천한다.(외면..-_-)
이번에는 덮어두고 코드보자
이 코루틴 함수는 일반적인 함수호출과는 사용방법이 다른데
StartCorotine(코루틴함수명()); 이런식으로 사용하게 된다.
위 함수를 실행하면 코루틴 함수가 gameObject에 등록되게 되고
또다른 update문 처럼 작동하게 된다.
이제 Rep-osition 대신만들었던 코루틴 함수를 사용해보자
사실 만들면서 깨달은 생각이지만 Rep-osition 자체를 안하면
해당 예외처리를 안해도 되는 것을 깨달았는데
나중에 뭐 혹시 모르니 남겨 두자.
해당하는 코드는 목적지(dest)로 0.1초(duration)동안 이동한다는 의미이다.
여기서 Key 값이 추가되었는데 순간이동을 안하면 OndragOver함수가
여러번 호출되기 때문에 이를 막기위해서이다.
이제 실행시켜보자 자연스럽게 이동하는 것을 볼 수 있을것이다.
그런데 방금 퍼즐앤드래곤을 실행시켜보니 드롭이 아주 다이나믹하게 원을 그리며 움직이는 것을 볼 수있다.
이렇게 되면 일반적인 보간함수(slerp)로는 이런 이동이 불가능하다는 것을 알수 있을 것이다.
간단하게 설명하기 위해 그림판으로 그림을 그렸다.
여기서 검은색 원형으로 드롭이 움직인다고 생각을 해보자.
검은색 시작부분을 각도0도로 생각하면 검은색 백터의 보간은 다음과 같이 표현할 수있다.
웬만하면 이짤은 쓰기 싫었지만
아무튼 수학적 지식은 프로그래밍에 날개를 달아준다.
필자의 수능 등급은 수학2, 미분선택으로 5등급을 받았음을 밝혀둔다. -_-;
이제 다이나믹하게 움직이는 것을 볼 수 있다.
소스코드 : https://github.com/geniikw/copy-of-puzzleD/
내일까지 파.개를 할 수 있다면 단, 3일만에 퍼즐앤 드래곤의 프로토 타입을 만드는 것이 되는데
이런걸 보면 유니티와 NGUI가 좋은 툴인 것 같긴하다.
ps1. Rep-osition 안에 '-'이 자동으로 들어가는데 왜들어가는지 모르겠다.
ps2. SKT-S 떨어졌네 쩝...
ps3. 맙소사 롤챔스 보면서 하다보니 영상에 롤챔 해설이 포함되어 버렸다 -ㅁ- 지워야지
댓글 : 5 개
- 흠냐뤼
- 2014/07/30 PM 11:15
멋지군요!! 엔구이 짱짱맨
- 노란돗자리
- 2014/07/30 PM 11:17
야동 에니메이션으로 봤네...
- 잘자염
- 2014/07/30 PM 11:20
으헉;; 실망시켜드려서 죄송합니다. -ㅁ-
- 자웅을겨루자
- 2014/07/30 PM 11:29
크 결국 이 분야엔 수학이 필요하군요
- 작전개시!
- 2014/07/31 PM 04:22
유니티 공부중인데 도움이 될것같아 친구신청 드려요~!!!
user error : Error. B.