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.
ControlPlayer.cs