¿Qué es un juego sin música y efectos especiales?. Es como quitarle la guinda al pastel.
En esta entrada seguimos construyendo Ghost’n Goblins y le añadiremos música y efectos especiales.
Un poco de música
Para darle más ambiente a el juego, podemos ponerle música y efectos especiales.
Para ejecutar un sonido, desde el editor, debemos añadir el componente TcastleSound. Este es un componente no visual, para ello ve al árbol de componentes, y con botón derecho selecciona Non-Visual Components. Y el menú que se despliega selecciona Add Non-Visual Component. Y en el nuevo menú selecciona Sound(TCastleSound).

Cómo vamos tener dos sonidos, uno la música y el otro el efecto especial de lanzar el arma, añade dos componentes de estos.
Pulsa sobre cada uno de ellos con el botón derecho o bien pulsando la tecla F2, y asígnales los siguientes nombres: ArthurShot y MusicaDeFondo.

Ahora crea una carpeta llamada Sonidos dentro de ella pondremos los sonidos que usemos. El formato que usaremos será WAV, el cual es reconocido por CGE. Pero los archivos que usaremos están en MP3, así que hay que convertirlos. Puedes usar cualquier programa o servicio web. O sino puedes usar los archivos ya convertidos del código fuente del proyecto.


Y a la propiedad URL de ARTHURHIT asígnale el archivo de sonido ARTHURHIT.

Con este paso yo tenemos ya tenemos los recursos de sonido cargados. Ahora selecciona con el botón derecho al elemento que representa a Arthur, en el menú selecciona Add Behavior (Extends Parent Transform), para luego seleccionar Sound Source (TcastleSoundSource).

Renombra el componente recién creado como MusicaActual. En su propiedad Sound selecciona MusicaDeFondo. La propiedad SoundPlaying, ponla a False, para que no empiece a sonar. Y la propiedad Spatial, también ponla a False, esta propiedad ajusta el volumen según la distancia dónde se genera el sonido. Pero en este caso deseamos el efecto contrario.
Controlando el sonido desde código
En la sección uses añade la unidades CastleSoundEngine para que esté disponible el motor de sonido de CGE.

Ahora en código del programa, en la sección published de TmainView añade los dos componentes TCastleSound que hemos creado en el editor.

En el evento Start, iniciaremos la música. Añade una variable llamada Sonido del tipo TcastleSoundSource en el evento Start
|
1 2 3 4 |
procedure TViewMain.Start; var Sonido: TCastleSoundSource; begin |
Y dentro de este evento escribe el siguiente código.
|
1 2 |
Sonido := Arthur.FindBehavior(TCastleSoundsource) as TCastleSoundSource; Sonido.SoundPlaying := True; |
Creamos una fuente de sonido que el componente TCastleSoundSource que hemos añadido a Arthur en el editor. Y empezamos a reproducirlo.
Si queremos tener la opción de apagar la música, podemos asignarle una tecla. En el evento Press, podemos capturar la tecla M y cambiar su propiedad SoundPlaying.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
function TViewMain.Press(const Event: TInputPressRelease): boolean; var Sonido: TCastleSoundSource; begin Result := inherited; if Result then Exit; // allow the ancestor to handle keys if Event.IsKey(keyM) then begin Sonido := Arthur.FindBehavior(TCastleSoundSource) as TCastleSoundSource; Sonido.SoundPlaying := not Sonido.SoundPlaying; Exit(True); end; end; |
Para simplemente ejecutar un sonido cuando Arthur lanza su arma. En el evento Update tenemos un condicional que usamos lanzar el arma. Dentro de este, simplemente añade la línea: SoundEngine.Play(ArthurShot);
Ya solo queda ejecutar el programa, y probar.
Cómo siempre tiene todo el código fuente el github.
Saludos
