2011-12-07 2 views
2

저는 프로그래밍에 익숙하지 않고 현재 Android 용 간단한 게임을 만들려고합니다. 내가 겪고있는 문제는보기가 스크롤되는 방식입니다. 내 논리에 의하면, 스프라이트가 화면 중앙에 있어야한다고 생각하지만 그렇지 않습니다. 뷰가 스프라이트를 따르지 만, 그것이 맞는다면 같은 속도는 아닙니다. 보기에 뒤떨어지다. 그것은 천천히 달리고 있지 않다는 것을 그래서 나는 불안정하지 않다. 놀랍지 만 스크롤 사각형을 플레이어 x 위치와 동일하게 설정합니다. 디스플레이 너비를 지정하고 y 축도 동일하게 설정합니다. 그래서 여러분이 저를 도울 수 있기를 바라는 것은 스프라이트가 왜 화면 중앙에 머물러 있지 않은지를 파악하는 것입니다. 어떤 도움이라도 대단히 감사하겠습니다.스프 라이트를 따르기 위해보기 스크롤이 붙어 있습니다.

감사합니다. 스크롤 사각형의 새로운 왼쪽 상단을 설정

private static Rect displayRect = null; //rect we display to 
private Rect scrollRect = null; //rect we scroll over our bitmap with 

Display display = getWindowManager().getDefaultDisplay(); 
displayWidth = display.getWidth();    
displayHeight = display.getHeight(); 

displayRect = new Rect(0, 0, displayWidth, displayHeight); 
scrollRect = new Rect(0, 0, displayWidth, displayHeight); 

//

newScrollRectX = ((int)player.getXLocation() - (displayWidth/2)); 
    newScrollRectY = ((int)player.getYLocation() - (displayHeight/2)); 

//이 내 된 onDraw 방법이다, 그래서 플레이어가 그려집니다 직전에 업데이트

scrollRect.set(newScrollRectX, newScrollRectY, 
    newScrollRectX + displayWidth, newScrollRectY + displayHeight); 

// bmLargeImage는 1440X1440 배경입니다.

canvas.drawBitmap(bmLargeImage, scrollRect, displayRect, paint); 

canvas.drawBitmap(player.getBitmap(),(float)player.getX(player.getSpeedX()),  (float)player.getY(player.getSpeedY()), null); 

답변

0

내 첫 번째 추측은 정수 계산을 사용하고 있으며 대신 부동 소수점 계산을 사용해야합니다.

int test = 10/3; // == 3 
float test2 = 10/3.0; // == 3.33333... 

이렇게하면 '점핑'이 설명됩니다.


모든 안드로이드 전화가 FPUs인지 여부는주의하지 않습니다. 적절한 성능을 보장하려면 대신 fixed point calculations을 사용해야 할 수도 있습니다.

+0

빠른 응답을 고맙게 생각합니다. 점프하지 않습니다. 이 논리가 돌아올 것이라고 생각한 것처럼 스프라이트는 화면 중간에 있지 않습니다. 나는 float로 바뀌었고, 같은 문제 :/ – Jarryd

+0

'displayWidth/2'는 어떨까요? –

+0

운이 없습니다. 이 문제를 파악하는 데 도움이되는지는 모르겠지만 스프라이트는 배경 이미지보다 빠르게 움직이는 것 같습니다. 나는 개념을 이해하지 못하거나 매우 간단한 잘못 된 것이있다. 이 논리를 사용하면 화면 중간에 머물고있는 스프라이트가 떠오르므로 움직임이없는 배경을 제외하고 전혀 움직이지 않는 것처럼 보입니다. – Jarryd

관련 문제