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.
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
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.
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:
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
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.
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.
Suscribirse a:
Enviar comentarios (Atom)
Entradas populares en este Mes
-
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 tutoria...
-
Tutorial Dibujar un modelo 3D en XNA (Tutorial en bzkGaming ) Hola pues el inicio tan esperado de la creación de un videojuego está por...
-
Para continuar con el tutorial, Explicaremos como primer cosa que el método Matrix . CreateTranslation solo crea un efecto de traslación,...
-
Tutorial Sistemas de Coordenadas y cámaras en XNA (tutoriales en : bzkgaming ) Hola bueno siguiendo con la introducción a la lógica de ...
Entradas populares Siempre
-
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 tutoria...
-
Tutorial Dibujar un modelo 3D en XNA (Tutorial en bzkGaming ) Hola pues el inicio tan esperado de la creación de un videojuego está por...
-
Tutorial Aspectos básicos en XNA (tutoriales en : http://bzkgaming.wordpress.com/ ) Hola, antes que nada debes de saber que los tutoriale...
-
Tutorial Sistemas de Coordenadas y cámaras en XNA (tutoriales en : bzkgaming ) Hola bueno siguiendo con la introducción a la lógica de ...
-
Mas sobre XNA en bzk Gaming en la seccion de XNA crea tus propis videojuegos Hola, bienvenidos sean de nuevo a este tutorial de XNA en 3D...
Etiquetas
XNA
Tutorial
Videojuegos
windows phone 7
C#
Microsoft
Video
Xbox 360
3D
Programacion
C
Lanzamiento
Linux
Mexico
curso
telefono
windows
wp7
2D
APP HUB
America latina
Andorid
Archivos
Basic
Blog
C++
Camara
Conectar
Estructuras
HD
IBM
Internet
Ipod
Keyboard
Kinect
Kinect vs Move
Kinect vs Wii
LG optimus 7
Lucid
Mouse
Noticia
Python
Raton
SQL
Teclado
Utilidad
Vector
Visual
Visual Basic
XNA 4.0
XNA Frameworks
aplicaciones
celular
celulas fotoelectricas
desarrolladores
descargar
energías renovables
input
java
juegos
lenguajes
php
phpMyAdmin
precio
ruby
ubuntu


3 comentarios:
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
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
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 :)
Publicar un comentario en la entrada