2008/07/23 - [NDS] - Sprite 처리에 관해 잠깐 든 생각...
위 글의 2번을 해결 한것이다.
뭐가 문제 였을까.
스프라이트를 클릭하면 PA_SpriteTouched(sprite) 함수로 처리하는데 스프라이트가 겹쳐져 있다면 모든 스프라이트에서 값을 반환 한다.카운트를 해보면
스타일러스 가 지정한 픽셀 아래에 있는 스프라이트마다 다 값을 반환하고있다. 그걸 모르고 하나가 걸리면 그게 다인줄알고 그것만 처리했으니 생성시 들어간 priority 순서따라서 선택될수 밖에.
2008/07/24 - [NDS] - SpriteExtPrio 함수 추가
설명전에 위 글에서 함수를 하나 추가하자.
대략 내용만 간추려서 설명한다면...
이런 함수는 아마 어디서 검색해보면 더 나은 코딩이 있을지도 모른다.
그래도 굳이 해보는건 찾아야하는 귀차니즘과 코딩 공부때문이라 하고싶다.
스프라이트와 스트라이프가 왜 헷갈리는건지...;;
위 글의 2번을 해결 한것이다.
뭐가 문제 였을까.
스프라이트를 클릭하면 PA_SpriteTouched(sprite) 함수로 처리하는데 스프라이트가 겹쳐져 있다면 모든 스프라이트에서 값을 반환 한다.카운트를 해보면
스타일러스 가 지정한 픽셀 아래에 있는 스프라이트마다 다 값을 반환하고있다. 그걸 모르고 하나가 걸리면 그게 다인줄알고 그것만 처리했으니 생성시 들어간 priority 순서따라서 선택될수 밖에.
2008/07/24 - [NDS] - SpriteExtPrio 함수 추가
설명전에 위 글에서 함수를 하나 추가하자.
대략 내용만 간추려서 설명한다면...
--- header --- int main() { PA_Init(); // Initializes PA_Lib PA_InitVBL(); // Initializes a standard VBL PA_InitRand(); PA_InitSound(); // Init the sound system PA_InitSpriteExtPrio(1); --- 중략 --- while (1) { if (Stylus.Newpress) { // 변수를 제일 큰수로 초기화 한다. 실제 스프라이트는 아니다. touch_sprite=99; touch_prio=99; for(i=0;i<15;i++) { //스프라이트 수만큼 다 돌린다. // i 스프라이트위를 터치했고 순위는 비교대상보다 상위면 if (PA_SpriteTouched(i) && touch_prio>PA_GetSpriteExtPrio(0, i)) { // 비교대상에 담아둔다. touch_sprite=i; touch_prio=PA_GetSpriteExtPrio(0, i); } } // 상위 순위(숫자는 0에 가깝다)인 스프라이트를 담고있다 if (touch_sprite!=99) { // 스프라이트 순위를 밀어낸다. for(j=0;j<15;j++) { tempPrio = PA_GetSpriteExtPrio(0, j); // 상위 스프라이트 순위 3번을 터치 // 비교에 따라 순위가 3보다 작다면(0, 1, 2) // 하나씩 +1 시켜 밀어낸다. // 결국 (1, 2, 3)이 된다. if(touch_prio>tempPrio) PA_SetSpriteExtPrio(0, j, tempPrio + 1); } // 3번 스프라이트를 0번으로 올린다. PA_SetSpriteExtPrio(0, touch_sprite, 0); } } if(PA_SpriteTouched(touch_sprite)) // Held 상태 { PA_SetSpriteXY(0,touch_sprite,Stylus.X-32,Stylus.Y-32); } PA_WaitForVBL(); } return 0; }
이런 함수는 아마 어디서 검색해보면 더 나은 코딩이 있을지도 모른다.
그래도 굳이 해보는건 찾아야하는 귀차니즘과 코딩 공부때문이라 하고싶다.
스프라이트와 스트라이프가 왜 헷갈리는건지...;;
'NDS' 카테고리의 다른 글
Palib 한글구현 처리 진행상황... (0) | 2008.07.26 |
---|---|
EunHye DS v1.0 수정본 (0) | 2008.07.24 |
SpriteExtPrio 함수 추가 (0) | 2008.07.24 |
이미지 Fade In/Out (0) | 2008.07.24 |
Sprite 처리에 관해 잠깐 든 생각... (0) | 2008.07.23 |