예제 #1
0
    // Update is called once per frame
    void Update()
    {
        first  = new Vec3(FirstVector);
        second = new Vec3(SecondVector);

        switch (opciones)
        {
        case Options.uno:
            third = first + second;
            break;

        case Options.dos:
            third = second - first;
            break;

        case Options.tres:
            third = Vec3.Scale(first, second);
            break;

        case Options.cuatro:
            third = Vec3.Cross(second, first);
            break;

        case Options.cinco:
            third = Vec3.Lerp(first, second, t);
            t    += Time.deltaTime;
            if (t >= 1f)
            {
                t = 0f;
            }
            break;

        case Options.seis:
            third = Vec3.Max(first, second);
            break;

        case Options.siete:
            third = Vec3.Project(first, second);
            break;

        case Options.ocho:
            float val = Vec3.Distance(first, second);
            Vec3  sum = first + second;
            third = val * sum.normalized;
            break;

        case Options.nueve:
            third = Vec3.Reflect(first, second);
            break;

        case Options.diez:
            third = Vec3.LerpUnclamped(second, first, t);
            t    += Time.deltaTime;
            if (t >= 10f)
            {
                t = 0f;
            }
            break;

        default:
            break;
        }

        Vector3Debugger.UpdatePosition("First", first);
        Vector3Debugger.UpdatePosition("Second", second);
        Vector3Debugger.UpdatePosition("Third", third);
    }
    void Update()
    {
        Vec3 A = new Vec3(ejerA);
        Vec3 B = new Vec3(ejerB);
        Vec3 C = new Vec3(resultado);

        switch (funcion)
        {
        case Funciones.Uno:     // Suma de Dos Vectores3

            C = A + B;

            break;

        case Funciones.Dos:     // Resta de dos Vectores3

            C = B - A;

            break;

        case Funciones.Tres:     // Se hace una escala entre los dos Vectores Existentes

            C = A;
            C.Scale(B);

            break;

        case Funciones.Cuatro:     // Se hace un producto Cruz entre los dos vectores

            C = Vec3.Cross(B, A);

            break;

        case Funciones.Cinco:     // Se hace un Lerp entre los dos vectores

            if (timeLerp > 1)
            {
                timeLerp = 0;
            }
            else
            {
                timeLerp += Time.deltaTime;
            }

            C = Vec3.Lerp(A, B, timeLerp);

            break;

        case Funciones.Seis:     // Se hace se saca los valores maximos de cada vector

            C = Vec3.Max(A, B);

            break;

        case Funciones.Siete:     // Se saca la Proyeccion entre dos vectores

            C = Vec3.Project(A, B);

            break;

        case Funciones.Ocho:     // Se hace un normalize de los dos vectores y despues se multiplica a la distancia entre los mismos                            Pdt. Este costo porque era raro

            Vec3 suma = A + B;
            C = suma.normalized * Vec3.Distance(A, B);

            break;

        case Funciones.Nueve:     // Se hace un reflect utilizando los los vertores

            C = Vec3.Reflect(B, A);

            break;

        case Funciones.Diez:     // Se hace un LerpUnclamped para que no se detenga cuando llega al limite permitido y asi siga avanzando

            timeLerpUnclamp -= Time.deltaTime;

            C = Vec3.LerpUnclamped(A, B, timeLerpUnclamp);

            break;
        }
        ejerA     = A;
        ejerB     = B;
        resultado = C;

        Vector3Debugger.UpdatePosition("elResultado", resultado);
        Vector3Debugger.UpdatePosition("elNegro", ejerA);
        Vector3Debugger.UpdatePosition("elBlanco", ejerB);
    }