Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

2 controles tanque

Iniciado por AlbertoRLH, Febrero 10, 2018, 11:14:24 PM

Tema anterior - Siguiente tema
Hola! Estoy haciendo un juego de tanques y estoy desarrollando el controlador del tanque player. La idea que tengo es tener dos controles y activar uno y otro por medio de una tela, es decir, tengo dos funciones donde se desarrollan ambos controles y después en el FixedUpdate decir si pulso la tecla Q (por ejemplo) se cambie a un control u otro. Pero el problema es que el segundo control solo se activa si tengo pulsada la tecla Q. Se que la solución puede llegar a ser absurda y nivel de código es casi de principiante. Os dejo el código:
 

   void FixedUpdate()
{
   if (Input.GetKey (KeyCode.Q))
   {
      MovimientoB ();
   }
   else
   {
      MovimientoA ();
   }
}
void MovimientoA()
{
   // Aqui meto el codigo del primer control con vectores, quaterniones, activo una camara, otra la desactivo...
}
   
void MovimientoB()
{
   // Aqui meto el codigo del segundo control con vectores, quaterniones, activo una camara, otra la desactivo...
}

 
Espero que me podáis ayudar. Gracias de antemano.

tienes que controlar cada control del tanque mediante una variable boleana por ejemplo.
 

public class TankController : Monobehaviour{
bool controlB = false;
void FixedUpdate(){
   If (Input.GetKeyDown(KeyCode.Q)){
      controlB = !controlB;
   }
   if(controlB){
      MovimientoB();
   }else{
      MovimientoA();
   }
}
}

 
Del modo que tu lo tienes planteado solo usa el MovimientoB "mientras" este pulsado el KeyCode asociado.

Para agregar a lo que dijeron arriba, nunca procesar inputs en fixedUpdate, siempre hacelo en Update o LateUpdate, la razón es que las entradas se actualizan cuadro a cuadro.
 
del manual "Note also that the Input flags are not reset until "Update()", so its suggested you make all the Input Calls in the Update Loop. "

Correcto, yo he puesto el FixedUpdate porque he hecho copy&paste y no he caido en ello. Gracias @lightbug por el apunte ;)

Gracias chicos! Ya he resuelto la duda gracias a Chaskarron. No os preocupeis, los inputs los meto en el Update(), pero era para que vierais el problema. He metido en el FixedUpdate() los controles porque dentro de unos dias le voy a meter fisica Rigidbody, por eso están ahi. Voy a subir el script, por si le podeis echar un vistazo y ver si tengo algún fallo... creo que estaria todo en su sitio. De nuevo gracias.
//www.unityspain.com/applications/core/interface/file/attachment.php?id=11408">ControlPlayer.cs

Etiquetas: