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; } } }
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(); }
public MovimientoParabolico() { mesh = null; }