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

115
Vistas
Rotación suave de la torreta 2d que tiene en cuenta el envoltorio

Deseo hacer una torreta en un juego 2d, que debería girar suavemente al ángulo del mouse. Se me ocurrieron dos soluciones, pero ninguna es satisfactoria. El primero:

 currentRot = targetRot; // Produces snapping + doesn't look realistic

El segundo, inspirado en Girar suavemente la torreta y mantener la precisión :

 if (currentRot < targetRot) { currentRot += 2; if(currentRot > targetRot) { currentRot = targetRot; } } if (currentRot > targetRot) { currentRot -= 2; if(currentRot < targetRot) { currentRot = targetRot; } }

Sin embargo, el segundo enfoque no gira en la dirección óptima todo el tiempo. El código no "sabe" qué forma de rotar es más corta. No puedo usar bibliotecas y creo que los cuaterniones son excesivos, así que no estoy seguro de cómo resolver este problema. Además, ¿hay un tercer enfoque que sea más simple/mejor?

Otra información: targetRot es de 0°-360°

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¡Encontré una solución con queso, después de mucho tiempo! Esto fue extrañamente desafiante. Sin embargo, todavía siento que mi solución no fue óptima

Solo comprueba qué camino es más corto

 var dp = /*world distance from currentRot to targetRot+5 on unitcircle*/ var dp = /*world distance from currentRot to targetRot-5 on unitcircle*/ if (currentRot < targetRot) { currentRot += rate * (dp < dm ? -1 : 1); if (currentRot > targetRot) { currentRot = targetRot; } } if (currentRot > targetRot) { currentRot -= rate * (dp < dm ? 1 : -1); if(currentRot < targetRot) { currentRot = targetRot; } }

y también esta línea corrigió algunos errores

 if (currentRot < 0) {currentRot += 360;}
about 4 years ago · Juan Pablo Isaza 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