Upload
deliz
View
39
Download
0
Embed Size (px)
DESCRIPTION
Programación Gráfica. 7 . Programación en Videojuegos 2D I. 7.1 Sprites. Sprites. Es un mapa de bits que se dibujan en pantalla. Debe tener transparencias. Para crear una animación se crea una secuencia de sprites. Secuencia de sprites. Para más sprites: http://www.nes-snes-sprites.com. - PowerPoint PPT Presentation
Citation preview
Programación Gráfica7. Programación en Videojuegos 2D I.
7.1 Sprites
Sprites Es un mapa de bits que
se dibujan en pantalla.
Debe tener transparencias.
Para crear una animación se crea una secuencia de sprites.
Para más sprites: http://www.nes-snes-sprites.com
Secuencia de sprites
Utilizando 1 imagen Para mover sólo cambiamos la
posición:
void SetPosition(float x, float y){
position->x = x;position->y = y;
}
Utilizando 1 imagen Para pintar sólo dibujamos la
imagen en la posición del sprite.
void Draw( Graphics g ){
g->DrawImage(image, posX, posY);}
7.2 Background
Utilizando 1 imagen
Utilizando 1 imagen
Utilizando 1 imagen Movemos el background hacia la izquierda a una
velocidad constante.
Move(){
posX += velocityX;
if( posX <= -pantalla->width)posX += pantalla->width;
}
Utilizando 1 imagen Pintamos la imagen hasta que complete toda el
ancho de la pantalla.
Draw(Graphics graphics){
for(int i=posX; i<pantalla->width: i+=image->width)
graphics->drawImage(image, i, 0);}
Utilizando un conjunto de imágenes
Más imágenes background en http://www.panelmonkey.org
Utilizando un conjunto de imágenes
Utilizando un conjunto de imágenes Movemos de derecha a izquierda.
Move() {posX += velocityX;
if(posX <= -imagen[ imagen_actual] == nImage) {posX += width;image_actual++;
if(image_actual == nImage)image_actual = 0;
}}
Utilizando un conjunto de imágenes Pintamos todo el conjunto de imágenes que
representan en fondo del videojuego.
Draw(Graphics graphics){
for(int i=posX, j=imagen_actual; i<pantalla->width; i+=imagen[j]->width)
{graphics->drawImage(image[j++], i, 0);
if(j == nImage) j = 0;}
}
7.3 Collision Detection
Collision Detection Conjunto de algoritmos matemáticos que nos
permiten detectar si 2 objetos están colisionando.
Sin ellas podemos decir que NO puede existir un videojuego.
El algoritmo varía dependiendo de la forma de los objetos.
El algoritmo clásico es collisión box, y hoy en día se utiliza per-pixel-collision.
Detección de Colisiones Entre Círculos
Detección de Colisiones Entre Círculos
No hay colisión
Hay colisión
Hay colisión
Fuente: http://juank.black-byte.com/xna-colisiones-2d/
Detección de Colisiones Entre Círculosbool IsCollision(Sprite sp1, Sprite sp2){
float dx = (sp2->x – sp1->x);float dy = (sp2->y – sp1->y);
float distance = sqrt( dx*dx + dy*dy);
return ( distance <= (sp1->radio + sp2->radio))
}
Collision Box
Collision Box
Fuente: http://juank.black-byte.com/xna-colisiones-2d/
Collision Boxbool IsCollision(Sprite sp1, Sprite sp2){
if( (min( sp1->width + sp1->x, sp2->width + sp2->x) >= max(sp1->x, sp2->x)){if( (min( sp1->y, sp2->y) >= max(sp1->y + sp1->height, sp2->height))return true;}
return false}
Per-Pixel-Collision La detección de
colisiones se realiza por la superposición de los pixeles entre 2 sprites.
Para más información: http://www.significant-bits.com/the-1-pixel-collision-box
Preguntas ¿?