I am new in andengine game Development. I am trying to make a game where a playerSprite moves forward and backward through X- axis. How can I continuously move the background along with the playerSprite ? If the player goes forward , the background will go forward and will repeat itself continuously . Same for moving the playerSprite to backward. How can I do this ?
What you are looking for is ParalaxBackground. Here is simple example:
private void createBackground()
{
ParallaxBackground background = new ParallaxBackground(0, 0, 0);
background.attachParallaxEntity(new ParallaxEntity(0, new Sprite(0, 0, background_region, vbo)));
scene.setBackground(background);
}
It is from Matim-Dev andEngine Tutorial: Matim-Dev tutorial
You might also look into sample code for AutoParalaxBackground: AutoParalaxBackground
Related
I am trying to make a slice effect when user moves his fingers on the screen on Android Device like in Fruit Ninja
I have a movieClip named Particle which has a circle
I tried following
stage.addEventListener(MouseEvent.MOUSE_DOWN , stratSlice);
stage.addEventListener(MouseEvent.MOUSE_UP , endSlice);
function startSlice(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE , drawSlice);
}
function endSlice(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE , drawSlice);
}
function drawSlice(e:MouseEvent):void
{
var p:Particle = new Particle();
addChild(p);
p.x = mouseX;
p.y = mouseY;
}
but when I run it The slice is broken I want it to be seamless.
Adding e.updateafterevent() in the mouse move handler might improve performance a bit.
In general your code will probably not work as well as other particle effects you see in games such as fruits ninja. For good results you will need to use a particle engine such as
StarDust: https://code.google.com/p/stardust-particle-engine/
Flint: http://flintparticles.org/
Partigen: http://www.desuade.com/partigen/engine
Starling Particle: https://github.com/PrimaryFeather/Starling-Extension-Particle-System
I know starling works great on android, not sure about the others
There is something what I can use to rotate object without ending? I want start game and start rotate sprite with some speed but I don't want to end rotate. There is any way to use: new RotationModifier(20f, 0, 360), but with no end of rotation? Or there is any other way?
I think you can use LoopEntityModifier, something like (haven't tried it out):
LoopEntityModifier EntityModifier = new LoopEntityModifier(
new RotationModifier(1,0,360));
I am using the libgdx framework to create a game. I'm trying create onscreen buttons/controls.
Currently, I have a
class LevelOne that implements Screen.
This class has a private variable world (From Box2d)
I want to add a
Table with Textbuttons or a Libgdx Touchpad to the Box2d world.
However, I'm not sure how to do this.
Next, I know I can add a table or a touchpad to a Libgdx Stage. Is there anyway to get the Libgdx stage and Box2d world to work together so, I can add a Touchpad or Table to the Box2d world.
For onscreen controls, you can do it like this:
Make a new cam which will be fixed for the controls:
OrthographicCamera guicam = new OrthographicCamera(480, 320);
guicam.position.set(480/2F, 320/2F, 0);
Make a (libgdx) Rectangle for each control:
Rectangle wleftBounds = new Rectangle(0, 0, 80, 80);
Rectangle wrightBounds = new Rectangle(80, 0, 80, 80);
Create a new Vector3 to hold your unprojected touch coordinates:
Vector3 touchPoint = new Vector3();
Then you can poll the Input to see if the user is touching these rectangles:
//in render method
for (int i=0; i<5; i++){
if (!Gdx.input.isTouched(i)) continue;
guicam.unproject(touchPoint.set(Gdx.input.getX(i), Gdx.input.getY(i), 0));
if (wleftBounds.contains(touchPoint.x, touchPoint.y)){
//Move your player to the left!
}else if (wrightBounds.contains(touchPoint.x, touchPoint.y)){
//Move your player to the right!
}
}
Notice I'm checking the first 5 touch indexes, thats because you will surely want to have controls that are being used at the same time (i.e. Jumping while Moving Right).
Last but not least, you will want to draw some nice graphics over the controls:
batch.draw(leftRegion, wleftBounds.x, wleftBounds.y, wleftBounds.width, wleftBounds.height);
batch.draw(rightRegion, wrightBounds.x, wrightBounds.y, wrightBounds.width, wrightBounds.height);
If you want to include a HUD stage
Create HUD matrix (import com.badlogic.gdx.math.Matrix4):
HUDMatrix = camera.combined.cpy();
HUDMatrix.setToOrtho2D(0, 0, wwidth, wheight);
Then draw it HUD
batch.setProjectionMatrix(HUDMatrix);
batch.begin();
stage.draw(batch)
batch.end();
I have an AnimatedSprite that after it finishes the animation I want to reverse animate it. I want to do that continuously. Once the reverse animation is complete I want to play the original one. This may be easy one but I am new to Android and AndEngine.
mFlower1Sprite = new AnimatedSprite(20, 800, this.mFlower1);
mFlower1Sprite.setScale((float) 1.5);
mFlower1Sprite.animate(500, 0, new IAnimationListener () {
public void onAnimationEnd(final AnimatedSprite pAnimatedSprite) {
// reverse animation
}
});
mScene.attachChild(mFlower1Sprite);
return mScene;
Use animate method:
public AnimatedSprite animate (long[] pFrameDurations, int[] pFrames,
int pLoopCount, AnimatedSprite.IAnimationListener pAnimationListener)
Animate specifics frames.
Parameters:
pFrameDurations must have the same length as pFrames.
pFrames indices of the frames to animate.
Simply list the indices in reverse order.
I'm working with sprites myself atm and I came across this jQuery plugin. Check it out.
http://spritely.net/
I'm not aware of any support to reverse the frames of an AnimatedSprite, although it's probably a useful feature so I'd love to find out if I'm wrong.
Your best bet would probably be to create another sprite sheet with the frames reversed and another instance of an AnimatedSprite for that sheet. Then define one or two private IAnimationListeners inside your activity (rather than on the fly when you call .animate()), which alternately detach and attach the two sprites at the end of each animation.
I am developing game using andengine. I want to add a sprite as a child to another sprite so that sprite will rotate along with another sprite. Since I am new to andengine I didn't know how to add sprite as a child. By rotating main sprite the child has to rotate with it.
Some of them suggest to call sprite.attachChild() method to add as child but I can't get this method. I am extending BaseGameActivity.
Edited: Some of them says it's due to old version of andengine. Would anyone give me link for download new version of andengine?
AnimatedSpriteHelicopter mSpriteHelicopter = new AnimatedSpriteHelicopter(0, 0, this.mTRHelicopter);
mSpriteHelicopter.animate(50);
this.mScene.getChild(GameLayers.HELICPTER_LAYER).attachChild(mSpriteHelicopter);
this.mScene.registerTouchArea(mSpriteHelicopter);
this.mScene.setTouchAreaBindingEnabled(true);
// ==========================
// Missile
// ===========================
AnimatedSpriteMissile mMissile = new AnimatedSpriteMissile(0, 0, this.mTRMissile);
mMissile.animate(100);
mSpriteHelicopter.attachChild(mMissile);
return this.mScene;
Just a sample code. now missile will move with helicopter sprite :) very simple.
I have my own classes extended with AnimatedSprite.
The source code is located at http://code.google.com/p/andengine/ and indeed sprite composition is a feature in the most recent version of AndEngine as verified in this forum thread.
I'm using it and can personally verify that it's functional.