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

185
Vistas
Cómo escribir una función para aumentar exponencialmente un número a su máximo

Tengo una variable llamada turnRadius que proviene de la entrada del usuario y puede estar entre -1 y 1, siendo 0 el valor predeterminado.

Luego tengo que convertir este número en su equivalente en un rango de 275 y 0 y almacenarlo en la variable spriteHorizontalPosition .

El problema es que, por motivos, no puedo esperar que el usuario establezca turnRadius en -1 o 1, por lo que quiero que cuando turnRadius alcance 0.65 o -0.65 , aumente exponencialmente a su máximo/mínimo para que el usuario no tenga que alcanzar el número completo con entrada.

Creo que entendí la idea, pero no sé cómo escribir la función, ¿puedo tener ayuda?

A continuación se muestra lo que tenía, pero soy consciente de que no es exponencial y cuando llega a 0,65, el spriteHorizontalPosition se estira repentinamente al máximo y se ve incómodo.

 let turnRadius = user.input; if (turnRadius <= -0.65) { turnRadius = -1; } else if (turnRadius >= 0.65 ) { turnRadius = 1; } spriteHorizontalPosition = ((turnRadius * -1) + 1) * 137.5; if ( spriteHorizontalPosition >= 275 ) { spriteHorizontalPosition = 275; } else if ( spriteHorizontalPosition <= 0 ) { spriteHorizontalPosition = 0; } playerSprite.transform.x = spriteHorizontalPosition;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Qué tal una buena curva cúbica para mapear entre la entrada de usuario realista posible (-0.65..0.65) y el rango de usuario deseado (/virtual) (-1..1)?

La curva suave cubicMap se puede dar como:

 const A = 0.65; const C = 1/A - A*A; const cubicMap = (x) => { if (x > 0.65) return 1; if (x < -0.65) return -1; return C*x + x*x*x; }

Como se ve en este gráfico: Desmos Link , asigna la entrada del usuario entre -0.65 y 0.65 sin problemas a entre -1 y 1 .

Su código podría verse así:

 const turnRadius = cubicMap(user.input); const spriteHorizontalPosition = 275 * (1 + turnRadius) / 2; playerSprite.transform.x = spriteHorizontalPosition;

No hay necesidad de declaraciones if adicionales, el valor ya está fijado por cubicMap .

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