Как добавить спрайт к определенной точке в двигателе? - PullRequest
2 голосов
/ 06 ноября 2011

Я использую этот метод для добавления нового спрайта в мою сцену в andengine.

private void addBody(final float pX, final float pY) {
    final Scene scene = this.mEngine.getScene();
    if (BodyCount >= MAX_BODIES) return;
    BodyCount++;
    final Sprite matSprite;
    final Body body;
    if(BodyCount % 2 == 0) {
    matSprite = new Sprite(pX, pY,
    mTargetTextureRegion);
    body = PhysicsFactory.createBoxBody(mPhysicsWorld,
    matSprite, BodyType.DynamicBody,
    FIXTURE_DEF);
    } else {
    matSprite = new Sprite(pX, pY,
    mTargetTextureRegion);

    body = PhysicsFactory.createCircleBody(
            mPhysicsWorld, matSprite,
            BodyType.DynamicBody, FIXTURE_DEF);
            }
            scene.getLastChild().attachChild(matSprite);
            mPhysicsWorld.registerPhysicsConnector(
            new PhysicsConnector(matSprite, body, true, true));
            }

Здесь я вызываю метод для добавления тела на сцену. но ничего не происходит Я регистрируюсь, чтобы видеть, выполняется ли код, и он возвращает истину.

private void createSpriteSpawnTimeHandler(){
    TimerHandler spriteTimerHandler;
    float mEffectSpawnDelay = 1f;
    Random rand = new Random();

    final float x = (int) mCamera.getWidth() + mTargetTextureRegion.getWidth();
    int minY = mTargetTextureRegion.getHeight();
    int maxY = (int)(mCamera.getHeight() - mTargetTextureRegion.getHeight());
    int rangeY = maxY - minY; 
    final float y = rand.nextInt(rangeY) + minY;

    spriteTimerHandler = new TimerHandler(mEffectSpawnDelay,true,new ITimerCallback(){

        @Override
        public void onTimePassed(TimerHandler pTimerHandler) {
            Log.e("MainGame", "Adding Body");
            addBody(x,y);

        }


    });
    getEngine().registerUpdateHandler(spriteTimerHandler);

}

В чем может быть проблема? Или каков наилучший способ сделать это? Я хочу, чтобы спрайты добавлялись вверху экрана и текли по экрану, а затем со временем исчезали с экрана.

...