Как изменить местоположение, чтобы спрайт случайно появлялся в сцене?
Я использую этот метод с 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 () соответственно)