将敌人的移动速度设置为小于1

时间:2013-04-21 16:05:54

标签: java int double game-physics

在我正在创造的游戏中,我希望僵尸的速度是玩家放置速度的两倍,我不想将玩​​家的移动速度设置为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,但所有这些都让僵尸站立不动。

3 个答案:

答案 0 :(得分:3)

.5和1/2不是整数。数学101.你不能只是在它之后放一个f来将一个浮点数转换成一个int。尝试删除(int)强制转换。

答案 1 :(得分:0)

我认为您要做的是将Zombie的x和y字段声明为双精度数,而不是整数,因此setX(...)setY(...)方法将接受双精度和{{1} }和getX()返回双打。如果您需要成像的int值,那么您可以在需要时对值进行转换或舍入,或者使用Zombie方法执行此操作,getY()getIntValueX()

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

答案 2 :(得分: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;