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

617
Vistas
¿Cómo debo calcular la velocidad de un Lerp?

Tengo una declaración de Vector2 Lerp:

 Vector2.Lerp(spawnPos, target, position);

La variable de position es un número entre 0 y 1 y, para todos los efectos, se incrementa con el tiempo. Piense en la forma en que estoy rastreando la position como un "cabezal de reproducción", como en la música o la animación, donde un cursor se mueve de izquierda a derecha a medida que continúa la reproducción.

Quiero que el objeto continúe moviéndose después de alcanzar su objetivo, a la misma velocidad EXACTA, infinitamente en una dirección. Intenté cambiar el objetivo a la dirección multiplicada por la distancia entre el punto de generación, pero aún no sé cómo obtener la velocidad correcta.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Gracias al comentario de Llama , pude calcular la velocidad de un Lerp.

Primero, registre la hora de inicio y finalización de la interpolación, y si la interpolación se ha completado o no ( position >= 1 ). Luego, si no ha terminado, lee como de costumbre. Si HA terminado, anote la hora de finalización, calcule la velocidad y la dirección en la que se moverá e incremente Transform.position en ese valor.

 bool finished = false; // Since I'm using AudioSettings.dspTime, I need to use double. // Most forms of telling time in Unity will use float double startTime; double endTime; void Start() { // This is what I am using for my game, // but you can use any way of telling time that Unity/C# provides. startTime = AudioSettings.dspTime; } void Update() { if(!finished) { // interpolate transform.position = Vector2.Lerp(spawnPos, targetPos, position); if(position >= 1) { // Record our end time endTime = AudioSettings.dspTime; finished = true } } else { // How long it took to lerp double lerpTime = endTime - startTime; // How far we lerped float distance = Vector2.Distance(spawnPos, targetPos); // The speed to further move float speed = distance / (float)lerpTime; // The direction in which to move Vector2 direction = (targetPos - spawnPos).normalized; // Continue moving transform.position += (Vector3)direction * speed * Time.deltaTime; } }
over 4 years ago · Santiago Trujillo Denunciar

0

Una respuesta un poco más fácil para usted: en lugar de usar Vector2.Lerp y calcular todo, simplemente use Vector2.LerpUnclamped e ingrese cualquier valor de t que desee.

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