Я пытаюсь переместить снаряд каждые 10 миллисекунд, используя цикл анимации в отдельном классе. Первые две итерации этого цикла печатают, что сила тяжести равна 0, когда она должна только иметь возможность нуля в первом цикле с момента времени = 0 в начале.Java: Двойной не вычисляется внутри цикла
public static void move()
{
System.out.println("Time: " + time);
System.out.println("gravity: " + gravity);
System.out.println("g: " + g);
dX = Slingshot.getPullX();
dY = Slingshot.getPullY();
gravity = 0.5 * g * time * time;
newX = (double) Slingshot.getStart().x + time * c * dX;
newY = (double) Slingshot.getStart().y + (time * c * dY + gravity);
time = time + 1;
new Projectile(newX, newY, dX, dY);
trail = new Ellipse((int) newX + 5, (int) newY + 5);
trail.setColor(Color.RED);
trail.setSize(2, 2);
projectileTrail.add(trail);
}
Вот результат после нескольких итераций цикла:
Time: 0.0
gravity: 0.0
g: 2.0
Time: 1.0
gravity: 0.0
g: 2.0
Time: 2.0
gravity: 1.0
g: 2.0
Time: 3.0
gravity: 4.0
g: 2.0
Time: 4.0
gravity: 9.0
g: 2.0
Time: 5.0
gravity: 16.0
g: 2.0
Так же, как tipp: Эта строка 'new Projectile (newX, newY, dX, dY);' скорее всего ничего не делает. Вы создаете снаряд, и поскольку вы ничего не делаете с ним, это будет только сбор мусора. –