Как изменить место, где спрайт случайно появляется в сцене? - PullRequest
3 голосов
/ 07 ноября 2011

Я использую этот метод с 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 Ответ

3 голосов
/ 07 ноября 2011

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

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 () соответственно)

...