Ich arbeite an meinem ersten Videospiel für die Android-Plattform, sozusagen als Nacht- und Wochenendprojekt.
Es geht gut voran, aber ich bin sehr unzufrieden mit der Empfindlichkeit der Steuerung.
In diesem Spiel bewegst du ein Objekt nach links und rechts auf dem Bildschirm. Am unteren Rand des Bildschirms befindet sich eine Art "Touchpad", auf dem Ihr Finger ruhen sollte.
/-------------------------\
| |
| |
| |
| Game Area |
| |
| |
| |
| |
| |
/-------------------------\
| |
| Touch Area |
| |
\-------------------------/
Ich verwende derzeit eine Zustandsvariable, die "MOVING_LEFT, MOVING_RIGHT, NOT_MOVING" enthält, und aktualisiere die Position des Spielerobjekts bei jedem Frame auf der Grundlage dieser Variablen.
Mein Code, der die Touchscreen-Eingabe liest und diese Zustandsvariable setzt, ist jedoch entweder zu empfindlich oder zu langsam, je nachdem, wie ich ihn optimiere:
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;
}
}
Die Idee ist, dass ich bei jeder Bewegung die vorherige Position des Fingers des Benutzers prüfe und dann herausfinde, in welche Richtung ich den Spieler bewegen muss.
Das funktioniert nicht sehr gut. Ich nehme an, dass es hier einige IPhone-/Android-Entwickler gibt, die herausgefunden haben, wie man eine gute Steuerung über einen Touchscreen hinbekommt, und die einen Rat geben können.
0 Stimmen
Können Sie die Begriffe "funktioniert nicht so gut" und "zu verzögert oder zu empfindlich" definieren? Eine Beschreibung, wie sich das verhält, wäre nützlich
0 Stimmen
Zwei empfindlich bedeutet, dass ich meinen Finger ein Zehntel eines Zolls bewege und der Spieler ist über den Bildschirm zu verzögert bedeutet, dass ich meinen Finger über den gesamten Bildschirm bewegen muss, um den Spieler einen Zoll zu bewegen :)