如何在从一个位置到另一个位置的触摸之后移动一个精灵,并使用发动机进行平稳运动?

时间:2011-11-20 10:12:02

标签: android coordinates sprite andengine

我有一个精灵,触摸必须开始沿着Y坐标移动。 我需要在达到默认Y坐标时停止运动。 我尝试过setposition()但是没有做出平滑的动作(就像动画一样) 我怎么能这么顺利呢?

我尝试了setvelocity(),但我不知道如何在某个坐标处停止移动。

          @Override
            public boolean onAreaTouched(final TouchEvent pSceneTouchEvent,
                    final float pTouchAreaLocalX, final float pTouchAreaLocalY) {

                if(pSceneTouchEvent.isActionDown()){
                    //TOCCO DELLO SPRITE

                    PhysicsHandler physicsHandler = new PhysicsHandler(this);
                    this.registerUpdateHandler(physicsHandler);
                    physicsHandler.setVelocityY(-5f);



                    se.getChild(1).detachChild(this);
                    se.getChild(2).attachChild(this);


                }

我也试过这条路,但我不太清楚它是如何运作的。

修改

根据Jong,我使用了MoveYModifier。它有效,但在avd上运动似乎生涩。我很快就会试用一台设备,但这只是一个avd问题? 我这样做了:

   if(pSceneTouchEvent.isActionDown()){

                    //TOCCO DELLO SPRITE

                    se.getChild(1).detachChild(this);
                    se.getChild(2).attachChild(this);


                    MoveYModifier mod = new MoveYModifier(3, getY(), pSceneTouchEvent.getY()- gap);
                    this.registerEntityModifier(mod);


                }

编辑2 在设备上测试并运行良好!非常顺利!

1 个答案:

答案 0 :(得分:1)

使用MoveModifier,了解更多here