2013-07-23 2 views
0

2d 광부/어드벤처 게임을 만들고 있는데, 태양이 화면을 가로 질러 움직이게하려고합니다.일정 기간 동안 스프라이트를 움직입니다.

어떻게 작동해야합니까? 시간은 A 지점 (화면 왼쪽 상단)에서 B 지점 (화면 오른쪽 상단)까지입니다.

나는 수학을하는 법을 알았지 만 게임을 실행할 때, 태양 스프 라이트는 단지 움직이지 않는다. 나는 심지어 밤을 기다리고 조용히 기다렸다. 왜 움직이지 않는지 알아 내려고하는 중이 야.

public int dayFrame = 0; 
int u = 0; 
int x; 
int y = 36; 
public int dayTime = 7500; 


public void tick() 
{ 
    x = (TritonForge.pixel.width/dayTime) * dayFrame; 
    u += 1; 
    if (u > 4) 
    { 
     dayFrame += 1; 
     u = 0; 
    } 
    (rest of code...) 

그것은 단위로 화면 너비를 가져오고 날이이 시간의 총량하여 분할 :

나는 수학을 확인했습니다. 그런 다음 현재 시간을 곱합니다. 내가 (TritonForge.pixel.width/dayTime) * dayTime = 640 (단위로 내 화면의 너비) 때문에이 작품을 알아요.

public void render(Graphics gr) 
{ 
    gr.setColor(new Color(r,g,b)); 
    gr.fillRect(0, 0, TritonForge.pixel.width, TritonForge.pixel.height); 
    gr.drawImage(TileArt.sun,x,y, null); 
    gr.drawImage(TileArt.forestback,0,0, null); 
    gr.drawImage(TileArt.foresttree,0,0, null); 
} 

누군가 도와주세요.

+0

1) JavaScript와 어떤 관련이 있습니까? 질문에 적용하기 전에 팝업에서 유용한 태그 설명을 * 읽으십시오 * * 확인하십시오. 'Java'는 'JavaScript'로, 'Car'는 'Carpet'입니다. 2) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

+0

하루의 길이가 10 초라고 가정합니다. 시간 프레임에 대해 10 초를 갖도록 프로그램을 조정하십시오. 시작 위치는 A이고 프로그램을 실행할 때 10 초 안에 점 B로 이동하는지 확인하십시오. 거기에서 디버그하십시오. –

+0

이것은 자바에서 만들어진, 자바 스크립트 뭔가 다른 것을 의미합니까 또는 뭔가? – TRiToNDREyJA

답변

0

이것은 정수 나누기와 관련이 있습니다. 화면 너비는 아마도 TritonForge.pixel.width입니까? 이 값을 dayTime으로 나눌 때 화면이 7,500 픽셀이 아니기 때문에 항상 0이됩니다.

정수 나누기가 가장 가까운 정수로 반올림되기 때문입니다. 화면 크기가 1200 픽셀이라고 가정 해보십시오. 1200/7500 = .16. 즉

double x; 
x = (TritonForge.pixel.width/(double)dayTime) * dayFrame; 

그리고 주조 X 적절한 int로 ... 그래서 그 대신 너무 코드를 변경 아래로 0

로 반올림합니다.

관련 문제