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