miércoles 27 de octubre de 2010
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, lo que vamos hacer hoy es probar como introducir datos desde teclado y ratón a un juego en XNA. Para esto crearemos un nuevo proyecto, vamos a Visual Studio y de ahí Archivo->Nuevo->Proyecto->Visual C#->XNA Game Studio X.X (dependiendo de la versión, para este ejemplo usare la 3.0) y escogemos Windows Game, de nombre le pondré InputTecladoRaton, no muy original pero servirá para reconocerlo.
Antes de comenzar con el código debemos de saber que todo trabajo que tenga que hacerse con el teclado se va hacer con la clase Keyboard es muy fácil su uso ya que solo tiene un método propio, todos los demás son heredados de Object, nosotros usaremos el método GetState() que es un método estático que devuelve el estado actual de nuestro teclado, debemos usar la estructura KeyboardState para asignar o verificar los estados de nuestro teclado ya que posee métodos que nos ayudan a verificar que tecla esta presionada o no.
Como estándar se utilizan las teclas WASD para describir arriba, izquierda, abajo y derecha respectivamente, ya que utilizar las flechas de dirección complica el uso del ratón, por su cercanía.
Al igual que nuestro teclado nuestro ratón posee las mismas características, ya que la clase Mouse, tiene un método GetState() que nos devuelve el estado actual del ratón y la estructura MouseState donde que representa el estado del ratón, a diferencia del teclado el ratón tiene una posición en X y Y que nos representan su posición en pantalla, y además puede indicarnos el uso de la rueda de desplazamiento del ratón.
Para ver las estructuras y clases sigan estos vínculos hasta la referencia en MSDN
Keyboard
KeyboardState
Mouse
MouseState
Teniendo esto en cuanta volvamos a nuestro proyecto recién creado y lo primero que vamos a hacer es sustituir este código :
En el método Update() por el siguiente:
Así que ejecutaremos el proyecto y comprobaremos que cuando presionamos escape se cierre la ventana.
Ahora haremos nuevas pruebas para esto declararemos una variable de clase de tipo color y la iniciaremos con Aqua:
En el metodo Draw la instruccion:
La cambiaremos por
Pero hay que recordar que ciertas acciones en un juego están prohibidas como el hecho que presionemos el botón de caminar hacia adelante y caminar hacia atrás al mismo tiempo, pasara algo extraño si no tenemos en cuenta esto. Así que podemos modificar nuestro código para que le digamos que cambie de color solo cuando una solo tecla esta presionada.
Fíjense que la lógica que use en cada una es diferente, en A decimos: si A esta presionada y B esta suelta y C esta suelta. En B decimos: si B está presionado y A no está presionado y C no está presionado. En C decimos: si C está presionado y A no está presionado y B esta suelta. Claro que esto lo podemos hacer como nosotros queramos es por ello que se los muestro de esta manera.
Ya que terminamos con el teclado, ahora veremos cómo funciona el ratón, ya que el uso de los botones de ratón es el mismo que el de nuestro teclado, a diferencia que tenemos un método para cada botón: izquierdo y derecho, y por tanto no necesitamos pasarle ningún argumento.
Bien se me ocurre que haremos algo divertido con los colores, en XNA la estructura color tiene varias enumeraciones como ya vimos, ese azul pálido, el carmesí y el rojo. Pero el color también se puede hacer con los parámetros del RGB ósea rojo, verde y azul. Así que modificaremos esos parámetros en nuestro color en relación con la, posición de ratón para esto agregaremos dos variables a nivel de clase
Hasta la próxima
Hola, bienvenidos sean de nuevo a este tutorial de XNA en 3D, lo que vamos hacer hoy es probar como introducir datos desde teclado y ratón a un juego en XNA. Para esto crearemos un nuevo proyecto, vamos a Visual Studio y de ahí Archivo->Nuevo->Proyecto->Visual C#->XNA Game Studio X.X (dependiendo de la versión, para este ejemplo usare la 3.0) y escogemos Windows Game, de nombre le pondré InputTecladoRaton, no muy original pero servirá para reconocerlo.
Antes de comenzar con el código debemos de saber que todo trabajo que tenga que hacerse con el teclado se va hacer con la clase Keyboard es muy fácil su uso ya que solo tiene un método propio, todos los demás son heredados de Object, nosotros usaremos el método GetState() que es un método estático que devuelve el estado actual de nuestro teclado, debemos usar la estructura KeyboardState para asignar o verificar los estados de nuestro teclado ya que posee métodos que nos ayudan a verificar que tecla esta presionada o no.
Como estándar se utilizan las teclas WASD para describir arriba, izquierda, abajo y derecha respectivamente, ya que utilizar las flechas de dirección complica el uso del ratón, por su cercanía.
Al igual que nuestro teclado nuestro ratón posee las mismas características, ya que la clase Mouse, tiene un método GetState() que nos devuelve el estado actual del ratón y la estructura MouseState donde que representa el estado del ratón, a diferencia del teclado el ratón tiene una posición en X y Y que nos representan su posición en pantalla, y además puede indicarnos el uso de la rueda de desplazamiento del ratón.
Para ver las estructuras y clases sigan estos vínculos hasta la referencia en MSDN
Keyboard
KeyboardState
Mouse
MouseState
Teniendo esto en cuanta volvamos a nuestro proyecto recién creado y lo primero que vamos a hacer es sustituir este código :
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) this.Exit();
En el método Update() por el siguiente:
if (Keyboard.GetState().IsKeyDown(Keys.Escape)) this.Exit();
Así que ejecutaremos el proyecto y comprobaremos que cuando presionamos escape se cierre la ventana.
Ahora haremos nuevas pruebas para esto declararemos una variable de clase de tipo color y la iniciaremos con Aqua:
GraphicsDeviceManager graphics; SpriteBatch spriteBatch; //juesto despues Color micolor = Color.Aqua;
En el metodo Draw la instruccion:
GraphicsDevice.Clear(Color.CornflowerBlue);
La cambiaremos por
GraphicsDevice.Clear(micolor);
Esto hará que se dibuje según el color que queramos, asi que en el método Update agregaremos este código:
//recuperamos estado del teclado KeyboardState eTeclado = Keyboard.GetState(); if (eTeclado.IsKeyDown(Keys.A)) micolor = Color.Aqua;//cambio de color if(eTeclado.IsKeyDown(Keys.B)) micolor=Color.Black;//cambio de color if(eTeclado.IsKeyDown(Keys.C)) micolor=Color.Crimson;//cambio de color
Con esto lograremos cambiar el color de nuestra pantalla según la tecla que presionamos.
Pero hay que recordar que ciertas acciones en un juego están prohibidas como el hecho que presionemos el botón de caminar hacia adelante y caminar hacia atrás al mismo tiempo, pasara algo extraño si no tenemos en cuenta esto. Así que podemos modificar nuestro código para que le digamos que cambie de color solo cuando una solo tecla esta presionada.
if (eTeclado.IsKeyDown(Keys.A) && eTeclado.IsKeyUp(Keys.B) && eTeclado.IsKeyUp(Keys.C)) micolor = Color.Aqua;//cambio de color if (eTeclado.IsKeyDown(Keys.B) && !eTeclado.IsKeyDown(Keys.A) && !eTeclado.IsKeyDown(Keys.C)) micolor=Color.Black;//cambio de color if (eTeclado.IsKeyDown(Keys.C) && !eTeclado.IsKeyDown(Keys.A) && eTeclado.IsKeyUp(Keys.B)) micolor=Color.Crimson;//cambio de color
Fíjense que la lógica que use en cada una es diferente, en A decimos: si A esta presionada y B esta suelta y C esta suelta. En B decimos: si B está presionado y A no está presionado y C no está presionado. En C decimos: si C está presionado y A no está presionado y B esta suelta. Claro que esto lo podemos hacer como nosotros queramos es por ello que se los muestro de esta manera.
Ya que terminamos con el teclado, ahora veremos cómo funciona el ratón, ya que el uso de los botones de ratón es el mismo que el de nuestro teclado, a diferencia que tenemos un método para cada botón: izquierdo y derecho, y por tanto no necesitamos pasarle ningún argumento.
Bien se me ocurre que haremos algo divertido con los colores, en XNA la estructura color tiene varias enumeraciones como ya vimos, ese azul pálido, el carmesí y el rojo. Pero el color también se puede hacer con los parámetros del RGB ósea rojo, verde y azul. Así que modificaremos esos parámetros en nuestro color en relación con la, posición de ratón para esto agregaremos dos variables a nivel de clase
MouseState edoActual; MouseState edoPasado;
Estas no ayudaran a verificar si se desplazó hacia un lado o hacia el otro, ahora en el método Initialize() agregaremos
edoPasado = Mouse.GetState();
y en el método Update()
//recuperamos estado del mouse edoActual = Mouse.GetState(); if (edoActual.X > edoPasado.X) micolor.R++; if (edoActual.X < edoPasado.X) micolor.R--; edoPasado = edoActual;
Si ejecutamos nos daremos cuenta de que los colores van cambiando según movamos el mouse, peo por que limitarnos a cambiar el rojo y podemos hacerlo a los tres, pero para esto incluiremos condiciones, para cambiar el Azul debemos presionar el botón izquierdo del ratón, para el Verde el derecho y para el rojo que el botón e en medio este presionado. Por lo que nuestro código quedaría más o menos así.
//recuperamos estado del mouse edoActual = Mouse.GetState(); //condicion para rojo if (edoActual.MiddleButton == ButtonState.Pressed) { if (edoActual.X > edoPasado.X) micolor.R++; if (edoActual.X < edoPasado.X) micolor.R--; } //condicion para azul if (edoActual.LeftButton == ButtonState.Pressed) { if (edoActual.X > edoPasado.X) micolor.B++; if (edoActual.X < edoPasado.X) micolor.B? } //condicion para verde if (edoActual.RightButton == ButtonState.Pressed) { if (edoActual.X > edoPasado.X) micolor.G++; if (edoActual.X < edoPasado.X) micolor.G--; } edoPasado = edoActual;
Aquí tienen un video de cómo se debería ver. Espero que les haya gustado el tutorial y no olviden comentar.
Hasta la próxima
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


1 comentarios:
gracias por el post, me ayudo a comprender muy bien lo de las ordenes de mando en xna^^
Publicar un comentario en la entrada