coder_For_Life22
coder_For_Life22

Reputation: 26971

How to add sprites at specific part of screen AndEngine

I use this method to add a Sprite to the screen randomly.

 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;

The only problem is i would like for the sprites to be added at the top of the screen(which is the camera) but instead they are added on the side of the screen.

Any suggestions on how to do this?

Upvotes: 1

Views: 1225

Answers (2)

jmcdale
jmcdale

Reputation: 4463

On the android screen, the origin of the coordinate system is in the upper left corner.

(0,0)......(1,0)

(0,1)......(1,1)

So if you want something to always spawn at the top of the screen, then Y will need to be 0. Always. the X value can be anything from 0 to the width, randomly. This will place the object at the top, and randomly in the X (left-right) direction

Upvotes: 0

Jong
Jong

Reputation: 9115

First of all, the (x,y) coordinates of an entity are on it's top left. So, minY should be 0, or you could just do:

float y = rand.nextFloat(maxY);

You don't need all of these (int) casts, you can delete them.

In order to make to position random, get a random X too:

float maxX = this.mCamera.getWidth() - this.mBallTextureRegion.getWidth();
float x = rand.nextFloat(maxX);

This should work.

Upvotes: 2

Related Questions