public void seguirA(Vector3 posJugador, float elapsedTime, float velocidad) { Vector3 direccion = posJugador - mesh.Position; direccion.Normalize(); direccion.Y = 0; mesh.rotateY((float)Math.Atan2(direccion.X, direccion.Z) - mesh.Rotation.Y - Geometry.DegreeToRadian(180f)); bounding.rotateY((float)Math.Atan2(direccion.X, direccion.Z) - mesh.Rotation.Y - Geometry.DegreeToRadian(180f)); direccion *= velocidad * elapsedTime; mesh.move(direccion); bounding.move(direccion); }
public override void Update() { PreUpdate(); //En cada cuadro de render rotamos la caja con cierta velocidad (en radianes) //Siempre tenemos que multiplicar las velocidades por el elapsedTime. //De esta forma la velocidad de rotacion es independiente de la potencia del CPU. //Sino en computadoras con CPU más rápido la caja giraría mas rápido que en computadoras mas lentas. box3.rotateY(ROTATION_SPEED * ElapsedTime); //Aplicamos una traslación en Y. Hacemos que la caja se mueva en forma intermitente en el intervalo [0, 3] de Y. //Cuando llega a uno de los límites del intervalo invertimos la dirección del movimiento. //Tambien tenemos que multiplicar la velocidad por el elapsedTime box3.move(0, MOVEMENT_SPEED * currentMoveDir * ElapsedTime, 0); if (FastMath.Abs(box3.Position.Y) > 3f) { currentMoveDir *= -1; } }
public Disparo(TgcMesh unModelo, Matrix matrixRot) { TestDisparo = new TgcBox(); TestDisparo.setPositionSize(unModelo.Position, unModelo.Scale); if (unModelo.AutoTransformEnable) { TestDisparo.rotateX(unModelo.Rotation.X); TestDisparo.rotateY(unModelo.Rotation.Y); TestDisparo.rotateZ(unModelo.Rotation.Z); } else { TestDisparo.AutoTransformEnable = false; TestDisparo.Transform = matrixRot; } EnJuego = true; TiempoDeVida = 4f; Duracion = 1f; Intensidad = 1; Velocidad = 300f; }
/// <summary> /// Se llama una sola vez, al principio cuando se ejecuta el ejemplo. /// Escribir aquí todo el código de inicialización: cargar modelos, texturas, estructuras de optimización, todo /// procesamiento que podemos pre calcular para nuestro juego. /// Borrar el codigo ejemplo no utilizado. /// </summary> public override void Init() { //startGame(); var d3dDevice = D3DDevice.Instance.Device; sonido = new Sonido(MediaDir, ShadersDir, DirectSound); messages = new PrintMessageText(this); //Carga la estructura de la ciudad manejadorDeColiciones = new ManejadorDeColisiones(); controladorDeVehiculos = new ControladorDeVehiculos(this); Ciudad = new Ciudad(this); cronometro = new Cronometro(300000, this); //sonidos.startGame(); iniciarIluminacion(); TgcD3dInput input = new TgcD3dInput(); Input = input; camaraRotante = new TgcRotationalCamera( new Vector3(3000, 5, 3000), 2000, 0.15f, 10f, base.Input); camaraMenu = new CamaraTerceraPersona(new Vector3(5500, 800, 5500), 900, 3600f); this.Camara = camaraRotante; //camaraRotante.SetCamera(new Vector3(500, 700, 500), // new Vector3(3000, 50, 3000)); //Creamos una caja 3D con textura var center = new Vector3(3000, 200, 4500); var texture = TgcTexture.createTexture(MediaDir + "Menu\\COMENZAR.png"); boxComenzar = TgcBox.fromSize(center, new Vector3(250, 50, 50), texture); boxComenzar.AutoTransformEnable = false; // Creamos una caja 3D con textura center = new Vector3(3000, 140, 4500); texture = TgcTexture.createTexture(MediaDir + "Menu\\PERSONAJE.png"); boxPersonaje = TgcBox.fromSize(center, new Vector3(250, 50, 50), texture); boxPersonaje.AutoTransformEnable = false; // Creamos una caja 3D con textura center = new Vector3(3000, 80, 4500); texture = TgcTexture.createTexture(MediaDir + "Menu\\SALIR.png"); boxSalir = TgcBox.fromSize(center, new Vector3(250, 50, 50), texture); boxSalir.AutoTransformEnable = false; boxComenzar.Position = new Vector3(5500, 850, 5600); boxComenzar.rotateY(FastMath.PI); boxPersonaje.Position = new Vector3(5500, 750, 5600); boxPersonaje.rotateY(FastMath.PI); boxSalir.Position = new Vector3(5500, 650, 5600); boxSalir.rotateY(FastMath.PI); var loader = new TgcSceneLoader(); var scene = loader.loadSceneFromFile(MediaDir + "MeshCreator\\Meshes\\Vehiculos\\Hummer\\Hummer-TgcScene.xml"); personaje1 = scene.Meshes[0]; personaje1.AutoTransformEnable = false; personaje1.Position = new Vector3(5400, 800, 5700); scene = loader.loadSceneFromFile(MediaDir + "MeshCreator\\Meshes\\Vehiculos\\Auto\\Auto-TgcScene.xml"); personaje2 = scene.Meshes[0]; personaje2.AutoTransformEnable = false; personaje2.Position = new Vector3(5200, 800, 5700); scene = loader.loadSceneFromFile(MediaDir + "MeshCreator\\Meshes\\Vehiculos\\Patrullero\\Patrullero-TgcScene.xml"); personaje3 = scene.Meshes[0]; personaje3.AutoTransformEnable = false; personaje3.Position = new Vector3(5000, 800, 5700); scene = loader.loadSceneFromFile(MediaDir + "MeshCreator\\Meshes\\Vehiculos\\Warthog\\Warthog-TgcScene.xml"); personaje4 = scene.Meshes[0]; personaje4.AutoTransformEnable = false; personaje4.Position = new Vector3(5000, 800, 5700); TwistedMetal.inicializado = true; /*controladorDeVehiculos.crearAutoPrincipal(); * controladorDeVehiculos.crearEnemigo1(); * autoPrincipal = controladorDeVehiculos.getAutoPrincipal(); * */ //niebla = new Niebla(this); // niebla.CargarCamara(controladorDeVehiculos.getAutoPrincipal().getCamara()); // niebla // controladorDeVehiculos.addToColisionador(manejadorDeColiciones);//por ahora los autos no colisionan //cargarShaders(); }