Buscar en bzk Gaming

Cargando...
viernes 8 de octubre de 2010
Hola bueno ahí que seguir con el tutorial y ahora vamos a ver cómo se pueden mover objetos en 3D. Seguiremos con el proyecto del los tutoriales anteriores “Mijuego3D”.


Lo primero que queremos que haga nuestro tanque es poder verlo en 360 grados y para esto haremos que rote sobre su eje Y. así pues agregaremos una variable de clase llamada tanRotacion de tipo flotante.
//rotacion del tanque
float tanRotacion = 0.0f;

Después en el método Update() incluiremos este código:

//aumentar rotacion
tanRotacion += 0.01f;

Esto ara que cada vez que se actualiza el juego se aumentara la rotación. Ahora solo falta que el método para dibujarlo pueda interpretar la rotación del modelo.

Quitaremos esta línea de código y la sustituiremos por lo siguiente

efecto.World = origen[malla.ParentBone.Index];//cambiar por
efecto.World =origen[malla.ParentBone.Index ]* Matrix.
              CreateRotationY(tanRotacion);



Y tendremos nuestro tanque rotando en nuestra pantalla si ejecutamos en este momento. Aquí tenemos que explicar el cambio más trascendente que hicimos que es el método de dibujo.

Recuerden que origen es como tenemos nuestro modelo en 3D sin ninguna deformación, este será la base para cualquier trasformación que queramos hacer al objeto, además eso lo multiplicamos con el método estático CrearRotacionenY (traducido al español) de Matrix el cual recibe un numero flotante que representan los radianes que quiere que se rote el objeto sobre su eje Y.

Si cambiamos la rotación obtendremos el mismo resultado, y solo cambiara la dirección de la rotación.

//disminuir rotacion
tanRotacion -= 0.01f;

Ahora queremos que nuestro tanque, pues nos proteja ¿no?, para eso si hicieron, para esto tiene que patrullar un área digamos un circulo en el cual de vueltas para ver si ahí enemigos.

Esto lo haremos de una forma muy sencilla, volveremos a cambiar el efecto del mundo con al siguiente línea:

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



Esto lo que hace es que nuestro tanque primero se mueva y después de vuelta, algo así como si corriéramos en círculos en un árbol. Pero aparte de eso necesitamos que se desplace un poco hacia afuera del circulo imaginario, esta distancia será el radio de nuestro circulo.

Así que agregamos otra variable a nivel de clase que se llame radio de vigilancia
Vector3 radioVigia = new Vector3(0.0f, 0.0f, 200.0f);
Y en el método Initialize vamos a aumentar este radio a la posición del tanque para que el tanque toque el perímetro del círculo imaginario.

mPos+=radioVigia ;//toca el circulo imaginario


Ahora deberíamos tener algo como se muestra en el video. Pero el efecto no es muy bueno, no parece que el tanque este girando como lo haría un auto, siguiendo las llantas así que agregaremos algo más adelante.

3 comentarios:

Anónimo dijo...

Buenas ,

He seguido tu tutorial y me ha parecido genial, muy bien explicado, ahora he querido complicarmelo un poco y me he quedado parado. Si por ejemplo mi modelo es una persona, para hacerla caminar , que debo usar ? debo crear la animacion desde blender y exportarla a XNA ? o solo con el modelo hay herramientas de rigging ?

Espero tus comentarios, te dejo mi email por si prefieres contestar por email eronemamone@hotmail.com

Bazookao dijo...

Hola, antes que nada gracias por leer el blog y por comentar, que bueno que te han sido facil de entender.
Para responder tu pregunta, teines varias opciones la mas sencilla es utilizar programas que pueden crear animaciones en los personajes, pero si ya quieres algo mas sofisticado y hecho todo en XNA, lo que se debe usar son los "Bones" en los modelos y ha estos, dependiendo de lo que quieras hacer, moverlos rotarlos etc.
En XNA hay ejemplo sencillo llamado SimpleAnimationSample que esta en la documentacionde XNA, pero este esta en 4.0, si quieres usarlos en una version anterior mejor descarga este.
http://www.megaupload.com/?d=J7Q4CE3T
Saludos

Anónimo dijo...

hola, hace tiempo que anda leyendo este articulo, muy bueno :).. pero los links estan caidos y si me servirian mucho. para poder comprender mejor lo que explicaste podrias resuvirl? utilizo el visual studio 2010 y C# 2010 o sea lo mismo con XNA 4.0 ;) espero puedas resuvirlos links y si puedes hacer mas tutos como como caminar y rendear correctamente en XNA para que el model asome como querramos :)

Entradas populares en este Mes

Entradas populares Siempre

Comparte este Blog

Subscribe via email

Enter your email address:

Delivered by FeedBurner

Seguidores

FeedBurner FeedCount