2012-07-16 2 views
0

XNA에서 Tile-Base Movement를 만들려고했으나 어떻게해야할지 모르겠다. 내 타일은 32x32이고 스프라이트는 같은 크기입니다.타일 기반 이동

if (Keyboard.GetState().IsKeyDown(Keys.Up)) 
    { 
     Position.Y -= Speed.Y; 
    } 
    if (Keyboard.GetState().IsKeyDown(Keys.Down)) 
    { 
     Position.Y += Speed.Y; 
    } 

... 그리고 다른 두 키와 같은 :

내가 스프라이트를 이동하는 데 사용하는 코드입니다.

내 스프라이트가 매끄럽게 움직 이길 원하지만, 정확한 타일은 타일에 "점프"하지 않습니다. 나쁜 영어로 죄송합니다. 감사드립니다.

답변

0

경과 한 시간을 기준으로 스프라이트의 위치를 ​​변경해야합니다.

속도가 초당 32px이고 경과 시간이 60 초 (60fps) 인 경우 업데이트 당 스프라이트 32 * (1/60) 픽셀 만 이동해야합니다.

Update(GameTime gameTime) 매개 변수를 사용하면 마지막 업데이트 이후 경과 한 시간이 표시됩니다.

+0

그래도 키를 누르지 않으면 스프라이트가 움직이지 않고 다른 타일에는 도달하지 않습니다. 속도 : 32 * gameTime.ElapsedGameTime.TotalSeconds; – Isheros

+0

키를 누를 때가 아니라 목표 위치를 설정해야합니다. 따라서 목표 위치를 나타내는 필드를 설정하고 해당 값에 도달 할 때까지 계속 이동하십시오. –

관련 문제