如何使对象总是以最短的距离朝向/已到达它已经跟随的点

时间:2012-02-20 05:27:10

标签: android path logic andengine touch-event

一个。我有一个对象。 湾当用户触摸屏幕时,它将缓解/补间到用户的触摸坐标。 C。如果用户拖动他们的手指,那么对象将仅通过遍历来自动作事件ACTION_MOVE的输入数据所做的路径来跟随该路径。

如何制作它以使对象与用户触摸坐标之间的距离最短,而不是遵循它们创建的确切路径?

最终,该对象应该赶上用户触摸坐标。

public Scene onLoadScene() {
    this.getEngine().registerUpdateHandler(new FPSLogger());

    final Scene scene = new Scene();
    scene.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));

    final int x = (CAMERA_WIDTH - this.mFaceTextureRegion.getWidth()) / 2;
    final int y = (CAMERA_HEIGHT - this.mFaceTextureRegion.getHeight()) / 2;
    final Sprite face = new Sprite(x, y, this.mFaceTextureRegion);
    scene.registerTouchArea(face);
    scene.attachChild(face);
    //face.setPosition(134, 200);
    //face.registerEntityModifier(new MoveModifier(500, x, 100, y, 200, EaseQuadIn.getInstance())); 

    scene.setOnSceneTouchListener(new IOnSceneTouchListener() {

        @Override
        public boolean onSceneTouchEvent(Scene pScene,TouchEvent pSceneTouchEvent) {
            int facePosX = (int) (pSceneTouchEvent.getX() - face.getWidth() / 2);
            int facePosY = (int) (pSceneTouchEvent.getY() - face.getHeight() / 2);

            if (pSceneTouchEvent.getAction() == MotionEvent.ACTION_MOVE)
            {
                face.registerEntityModifier(new MoveModifier(1, face.getX(), facePosX,face.getY(), facePosY, EaseQuadIn.getInstance()));                
               }
            return true;            
            }
    });


    scene.setTouchAreaBindingEnabled(true);
    return scene;
}

1 个答案:

答案 0 :(得分:0)

我建议您使用MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP,并获取开始和结束坐标,并相应地移动对象。

所以你的起点是ACTION_DOWN,而End Pont是ACTION_UP。