2009-05-15 6 views
1

문자가 타일에있는 곳으로 이동하려고합니다. 위아래로 움직이면 다음 타일로 이동하지만 그 방법을 모르겠습니다. 지금은 캐릭터가 픽셀 단위로 움직이는 위치를 설정했지만 1 칸씩 움직이기를 원합니다.개요 rpg 바둑판 식 배열

코드는 지금이 코드이며 작동하지만 픽셀 모드에서는 이상합니다. 나는 그것이 블록에 의하여 더 나을지도 모르지만 나는 어쨌든 그것을 바꿀지도 모른다 것을 나는 믿는다.

float spritewidth = sprite->stretchX; 
float spriteheight = sprite->stretchY; 
float bushwidth = bush->stretchX; 
float bushheight = bush->stretchY; 
//Basic border collision 
if (sprite->x <= 0) 
sprite->x = 0; 

if (sprite->y <= 0) 
sprite->y = 0; 

if (sprite->x >= 455) 
sprite->x = 455; 

if (sprite->y >= 237) 
sprite->y = 237; 

if ((sprite->x + spritewidth > bush->x) && (sprite->x < bush->x + bushwidth) && (sprite->y + spriteheight > bush->y) && (sprite->y < bush->y + bushheight)) 
{ 
     bushcol = 1;    
} 
else 
{ 
     bushcol = 0;  
} 

if (osl_keys->held.down) 
{ 
if (bushcol == 1) 
{ 
sprite->y = bush->y - spriteheight - 3; 
     bushcol = 0; 
} 
else 
{ 
     bushcol = 0; 
     sprite->y += 3; 
} 
} 
if (osl_keys->held.up) 
{ 
if (bushcol == 1) 
{ 
    sprite->y = bush->y + bushheight + 3; 
    bushcol = 0; 
} 
    else 
{ 
     bushcol = 0; 
     sprite->y -= 3; 
} 
} 
if (osl_keys->held.right) 
{ 
if (bushcol == 1) 
{ 
    sprite->x = bush->x - spritewidth - 3; 
    bushcol = 0; 
} 
    else 
{ 
     bushcol = 0; 
    sprite->x += 3;} 
} 
if (osl_keys->held.left) 
{ 
     if (bushcol == 1) 
{ 
    sprite->x = bush->x + bushwidth + 3; 
    bushcol = 0; 
} 
    else 
{ 
     bushcol = 0; 
     sprite->x -= 3; 
} 
} 
+0

그리고 질문은 무엇입니까? –

+0

더 많은 정보를 사용할 수 ... 부시 대통령과 스프라이트에 대한 수업을 보여줄 수 있습니까? 또한 타일은 픽셀 모음이므로 작은 눈금에서 작동하지 않으면 큰 눈금에서 작동하지 않을 수 있습니다. –

답변

2

당신이 캐릭터가 바로 스프라이트를 픽셀 수를 이동, 한 번에 하나 개의 타일/평방/블록을 이동하려면 타일 폭 (또는 높이)입니다.

const int tile_width = 32; // or something 

// and then 
sprite->x += tile_width; 
관련 문제