Saltar la navegación

4.4. El sonido

1. Librerías de sonido

El sonido es un elemento imprescindible en cualquier videojuego ya que dota de mayor realismo y emoción durante el juego. Hay videojuegos como "Super Mario" que se han hecho famosos por su banda sonora y son reconocibles por todos. 

Una librería es un conjunto de subprogramas que amplían la funcionalidad de otro (o de un lenguaje en este caso) más allá de aquella para la que se concibió. Con Processing podemos añadir librerías que realicen funciones que no podemos conseguir con la versión inicial. Podemos incorporar librerías para manejar sonido y reproducir un sonido, por ejemplo, cuando se pulse una tecla determinada. Una de las más utilizadas es librería Minim

Mimin está incluida en Processing y para usarla basta con importarla mediante el código:

import ddf.minim.*;

El el siguiente vídeo se explica el proceso con detalle:

Puedes encontrar muchos sonidos gratis para juegos en Internet. Una de estas páginas es http://www.sonidosmp3gratis.com/ donde encontrarás multitud de sonidos y efectos sonoros clasificados.

Invasores del espacio con sonido

A continuación tienes el código de invasores del espacio con sonido de los disparos láser y de la explosión de la nave. Busca las líneas utilizadas para poder añadir los sonidos.

También necesitas los dos archivos de sonido utilizados que también deben estar en la carpeta data. Los puedes descargar desde el siguiente enlace 

import ddf.minim.*;
Minim sonido;
AudioSample laser;
AudioSample explosion;

// variables globales
float x = random( 0, 500);// nave
float y = 0;
float velocidad = 4;

float xc = 0 ;// cañón
float yc = 0 ;

float xr = 150; // rayo laser
float yr = 260;
float distancia = 1000 ;
   
float i = 0; // ángulo de disparo

void setup() {
  size(500, 500);
  sonido = new Minim(this);
  laser = sonido.loadSample("disparo_laser.mp3");
  explosion = sonido.loadSample("explosion.mp3");
  
  noStroke();
}

void draw() {
  frameRate(30);
  background (10);
  rectMode(CORNER); 
  fill(#1B482A);
  rect(0, height-20, width, 20); // suelo
  fill(#89592C);
  rect((width/2)-25, height-30, 50, 30);  // base de cañón
  nave();
  xr = xr + sin(i); // movimiento de laser
  yr = yr - cos(i); 
  
  if  (key == ' ') {  // disparo 
    disparo();
    laser.trigger();    
    key = 'n';
  }
  rectMode(CENTER);
  canon(); 
  if (keyPressed && (key == CODED)) { //movimiento de cañón
    if (keyCode == LEFT) {
      i -= 0.02;
    } else if (keyCode == RIGHT) { 
      i += 0.02;
    }
  }
}

void canon() {
  xc = width/2;
  yc = height-40;
  translate(xc, yc);
  rotate(i);
  fill(#5F3A15);
  rect(0, 0, 20, 70);
}

void nave() {
  fill(#E3E3C0);
  ellipse(x, y, 50, 15);
  ellipse(x, y, 30, 25);
  y += 4 ;
  if ( x > width + 100) velocidad = -4;
  if (x < -100) velocidad = +4;

  //println(x); //descomentar para ver la variable x en la consola
  x = x + velocidad;
  if ( y > height-20) {
    y = 0;
    x = random(0, width);
  }
} 

void disparo() {
  xr = width/2 ;
  yr = height-40;  
  for (int n=1; n<1000; ++n) {   
    xr = xr + sin(i);
    yr = yr - cos(i);
    distancia = dist(xr, yr, x, y);    
    if (distancia < 25) {  //explosión
      fill(#CB4C10);
      ellipse(x, y, 100, 100);
      laser.stop();
      explosion.trigger();
      y = -100;
      x = random(0, width);
    } else {
      fill(#E5D15A);     
      ellipse(xr, yr, 15, 15);
    }
  }
}

Motus dice Ha sido emocionante conocer…

¿Cómo te has sentido en este aparto? ¿Ha sido emocionante conocer las librerías? Una actividad de clase puede hacernos sentir de muchas maneras: insegura, feliz, triste, orgulloso…

Cómo nos sentimos ante una tarea hace que contestemos de una forma diferente. Por eso te invito a que, cuando te enfrentes a una tarea, primero pienses en qué te hace sentir a ti y a los demás para poder afrontarla mejor.

Conocer tus emociones y las de los demás te ayudará a:

  • Pedir ayuda porque en equipo siempre se trabaja mejor.
  • Relajarte para contestarla utilizando técnicas de relajación.
  • Pensar en cómo podrás contestarla antes de hacerlo para planificar bien tu trabajo.

¡Haz caso a tus emociones!

2. Revisa lo aprendido hasta ahora

¡¡ Cuantas cosas nuevas!! ¿Verdad?

Reflexiona un momento sobre todo lo que has aprendido hasta llegar aquí y completa el PASO 3 (Reviso lo aprendido) de tu Diario de aprendizaje.

Recuerda:
1.   Pregunta a tu profesor o profesora si lo vas a rellenar en papel o en el ordenador.
2.   Si lo rellenas en el ordenador, no te olvides de guardarlo en una carpeta que más tarde puedas localizar. 

¡Ánimo, ya queda poco!

Motus dice ¡Magnífico! Fin del primer asalto

Ahora que acabas de explorar y trabajar con muchas de las funciones de Processing es un buen momento para hacer balance en común con el resto de la clase. En este balance puedes hablar de lo que ha supuesto completar el primer tramo de tu camino, ya eres consciente de todo lo que has tenido que poner de tu parte para conseguirlo

No te diré que era algo fácil y que no requería mucho esfuerzo. Todo lo contrario, estoy seguro de que has tenido que sobreponerte a las dificultades y al desánimo, pero ¿sabes qué? Estoy orgulloso de que, a pesar de todo, hayas llegado hasta aquí. Ese es el gran logro, no te has rendido ni has sido cobarde ante las dificultades y ahora estás preparado para mirar hacia delante.

¡Sigue así! ¡Nunca te rindas!