Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

186
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda