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», поскольку «Автомобиль» - «Ковер». 2) Чтобы получить более эффективную помощь, опубликуйте [SSCCE] (http://sscce.org/). –

+0

Предположим, что день имеет длину 10 секунд. Настройте свою программу на 10 секунд. Начальная позиция - A, и когда вы запускаете программу, проверьте, попадает ли она в точку B через 10 секунд. Отладка оттуда. –

+0

это сделано в java, означает ли javascript что-то еще или что-то еще? – TRiToNDREyJA

ответ

0

Это связано с целым делением. Предположительно, ширина вашего экрана TritonForge.pixel.width? При делении этого на dayTime он, вероятно, всегда будет равен нулю, так как ваш экран не равен 7500 пикселей (опять же здесь).

Это потому, что целочисленное деление округляется до ближайшего целого числа. Скажем, ваш экран составляет 1200 пикселей. 1200/7500 = .16. Это округляется до 0.

Так вместо того, чтобы изменить код тоже ...

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

И литой й к междунар в зависимости от обстоятельств.

Смежные вопросы