我正在制作一个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 :(得分:0)
这与整数除法有关。您的屏幕宽度大概是TritonForge.pixel.width
?将它除以dayTime
时,它可能总是等于零,因为你的屏幕不是7,500像素(再次假设在这里。)
这是因为整数除法向下舍入到最接近的整数。假设你的屏幕是1200像素。 1200/7500 = .16。这会减少到0。
所以改为代码也是如此......
double x;
x = (TritonForge.pixel.width / (double)dayTime) * dayFrame;
并根据需要将x转换为int。