25
Programación Gráfica 7. Programación en Videojuegos 2D I.

Programación Gráfica

  • 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

Page 1: Programación Gráfica

Programación Gráfica7. Programación en Videojuegos 2D I.

Page 2: Programación Gráfica

7.1 Sprites

Page 3: Programación Gráfica

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.

Page 4: Programación Gráfica

Para más sprites: http://www.nes-snes-sprites.com

Secuencia de sprites

Page 5: Programación Gráfica

Utilizando 1 imagen Para mover sólo cambiamos la

posición:

void SetPosition(float x, float y){

position->x = x;position->y = y;

}

Page 6: Programación Gráfica

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);}

Page 7: Programación Gráfica

7.2 Background

Page 8: Programación Gráfica

Utilizando 1 imagen

Page 9: Programación Gráfica

Utilizando 1 imagen

Page 10: Programación Gráfica

Utilizando 1 imagen Movemos el background hacia la izquierda a una

velocidad constante.

Move(){

posX += velocityX;

if( posX <= -pantalla->width)posX += pantalla->width;

}

Page 11: Programación Gráfica

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);}

Page 12: Programación Gráfica

Utilizando un conjunto de imágenes

Más imágenes background en http://www.panelmonkey.org

Page 13: Programación Gráfica

Utilizando un conjunto de imágenes

Page 14: Programación Gráfica

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;

}}

Page 15: Programación Gráfica

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;}

}

Page 16: Programación Gráfica

7.3 Collision Detection

Page 17: Programación Gráfica

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.

Page 18: Programación Gráfica

Detección de Colisiones Entre Círculos

Page 19: Programación Gráfica

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/

Page 20: Programación Gráfica

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))

}

Page 21: Programación Gráfica

Collision Box

Page 22: Programación Gráfica

Collision Box

Fuente: http://juank.black-byte.com/xna-colisiones-2d/

Page 23: Programación Gráfica

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}

Page 24: Programación Gráfica

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

Page 25: Programación Gráfica

Preguntas ¿?