XNA: Mover sprites, texturas, textos…

enero 23, 2009


El movimiento es algo tan básico para un juego que no existe ningún juego sin movimiento. Por ello, considero que de aquí en adelante empieza el conocimiento hacía el objetivo que tengo marcado. Un juego.

Lo primero a entender en el movimiento en XNA es que todo lo relacionado con el movimiento se desarrolla en el método Update. Y no solo el movimiento sino la detección de colisiones, las posiciones, la inteligencia artificial… En definitiva, todo sucede ahí. Es el cerebro del juego, su sistema nervioso.

Para mover un sprite debemos primero crear y dar valor a su posición. Así pues crearemos el atributo pos del tipo Vector2 y también necesitaremos definir a que velocidad se moverá el sprite. Para ello utilizaremos un float.

float speed = 2f;
Vector2 pos = new Vector2(0,0);
//también puede inicializarse así: Vector2 pos = Vector2.Zero;

Doy por supuesta la carga del sprite y me voy a centrar en hacer un simple ejemplo de movimiento de un sprite por la ventana. En este ejemplo haremos que el sprite de vueltas por el borde de la venta de forma indefinida de forma que hará la forma de un cuadrilátero su recorrido.

Todo lo que ponga a partir de este momento va dentro del método Update.

if(pos1.X < Window.ClientBounds.Width -texture.Width && pos1.Y == 0){
pos1.X += speed1;
}else if(pos1.X >= Window.ClientBounds.Width - texture.Width && pos1.Y < Window.ClientBounds.Height - texture.Height){
pos1.Y += speed1;
}else if(pos1.Y >= Window.ClientBounds.Height - texture.Height && pos1.X > 0){
pos1.X -= speed1;
}else if(pos1.Y <= Window.ClientBounds.Height + texture.Height && pos1.X == 0){
pos1.Y -= speed1;
}

Es bien sencillo el código sin duda. El sprite puede hacer 4 movimientos solamente: Desplazarse a la derecha, hacía abajo, a la izquierda o hacía arriba y siempre bajo una condiciones bien concretas. He elegido que haga un recorrido en el sentido de las agujas del reloj.

Se debe siempre mantener la perspectiva y contar con las X y las Y en todo momento aunque solo queramos mover una de las dos. Nos movemos en un plano y por tanto, ambas son importantes.

Esto por supuesto también es valido para los textos o cualquier objeto que deseemos mover.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: