1

現在、AndroidでAndEngineを使用して2Dスクロールシューティングゲームを作成していますが、プレーヤーが指を上下/左/右にドラッグして船と船を動かすことでスプライトを制御できる相対タッチコントロールに問題がありますタッチパッドでポインタを制御するのと同じように、指と同じ方向に移動する必要があります(最近のタッチスクリーンのスペースインベーダーのようなゲームではかなり一般的です)

だから私はこのコードを思いついた、

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 に答える