hola soy nueva en el desarrollo de juegos Android yo uso AndEngine necesito ploat un camino, pero hay un problema Dibujar un camino en AndEngine para mover una imagen o el sprite
vistazo a la trayectoria image.The que necesito es como el primero, el objeto debería moverse desde la parte inferior hasta la mitad de la pantalla. Pero mientras trazado mi camino, se mueve al centro de la pantalla, pero vuelve al segundo punto como en la segunda imagen. La imagen se mueve a través el camino, pero es como la segunda imagen. Lo necesito como el primero. Debe detenerse en el 3er punto y debe comenzar desde el primer punto nuevamente.
Mi código es la siguiente
package com.example.sss;
import org.andengine.engine.camera.Camera;
import org.andengine.engine.options.EngineOptions;
import org.andengine.engine.options.ScreenOrientation;
import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.andengine.entity.IEntity;
import org.andengine.entity.modifier.LoopEntityModifier;
import org.andengine.entity.modifier.PathModifier;
import org.andengine.entity.modifier.PathModifier.IPathModifierListener;
import org.andengine.entity.modifier.PathModifier.Path;
import org.andengine.entity.scene.Scene;
import org.andengine.entity.scene.background.RepeatingSpriteBackground;
import org.andengine.entity.sprite.AnimatedSprite;
import org.andengine.entity.util.FPSLogger;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.andengine.opengl.texture.atlas.bitmap.source.AssetBitmapTextureAtlasSource;
import org.andengine.opengl.texture.region.TiledTextureRegion;
import org.andengine.ui.activity.SimpleBaseGameActivity;
/**
* (c) 2010 Nicolas Gramlich
* (c) 2011 Zynga
*
* @author Nicolas Gramlich
* @since 13:58:48 - 19.07.2010
*/
public class MainActivity extends SimpleBaseGameActivity {
// ===========================================================
// Constants
// ===========================================================
private static final int CAMERA_WIDTH = 720;
private static final int CAMERA_HEIGHT = 480;
// ===========================================================
// Fields
// ===========================================================
private RepeatingSpriteBackground mGrassBackground;
private BitmapTextureAtlas mBitmapTextureAtlas;
private TiledTextureRegion mPlayerTextureRegion;
// ===========================================================
// Constructors
// ===========================================================
// ===========================================================
// Getter & Setter
// ===========================================================
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
public EngineOptions onCreateEngineOptions() {
final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera);
}
public void onCreateResources() {
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
this.mBitmapTextureAtlas = new BitmapTextureAtlas(this.getTextureManager(), 128, 128);
this.mPlayerTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(this.mBitmapTextureAtlas, this, "player.png", 0, 0, 3, 4);
this.mGrassBackground = new RepeatingSpriteBackground(CAMERA_WIDTH, CAMERA_HEIGHT, this.getTextureManager(), AssetBitmapTextureAtlasSource.create(this.getAssets(), "gfx/background_grass.png"), this.getVertexBufferObjectManager());
this.mBitmapTextureAtlas.load();
}
public Scene onCreateScene() {
this.mEngine.registerUpdateHandler(new FPSLogger());
final Scene scene = new Scene();
final Scene scene_one = new Scene();
scene.setBackground(this.mGrassBackground);
/* Calculate the coordinates for the face, so its centered on the camera. */
final float centerX = (CAMERA_WIDTH - this.mPlayerTextureRegion.getWidth())/2;
final float centerY = (CAMERA_HEIGHT - this.mPlayerTextureRegion.getHeight())/2;
System.out.println("aaaaaa"+centerX+"asdadas");
/* Create the sprite and add it to the scene. */
final AnimatedSprite player_one = new AnimatedSprite(centerX, centerY, 48, 64, this.mPlayerTextureRegion, this.getVertexBufferObjectManager());
final Path path_one = new Path(5).to(CAMERA_WIDTH - 58, 10).to(10, 10).to(100, CAMERA_HEIGHT/2f);//to(10, 10).to(10, CAMERA_HEIGHT - 74).to(CAMERA_WIDTH - 58, CAMERA_HEIGHT - 74).to(CAMERA_WIDTH - 58, 10).to(10, 10);
final AnimatedSprite player = new AnimatedSprite(centerX, centerY, 48, 64, this.mPlayerTextureRegion, this.getVertexBufferObjectManager());
final Path path = new Path(5).to(CAMERA_WIDTH - 58, 10).to(10, 10).to(10, CAMERA_HEIGHT/2f);
player.registerEntityModifier(new LoopEntityModifier(new PathModifier(5, path, null, new IPathModifierListener() {
public void onPathStarted(final PathModifier pPathModifier, final IEntity pEntity) {
}
public void onPathWaypointStarted(final PathModifier pPathModifier, final IEntity pEntity, final int pWaypointIndex) {
switch(pWaypointIndex) {
case 0:
player.animate(new long[]{200, 200, 200}, 6, 8, true);
break;
case 1:
player.animate(new long[]{200, 200, 200}, 3, 5, true);
break;
case 2:
player.animate(new long[]{200, 200, 200}, 0, 2, true);
break;
case 3:
//scene.setVisible(false);
player.animate(new long[]{200, 200, 200}, 9, 11, true);
break;
}
}
public void onPathWaypointFinished(final PathModifier pPathModifier, final IEntity pEntity, final int pWaypointIndex) {
}
public void onPathFinished(final PathModifier pPathModifier, final IEntity pEntity) {
System.out.println("tileesdfsdfsdfgfdgdfsee"+player.getCurrentTileIndex());
}
})));
player_one.registerEntityModifier(new LoopEntityModifier(new PathModifier(5, path_one, null, new IPathModifierListener() {
public void onPathStarted(final PathModifier pPathModifier, final IEntity pEntity) {
}
public void onPathWaypointStarted(final PathModifier pPathModifier, final IEntity pEntity, final int pWaypointIndex) {
switch(pWaypointIndex) {
case 0:
player.animate(new long[]{200, 200, 200}, 6, 8, true);
break;
case 1:
player.animate(new long[]{200, 200, 200}, 3, 5, true);
break;
case 2:
player.animate(new long[]{200, 200, 200}, 0, 2, true);
System.out.println("insideeeeeeeeeeeeeeeeeeeeeeeee");
scene.detachChild(player_one);
scene.attachChild(player);
break;
case 3:
player.animate(new long[]{200, 200, 200}, 9, 11, true);
break;
}
}
public void onPathWaypointFinished(final PathModifier pPathModifier, final IEntity pEntity, final int pWaypointIndex) {
}
public void onPathFinished(final PathModifier pPathModifier, final IEntity pEntity) {
System.out.println("tileesdfsdfsdfgfdgdfsee"+player.getCurrentTileIndex());
}
})));
scene.attachChild(player);
return scene;
}
// ===========================================================
// Methods
// ===========================================================
// ===========================================================
// Inner and Anonymous Classes
// ===========================================================
}
por favor ayuda me.Thanks por adelantado
que k tu driver613 funciona bien ahora :) – Ramz
driver613 conoces la solución a esta pregunta http://stackoverflow.com/questions/11755693/how-to-fall-a-sprite-over-another-using-and-engine -in-android – Ramz
Ya tienes una respuesta :) –