Noticias

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

Optimizar un código de Trigger y detectar Input

Iniciado por El preguntón, Abril 23, 2017, 03:18:16 PM

Tema anterior - Siguiente tema
Abril 23, 2017, 03:18:16 PM Ultima modificación: Abril 24, 2017, 01:23:20 PM por pioj
¿Cómo se podría poner de una forma más corta este código?   Me refiero si se podría poner esto en un mismo solo condicional. Perdonadme si la pregunta es tonta, pero es que no sé mucho de programación.
 
 
 
 
 

void OnTriggerStay(Collider other)
{
   if (other.gameObject.CompareTag ("tagA"))
   {
      _speedMove = 0;
   }
   if (other.gameObject.CompareTag ("tagB"))
   {
      _speedMove = 0;
   }
}

 
Gracias de antemano.
 
 
 
 


if (other.gameObject.CompareTag ("tagA") || other.gameObject.CompareTag ("tagB")){

Cita de: kalua66 date=1492953623

if (other.gameObject.CompareTag ("tagA") || other.gameObject.CompareTag ("tagB")){



Ok, gracias. Por curiosidad, ¿Cómo sería para añadir que cumpla dos condicionales a la vez?


Abril 24, 2017, 10:35:17 AM #3 Ultima modificación: Abril 24, 2017, 10:37:51 AM por pioj
Cita de: El preguntón date=1493021753Ok, gracias. Por curiosidad, ¿Cómo sería para añadir que cumpla dos condicionales a la vez?
   
   
       
   
   
       
   


Lógica Booleana:
 

  •    Cuando 2 condiciones se deben cumplir a la vez, es un AND. ( &&)


  •    Cuando cualquiera de las 2 condiciones pueden complirse , es un OR. ( ||) 


  •    Cuando ninguna de las 2 condiciones deben cumplirse, es un NOT. ( != )


 
 
@El preguntón Por favor, cambia el título de tu tema, por otro título que quede mucho más concreto y claro para la web. "Pregunta Rápida" no es un buen título para buscar respuestas similares en un foro.
 
Leete las Normas de la Comunidad, o revisa las guías del foro Primeros Pasos.

Cita de: pioj date=1493022917Lógica Booleana:
   
   


  •          Cuando 2 condiciones se deben cumplir a la vez, es un AND. ( &&)
          

  •       

  •          Cuando cualquiera de las 2 condiciones pueden complirse , es un OR. ( ||) 
          

  •       

  •          Cuando ninguna de las 2 condiciones deben cumplirse, es un NOT. ( != )
          

  •    

       
   
   
      @El preguntón Por favor, cambia el título de tu tema, por otro título que quede mucho más concreto y claro para la web. "Pregunta Rápida" no es un buen título para buscar respuestas similares en un foro.
   
   
      Leete las Normas de la Comunidad, o revisa las guías del foro Primeros Pasos.
   


Tienes razón pioj,  pero no sé cómo se cambia el título del tema. Si me lo podrías decir...
 


Sobre la duda, no consigo ver el error. Mi objetivo era que realizara una función en entrar en un trigger con un tag y que pulsara la barra de espacio. Pero no se me ejecuta. ¿Qué podría hacer para solucionar esto?
 



void OnTriggerEnter(Collider other)
{
   if (other.CompareTag("Tag") && Input.GetKeyDown(KeyCode.Space))
   {
      // Función
   }
}


 

 

No conseguirás nunca que funcione. Una cosa es una condición de Input de teclado (que se está evaluando cada vez en el código), y otra es un evento que sólo se da en una ocasión.
 
Es muy difícil que se dé el caso de que en cuanto choque tu objeto con otro y provoque colisión, a la vez estés pulsando el botón Space.
 
 
 
Los Eventos de Colliders se gestionan por separado fuera del bucle principal precisamente porque son circunstancias que sólo se dan en un momento determinado. Lo que ocurra allí, lo defines con el OnTriggerEnter, etc...

_speedMove = other.gameObject.CompareTag ("tagA") || other.gameObject.CompareTag ("tagB") ? 0 : _speedMove;

y ya que esta si tuvieras la situacion de que "si esto es true pone true, si esto es false pone false" (a alreves) podes hacer:
 
Si a <= b var es true, si no var es false:
 

bool var;
var = a <= b;

 
 

Etiquetas: