Buscar en bzk Gaming

Cargando...
viernes 15 de octubre de 2010
Para continuar con el tutorial, Explicaremos como primer cosa que el método
Matrix.CreateTranslation 
solo crea un efecto de traslación, pero en realidad el objeto no se mueve, si depuráramos veríamos que mPos siempre está en (0,0,0). Así que para poder darle al nuestro tanque la posibilidad que recorra un tramo de camino, en el Método Update() modificaremos la posición del mismo. Pero antes de eso quitaremos el siguiente código del método de dibujo (Draw) que teníamos:



efecto.World = origen[malla.ParentBone.Index]  *Matrix.
               CreateTranslation(mPos+radioVigia)* Matrix.
               CreateRotationY(tanRotacion);
//por esta
efecto.World = origen[malla.ParentBone.Index]  * Matrix.
               CreateTranslation(mPos ) * Matrix.
               CreateRotationY(tanRotacion);

Lo único que hicimos fue quitarle a la translación el aumento del radio vigía.

Ahora iremos a nuestro método Update() y agregaremos el siguiente código, antes de baseUpdate():

//Se agrega a la posicion del tanque el vector del radio de 
vigilancia 
mPos.X += (float)Math.Cos(radioVigia.X);

Obsérvese que se aumenta la posición en X respecto a el radio vigía (recuerde que el Vector radioVigia tiene las componentes 0, 0,200) y la ejecución de Coseno nos da la idea de que da vuelta como es que se quería al principio.

Pero sucede algo anormal que se puede apreciar en la primera parte del video, el giro lo hace hacia su parte de atrás, si bien esto no es tan “malo” ya que en la realidad los tanques tienen esa capacidad, nosotros queremos que sea hacia adelante el giro. Además, parece que se va en tanque haciendo una espiral, lo que sucede es que cada vez que se manda llamar Update. La posición del tanque se ira aumentando por lo que crea un efecto de espiral, que aunque se bonito XD, no es lo que queremos.

Solucionaremos esto por partes lo primero que haremos se cambiar el signo + por el signo -.

Ahora nuestro tanque dará la vuelta hacia enfrente, yupi!!. Por desgracia se sigue yendo en espiral.

Bien, pues la manera más fácil de hacer esto es crear un límite, para cuando se llegue a este deje de incrementar la posición (o aminorar, como quiera ver) Para esto agregaremos la siguiente línea de código antes de la modificación de la posición.

Tenga en cuenta que el numero debe ser negativo en caso que usted quiera que el tanque vaya hacia adelante, y positivo si quiere vaya en reversa.

Esto sucede a causa del programa de diseño en este caso blender, que tomo la parte trasera del tanque hacia enfrente, por lo que cualquier movimiento, hacia enfrente debe hacerle las modificaciones adecuadas, en este caso fue disminuir en lugar de aumentar el vector posición.

Teniendo nuestro código tal como está resultara en que al inicio el tanque se moverá poco, como si estuviera acelerando, pero al llegar al límite marcado, se quedara dando vueltas y vueltas, dispuesto a protegernos, aunque no puede todavía, eso lo veremos mas adelante.

Mira el video


En el próximo tutorial veremos cómo usar los inputs (en el primero teclado y después GamePad) para manejar el juego.

Hasta pronto

0 comentarios:

Entradas populares en este Mes

Entradas populares Siempre

Comparte este Blog

Subscribe via email

Enter your email address:

Delivered by FeedBurner

Seguidores

FeedBurner FeedCount