Implementación de la curva Unity Bezier: efectos especiales de conducción y vuelo

Prefacio

Este artículo le enseña cómo utilizar las curvas de Bézier para generar un efecto especial volador.

Preparación para el punto medio

Abrir algunas variables que se pueden configurar para la planificación.

startPos = flyEffect.transform.position;
var right = (GetAimPoistion(targetActor) - flyEffect.transform.position).x > 0?1:-1;  
midPos = startPos + new Vector3(right*Mathf.Tan((angle*Mathf.PI)/180)*height,height,0);
public int angle = 45;//向上角度
public int height = 2;//飞行上浮高度

Una curva de Bézier cúbica es una herramienta matemática que se puede utilizar para describir una curva suave determinada por cuatro puntos de control: un punto inicial, un punto final y dos puntos intermedios. El punto inicial y el punto final son los puntos finales de la curva, mientras que el punto medio se utiliza para ajustar la forma y dirección de la curva. Cuanto más cerca esté el punto medio del punto inicial o final, más cerca estará la curva de una línea recta; cuanto más lejos esté el punto medio del punto inicial o final, más curva será la curva.

En este código, midPos es un punto intermedio, que se utiliza para controlar la trayectoria de movimiento del objeto en el efecto de vuelo. Para que el objeto vuele a lo largo de una parábola, midPos debe cumplir las siguientes condiciones:
• La coordenada x de midPos debe diferir de la coordenada x de startPos en un valor fijo, que está determinado por el recto, el ángulo y la altura. . La derecha es un número entero, que indica la dirección en la que vuela el objeto. Si es un número positivo, significa volar hacia la derecha; si es un número negativo, significa volar hacia la izquierda. ángulo es un ángulo que representa el ángulo inicial de vuelo del objeto. La altura es una altura que representa el punto más alto del vuelo de un objeto. Estas tres variables se pueden ajustar en el editor para cambiar el efecto del vuelo del objeto.

• La coordenada y de midPos debe ser igual a la coordenada y de startPos más la altura, para que el objeto pueda volar hasta el punto más alto.

• La coordenada z de midPos debe ser igual a la coordenada z de startPos, para que el objeto pueda volar en el mismo plano.

Fórmula de cálculo específica

Despegar

if (triggered && !!flyEffect)  
{  
    removeEffect(_action);  
    return;  
}  
  
float t = _localTime / costTime;  
t = Mathf.Clamp(t, 0, 1);  
if(t >= 1)  
    triggered = true;  
  
var targetPos = GetAimPoistion(targetActor);  
flyEffect.transform.position = (1 - t) * (1 - t) * startPos + 2 *t* (1 - t) * midPos + t * t * targetPos;

• Primero, verifica los valores de una variable booleana disparada y una variable de objeto flyEffect. Si triggered es verdadero y flyEffect no está vacío, entonces llama a una función removeEffect para eliminar el efecto de vuelo y finaliza la ejecución de este código.

• Luego calcula una variable de punto flotante t, que representa el progreso del movimiento del objeto del efecto de vuelo, su valor es el tiempo actual _localTime dividido por el tiempo total costTime, y luego usa la función Mathf.Clamp para limitarlo entre 0 y 1.

• A continuación, determina si t es mayor o igual a 1. Si es así, establece triggered en verdadero, lo que indica que el efecto de vuelo se ha completado.

• Finalmente, llama a una función GetAimPosition para obtener la posición del objeto objetivo targetActor y asignarlo a una variable vectorial targetPos. Luego, utiliza una fórmula de curva de Bézier cúbica para calcular la posición actual del objeto de efecto de vuelo y lo asigna a flyEffect.transform.position. Esta fórmula utiliza la posición inicial startPos, la posición intermedia midPos y la posición objetivo targetPos como puntos de control y t como parámetro.

¿Qué es la plantilla de objeto?

ObjectTemplate es una plantilla para crear objetos en tiempo de ejecución. Puede definir las propiedades y métodos de un objeto, así como la relación entre el objeto y otros objetos. De hecho, se utiliza para almacenar el identificador de los efectos especiales y luego guardar los efectos especiales como GO y volar.

Supongo que te gusta

Origin blog.csdn.net/TongOuO/article/details/132522699
Recomendado
Clasificación