私は、Android プラットフォーム用の最初のビデオ ゲームを、ちょっとした夜と週末のプロジェクトとして取り組んでいます。
順調に進んでいますが、コントロールの感度に非常に不満があります.
このゲームでは、オブジェクトを画面上で左右に動かします。画面の下部には、ある種の「タッチパッド」があり、そこに指を置く必要があります。
/-------------------------\
| |
| |
| |
| Game Area |
| |
| |
| |
| |
| |
/-------------------------\
| |
| Touch Area |
| |
\-------------------------/
現在、状態変数を使用して「MOVING_LEFT、MOVING_RIGHT、NOT_MOVING」を保持しており、その変数に基づいて各フレームでプレーヤー オブジェクトの位置を更新しています。
ただし、タッチスクリーン入力を読み取り、この状態変数を設定する私のコードは、調整方法によっては、敏感すぎるか、遅延が大きすぎます。
public void doTouch (MotionEvent e) {
int action = e.getAction();
if (action == MotionEvent.ACTION_DOWN) {
this.mTouchX = (int)e.getX();
this.mTouchY = (int)e.getY();
}
else if (action == MotionEvent.ACTION_MOVE) {
if ((int)e.getX() >= this.mTouchX) {
this.mTouchX = (int)e.getX();
this.mTouchY = (int)e.getY();
if (this.TouchRect.contains(this.mTouchX, this.mTouchY)) {
this.mTouchDirection = MOVING_RIGHT;
}
}
else if ((int)e.getX() <= this.mTouchX) {
this.mTouchX = (int)e.getX();
this.mTouchY = (int)e.getY();
if (this.TouchRect.contains(this.mTouchX, this.mTouchY)) {
this.mTouchDirection = MOVING_LEFT;
}
}
else {
this.mTouchDirection = NOT_MOVING;
}
}
else if (action == MotionEvent.ACTION_UP) {
this.mTouchDirection = NOT_MOVING;
}
}
何らかの動きがあった場合、ユーザーの指の以前の位置を確認してから、プレイヤーをどの方向に動かすかを判断するという考え方です。
これはあまりうまく機能しません。タッチスクリーンを介して適切な制御を行う方法を理解し、アドバイスを提供できる IPhone/Android 開発者がここにいると思います。