Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

233
Vistas
Cómo marcar la diferencia entre hacer clic con movimiento con clic sin mover el objeto del juego en la unidad

Tengo 2 gameobjects 2D en unidad. Quiero lograr lo siguiente, pero solo con Input.GetTouch para Android:

  1. Cuando hago clic en el primer o segundo objeto, reproduzco algún sonido.
  2. Cuando arrastre cualquiera de esos objetos del juego entre sí, combínelos en uno, sin reproducir el sonido del primer caso.
  3. Entonces podrá hacer clic en este objeto combinado --- sin reproducir el sonido del primer caso

El problema es que no quiero reproducir sonido desde el primer caso si el objeto se arrastra. Ya probé algún código con couroutine pero no funciona:

 if (Input.touchCount > 0) { touch = Input.GetTouch(0); touchPos = Camera.main.ScreenToWorldPoint(touch.position); RaycastHit2D hit = Physics2D.Raycast(touchPos, Camera.main.transform.forward); switch (touch.phase) { case TouchPhase.Began: samoKlik = true; if (samoKlik) { StartCoroutine(korotinaKlika()); } } case TouchPhase.Moved: isMoved = true; if (!samoKlik) { if (jedan) { break; case TouchPhase.Ended: isMoved = false; jedan = false; break; }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Necesita escribir su caso de interruptor correctamente. Este código no se compilará. El syntac de caso de cambio adecuado sería algo así como el que se describe aquí :

 switch (touch.phase) { case TouchPhase.Began: samoKlik = true; //if (samoKlik) { // This is not needed StartCoroutine(korotinaKlika()); //} break; case TouchPhase.Moved: isMoved = true; if (!samoKlik) { // samoKlik does not exist here if (jedan) { break; } } break; case TouchPhase.Ended: isMoved = false; jedan = false; break; }

Dado que desea pasar de un condicional a otro, parece que la declaración de switch no es adecuada para usted.

Sugeriría probar lo siguiente:

  1. Declara tus variables antes que tu lógica
 bool samoKlik = false; bool isMoved = false; bool jedan = false;
  1. Comience con cláusulas if/else.

Puedo identificar uno para que te ayude a ir

 if (touch.phase == touchPhase.Moved && !samoKlik && jedan)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda