Как изменить местоположение, чтобы спрайт случайно появлялся в сцене?

Я использую этот метод с AndEngine, чтобы добавить спрайт на экран и заставить его перемещаться по экрану.

 private void addFace() {
     Random rand = new Random();

        float x = (int) mCamera.getHeight() - mBallTextureRegion.getHeight();
        float minY = mBallTextureRegion.getHeight();
        float maxY = (int)(mCamera.getWidth() +  mBallTextureRegion.getWidth());
        float rangeY = maxY - minY;
        float y = rand.nextInt((int)rangeY) + minY;

     this.mFaceCount++;
     Log.e("Faces: ", "Face" + this.mFaceCount);

    Sprite face = null;
     Body body = null;


             face = new Sprite(x, y, this.mBallTextureRegion.clone());
             body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, face, BodyType.DynamicBody, FIXTURE_DEF);

      this.mScene.attachChild(face);
     this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(face, body, true, true));
             int minDuration = 2;
            int maxDuration = 4;

            int rangeDuration = maxDuration - minDuration;
            int actualDuration = rand.nextInt(rangeDuration) + minDuration;

            MoveXModifier mod = new MoveXModifier(actualDuration, face.getX(), - face.getWidth());

            face.registerEntityModifier(mod);

}

То, что я хотел бы сделать, это вместо того, чтобы выбрать случайную позицию и добавить спрайт в левую часть сцены, я бы хотел, чтобы он был добавлен в верхнюю часть и упал вниз.

Я в основном хочу изменить направление, я просто не могу понять, как. Все, что я пробовал, не было удачей.

Есть идеи или предложения?

1 ответ

Решение

Хотя я мало что знаю об Andengine, я подозреваю, что вы захотите изменить эти строки:

float x = (int) mCamera.getHeight() - mBallTextureRegion.getHeight();
float y = rand.nextInt((int)rangeY) + minY;

MoveXModifier mod = new MoveXModifier(actualDuration, face.getX(), - face.getWidth());

Переверните операторы x и y, но установите y в -mBallTextureRegion.getHeight(), если вы хотите, чтобы он появлялся за пределами экрана.

Для MoveXModifier, я думаю, есть соответствующий MoveYModifier (используйте face.getY () и -face.getHeight () соответственно)

Другие вопросы по тегам