@Override public void update(GameTime time) { if (targetsLeft > 0) { Vector2 a = Vector2.subtract(body.getMin(), currentTarget); if (Vector2.dot(a, movement.getVelocity()) >= 0) { --targetsLeft; // Target passed if (targetsLeft > 0) { currentTarget = newRandomTarget( Locator.getRandom(), (int) movementRect.getX1(), (int) movementRect.getY1(), (int) movementRect.getX2(), (int) movementRect.getY2(), (int) body.getX1(), (int) body.getY1(), MIN_WALK_SQUARED); headFor(currentTarget); } } } }