0

私が作成しているゲームでは、ゾンビをプレイヤーの 2 倍遅くしたいのですが、プレイヤーの移動速度を 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. float の後に an を付けただけでは、int として float をキャストすることはできませんf(int)キャストを削除してみてください。

于 2013-04-21T16:07:54.870 に答える
0

あなたがしたいことは、ゾンビの x フィールドと y フィールドを int ではなく double として宣言することだと思います。したがって、setX(...)andsetY(...)メソッドは double を受け入れ、 double をgetX()返しgetY()ます。イメージングに int 値が必要な場合は、必要なときに値をキャストまたは丸めるか、これを行うための Zombie メソッドを指定できgetIntValueX()ますgetIntValueY()

また、x フィールドと y フィールドの代わりに単一の Point2D.Double フィールドを使用することもできます。

于 2013-04-21T16:14:22.423 に答える