Example #1
0
        public void update(float elapsedTime, Terreno terreno)
        {
            if (mesh != null)
            {
                tiempo += elapsedTime;

                var posicionUltima = mesh.Posicion();

                var distanciaRecorridaXZ = velocidadInicialXZ * tiempo /** elapsedTime*/;
                var distanciaRecorridaY  = FastMath.Pow2(tiempo) * -0.5f * Gravedad + velocidadInicialY * tiempo
                                           /** elapsedTime*/;

                var x = mesh.Posicion().X + proporcionalX * distanciaRecorridaXZ;
                var z = mesh.Posicion().Z + proporcionalZ * distanciaRecorridaXZ;

                //TODO. Por el momentos nos manejamos con Y siempre positivas
                mesh.Posicion(new Vector3(x, mesh.Posicion().Y + distanciaRecorridaY, z));

                //TODO necesitamos el tamaƱo del elemento para poder saber cuando choca contra en terreno
                if (mesh.MinimoPunto().Y - mesh.FactorCorreccion() <
                    terreno.CalcularAltura(mesh.MinimoPunto().X, mesh.MinimoPunto().Z))
                {
                    //Esto debe ser cuando colosiona con el terreno.
                    mesh.Posicion(posicionUltima);
                    mesh     = null;
                    tiempo   = 0;
                    Finalizo = true;
                }
            }
        }
Example #2
0
 public MovimientoParabolico(Vector3 posicionInicial, Vector3 direccion, float velocidad, MallaEnvoltura mesh)
 {
     tiempo = 0;
     this.posicionInicial = posicionInicial;
     this.direccion       = direccion;
     this.velocidad       = velocidad;
     this.mesh            = mesh;
     Finalizo             = false;
     inicializar();
 }
Example #3
0
 public MovimientoParabolico()
 {
     mesh = null;
 }