Пример #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;
                }
            }
        }
Пример #2
0
        private void moverse(float elapsedTime, Terreno terreno)
        {
            //Aplicamos el movimiento
            //TODO Ver si es correcta la forma que aplico para representar que se esta a la altura del terreno.
            var xm             = FastMath.Sin(Mesh.Rotation.Y) * velocidadCaminar;
            var zm             = FastMath.Cos(Mesh.Rotation.Y) * velocidadCaminar;
            var movementVector = new Vector3(xm, 0, zm);

            Mesh.move(movementVector * elapsedTime);
            Mesh.Position = new Vector3(Mesh.Position.X, terreno.CalcularAltura(Mesh.Position.X, Mesh.Position.Z),
                                        Mesh.Position.Z);
        }