2. Agenda
Describir como trabaja el efecto de vibración.
Mostrar como un programa XNA puede
controlar la vibración de un gamepad.
Adicionar vibración a un juego.
Como poder cambiar el comportamiento de
un juego modificando el codigo.
3. VibracióndelgamepaddelXbox
El gamepad tiene dos motores que controlan
dos ruedas.
Las ruedas giran a diferentes velocidades
para hacer vibrar el gamepad.
El juego puede controlar la fuerza dada a los
motores para obtener diferentes niveles de
vibración
4. Velocidaddevibración
El motor de la izquierda
provee un sonido de baja
frecuencia.
El motor de la derecha
provee una vibración de alta
frecuencia.
XNA permite controlar la
fuerza que se les da a estos
motores
5. ControlarlavibracióndelgamepadenXNA
Ya se ha utilizado la clase GamePad
anteriormente
Sabemos que provee el método GatState que
es utilizado para leer el estado del juego.
Además provee un método llamado
SetVibration, el cual es utilizado para
controlar la vibración del gamepad.
El método contiene 3 parametros
GamePad.SetVibration ( PlayerIndex.One, 1, 0 ) ;
6. Seleccionarelgamepadacontrolar
Este valor del parámetro identifica el
gamepad a ser controlado.
Se utiliza este para decirle a GetSate de que
gamepad habrá que leer.
Es posible intentar controlar otros gamepads,
que no están, pero el método no hará nada
GamePad.SetVibration ( PlayerIndex.One, 1, 0 ) ;
7. Configurarlosnivelesdevibración
Este valor del parámetro, establece la
cantidad de vibración izquierda (baja
frecuencia) que el motor debe producir.
El valor viene dado por un flotante entre 0 y 1
En este caso se ha establecido la máxima
vibración.
Si se establece el valor de cero, la vibración se
apaga.
GamePad.SetVibration ( PlayerIndex.One, 1, 0 ) ;
8. Establecerelniveldevibración
Este valor del parámetro la cantidad de duración
en el lado derecho (frecuencia baja) que el
motor debe producir.
Es un valor flotante entre cero y uno.
Trabaja de la misma manera que el valor de las
izquierdas, pero el efecto de la liberación es un
poco diferente.
Una vez que se ha configurado el nivel de
vibración, el pad continuará vibrando hasta que
se le diga algo diferente.
GamePad.SetVibration ( PlayerIndex.One, 1, 0 ) ;
9. Demostración.
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back ==
ButtonState.Pressed)
this.Exit();
GamePadState pad1 = GamePad.GetState(PlayerIndex.One);
if (pad1.Buttons.X == ButtonState.Pressed)
GamePad.SetVibration(PlayerIndex.One, 1, 0);
base.Update(gameTime);
}sus
10. Detenerlavibración
El programa debe decir al gamepad que debe de
tener la liberación cuando el botón no esté
presionado.
Una manera fácil de alcanzar esto es adicionar
un “else” a la sentencia condicional.
Esta versión del código hace que el gamepad
vive cuando el botón de color azul esté
presionado.
if (pad1.Buttons.X == ButtonState.Pressed)
GamePad.SetVibration(PlayerIndex.One, 1, 0);
else
GamePad.SetVibration(PlayerIndex.One, 0, 0);
11. Adicionarvibraciónaljuego
El programa debe de hacer que el gamepad vibre
cuando la intensidad del color rojo este por
volverse cero.
La condición debe comparar 2 valores y
ejecutarlo cuando uno mas grande que el otro.
if (redIntensity > 220)
GamePad.SetVibration(PlayerIndex.One, 1, 0);
else
GamePad.SetVibration(PlayerIndex.One, 0, 0);
12. Combinacióndepruebas
Si queremos que la vibración comience
cuando cualquier color exceda el valor de 220.
Realizamos la combinaciones respectivas
if (redIntensity > 220 ||
greenIntensity > 220 ||
blueIntensity > 220)
GamePad.SetVibration(PlayerIndex.One, 1, 0);
else
GamePad.SetVibration(PlayerIndex.One, 0, 0);
13. Usandolosbloquesparamejorarla
apariencia
Crear bloques es una buena manera de
clarificar el código.
En este caso se separa el código de la
condiciones.
if (redIntensity > 220 ||
greenIntensity > 220 ||
blueIntensity > 220)
{
GamePad.SetVibration(PlayerIndex.One, 1, 0);
}
else
{
GamePad.SetVibration(PlayerIndex.One, 0, 0);
}
14. Resumen
El gamepad del Xbox tiene 2 motores de
vibración para diferentes frecuencias de
vibración en el gamepad.
La clase GamePad, la cual es parte del XNA
provee un método llamado SetVibration el
cual controla la intensidad que los motores
producen.
Una vez un gamepad ha comenzado a vibrar,
este seguirá hasta que se le de otra orden
diferente.
15. VerdaderooFalso
El Xbox 360 contiene motores de vibración.
Un programa XNA puede hacer que el teclado
vibre.
Un programa XNA puede controlar solo la
vibración de un gamepad.
La intensidad de la vibración de un gamepad
es dada por un valor entre 0 y 1
El gamepad detiene la vibración cuando
pierde el contacto con el juego.
16. VerdaderooFalso
El Xbox 360 contiene motores de vibración.
Un programa XNA puede hacer que el teclado
vibre.
Un programa XNA puede controlar solo la
vibración de un gamepad.
La intensidad de la vibración de un gamepad
es dada por un valor entre 0 y 1
El gamepad detiene la vibración cuando
pierde el contacto con el juego.
17. VerdaderooFalso
El Xbox 360 contiene motores de vibración.
Un programa XNA puede hacer que el teclado
vibre.
Un programa XNA puede controlar solo la
vibración de un gamepad.
La intensidad de la vibración de un gamepad
es dada por un valor entre 0 y 1
El gamepad detiene la vibración cuando
pierde el contacto con el juego.
18. VerdaderooFalso
El Xbox 360 contiene motores de vibración.
Un programa XNA puede hacer que el teclado
vibre.
Un programa XNA puede controlar solo la
vibración de un gamepad.
La intensidad de la vibración de un gamepad
es dada por un valor entre 0 y 1
El gamepad detiene la vibración cuando
pierde el contacto con el juego.
19. VerdaderooFalso
El Xbox 360 contiene motores de vibración.
Un programa XNA puede hacer que el teclado
vibre.
Un programa XNA puede controlar solo la
vibración de un gamepad.
La intensidad de la vibración de un gamepad
es dada por un valor entre 0 y 1
El gamepad detiene la vibración cuando
pierde el contacto con el juego.
20. VerdaderooFalso
El Xbox 360 contiene motores de vibración.
Un programa XNA puede hacer que el teclado
vibre.
Un programa XNA puede controlar solo la
vibración de un gamepad.
La intensidad de la vibración de un gamepad
es dada por un valor entre 0 y 1
El gamepad detiene la vibración cuando
pierde el contacto con el juego.