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

Java 将敌人移动速度设置为小于1,java,int,double,game-physics,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() > pla

在我正在创建的游戏中,我希望僵尸的速度是玩家的两倍,但我不想将玩家的移动速度设置为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);
}
Zombie z=(Zombie)Zombie.get(i);
如果(z.getY()>player.getY()){
z、 setY(z.getY()-1);
}
如果(z.getY()player.getX()){
z、 setX(z.getX()-1);
}
if(z.getX()

我曾尝试使用
(int).5f
(int).5
1/2
,但它们都使僵尸完全静止不动。

.5和1/2不是整数。数学101。你不能仅仅通过在浮点后面加一个
f
来将其转换为int。尝试删除
(int)
强制转换。

.5和1/2不是整数。数学101。你不能仅仅通过在浮点后面加一个
f
来将其转换为int。尝试删除
(int)
强制转换。

我认为您要做的是将僵尸的x和y字段声明为双精度字段,而不是int,因此
setX(…)
setY(…)
方法将接受双精度,而
getX()
getY()
返回双精度字段。如果成像需要int值,则可以在需要时对值进行强制转换或舍入,或者提供僵尸方法来执行此操作,
getIntValueX()
getIntValueY()


您也可以使用单点2D.Double字段代替x和y字段。

我认为您要做的是将僵尸的x和y字段声明为Double,而不是int,因此
setX(…)
setY(…)
方法将接受Double和
getX()
getY()
返回双打。如果成像需要int值,则可以在需要时对值进行强制转换或舍入,或者提供僵尸方法来执行此操作,
getIntValueX()
getIntValueY()


您也可以使用单点2D。双字段代替x和y字段。

我也遇到了这个问题。 但这只是一个简单的问题

例如:

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

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

解决方案:
我也被这个问题困扰着。 但这只是一个简单的问题

例如:

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

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

解决方案:
僵尸x和y字段的变量类型是什么?它们应该是double,而不是int,set和get方法应该接受并返回相同的值。请注意,
(int)0.5
1/2
实际上是0。不要在这里强制转换,但再次使用双精度。或者,每隔一次只更新僵尸坐标。僵尸x和y字段的变量类型是什么?它们应该是double,而不是int,set和get方法应该接受并返回相同的值。请注意,
(int)0.5
1/2
实际上是0。不要在这里施放,但再次使用双倍。或者,每隔一次只更新僵尸坐标。