1

我目前正在使用 AndEngine 在 Android 上制作 2D 滚动射击游戏,但我遇到了相对触摸控制的问题,它允许玩家通过向上/向下/向左/向右拖动手指来控制精灵来移动船和船应该像通过触摸板控制指针一样移动到与手指相同的方向(这在现在的触摸屏 Space Invader 类游戏中很常见)

所以我想出了这个代码,

float oldX, oldY;
float X, Y;
        public boolean onSceneTouchEvent(Scene pScene,
                TouchEvent pSceneTouchEvent) {



            if(pSceneTouchEvent.isActionMove()){
                float currentX = pSceneTouchEvent.getX();
                float currentY = pSceneTouchEvent.getY();

                float deltaX = currentX-oldX;
                float deltaY = currentY-oldY;

                System.out.println("X: " + X + " Y: " + Y);

                X= X + deltaX;
                Y= Y + deltaY;

                oldX = currentX;
                oldY = currentY;
            }
            return true;
        }

我遇到的问题是我将用来设置屏幕上精灵位置的变量 X,Y 不会根据我的手指移动而增加/减少,如果我连续拖动手指右侧,X值应该不断增加,当我向左拖动手指时,X 值也应该不断减少。但我所拥有的是 X 值根据我手指在屏幕上的位置而增加/减少。我做错什么了吗?

4

1 回答 1

1

我猜平板电脑无法组合几次扫描。水平扫动通常是一个手势,而不是一个动作。

我认为您应该在停止扫描时设置指针的位置,以便您可以重新开始新的扫描。

另请查看 Android 中的手势:

http://mobile.tutsplus.com/tutorials/android/android-gesture/ http://www.anddev.org/gesturedetector_and_gesturedetectorongesturelistener-t3204.html

OnGestureListener 中有一个方法 onScroll(args),可以帮助您并节省时间。

于 2013-01-24T14:15:55.973 回答