0

在我正在创建的游戏中,我希望僵尸的速度比玩家设置的慢两倍我不想将玩​​家的移动速度设置为 2,因为它的移动速度太快了。这是控制僵尸速度的代码:

Zombie z = (Zombie) zombie.get(i);
if(z.getY() > player.getY()){
        z.setY(z.getY() - 1);
}
if(z.getY() < player.getY()){
        z.setY(z.getY() + 1);
}
if(z.getX() > player.getX()){
        z.setX(z.getX() - 1);
}
if(z.getX() < player.getX()){
        z.setX(z.getX() + 1);
}

我曾尝试使用(int) .5f(int) .51 / 2所有这些都使僵尸完全静止不动。

4

3 回答 3

3

.5 和 1/2 不是整数。数学 101. 你不能仅仅通过f在它后面加上一个浮点数来将它转换为一个整数。尝试移除(int)演员表。

于 2013-04-21T16:07:54.870 回答
0

我认为你想要做的是将你的 Zombie 的 x 和 y 字段声明为双精度数,而不是整数,因此setX(...)andsetY(...)方法将接受双精度数,而getX()andgetY()返回双精度数。如果您的成像需要 int 值,那么您可以在需要时强制转换或舍入这些值,或者提供 Zombie 方法来执行此操作,getIntValueX()并且getIntValueY().

您也可以使用单个 Point2D.Double 字段代替您的 x 和 y 字段。

于 2013-04-21T16:14:22.423 回答
0

我也被这个问题困住了。但这只是一个简单的问题。

例如:

private int x = 100;
private float speed = 0.5f;

x += speed;

这会将 x 位置增加一个浮点数,但 x 值是一个整数,因此它会自动舍入浮点数,因此它将为 0

解决方案:

private float x = 100;
private float speed = 0.5f;

x += speed;
于 2014-06-29T21:09:13.060 回答