Estoy trabajando en mi primer videojuego para la plataforma Android como un proyecto de noches y fines de semana.Uso de TouchScreens para control de juegos
Está viniendo muy bien, pero estoy muy contento con la sensibilidad del control.
En este juego, mueves un objeto hacia la izquierda y hacia la derecha en la pantalla. En la parte inferior de la pantalla hay una especie de "touchpad", que es donde debe descansar su dedo.
/-------------------------\
| |
| |
| |
| Game Area |
| |
| |
| |
| |
| |
/-------------------------\
| |
| Touch Area |
| |
\-------------------------/
actualmente estoy usando una variable de estado para mantener "MOVING_LEFT, MOVING_RIGHT, NOT_MOVING" y estoy actualizando la ubicación del objeto de reproductor de cada trama en base a esa variable.
Sin embargo, mi código que lee la entrada de pantalla táctil y establece esta variable de estado es demasiado sensative, o demasiado lag, dependiendo de cómo me retocarlo:
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;
}
}
La idea es que cuando hay algún movimiento , Compruebo la ubicación previa del dedo del usuario y luego descubro en qué dirección mover el reproductor.
Esto no funciona muy bien, me imagino que hay algunos desarrolladores de iPhone/Android aquí que han descubierto cómo hacer buenos controles a través de una pantalla táctil y pueden dar algunos consejos.
Puede definir "no funciona demasiado bien" y "demasiado lento o demasiado sensible". Una descripción de cómo se comporta esto sería útil –
Dos medios sensibles que muevo el dedo una décima de pulgada y el jugador está sobre la pantalla ... demasiado lento significa que tengo que mover el dedo por toda la pantalla para mover el reproductor una pulgada. :) – FlySwat