Tutorial 10 - Creació d'un joc (II)
Pas 12 de 22
Afegirem el moviment de vibració de les mines en l'escenari. Creem una variable nova a l'inici de la programació, juntament amb les variables course
, speed
i numMines
, que anomenarem vibration
. Hi assignem un valor de 5
.
var vibration:Number = 5;
Programarem que la posició de la mina variï, des de la posició en la qual es troba en cada moment, a una nova posició aleatòria que sigui a una distància màxima de 5 píxels de la posició actual, que és la quantitat que hem assignat a la variable vibration
.
És a dir, si la posició actual d'una mina és x=200
i y=300
, a l'instant següent el valor d'x
estaria entre 195
i 205
, mentre que el valor d'y
podria estar entre 295
i 305
. D'aquesta manera, la mina vibrarà un màxim de 5 píxels en cada sentit (horitzontal i vertical).
Tal com hem après anteriorment, la sentència
Math.random() * vibration
tornarà un valor entre 0
i 5
(que és el valor que hem donat a la variable vibration
).
Per tant, la sentència
Math.random() * vibration - Math.random() * vibration
tornarà un nombre entre -5
(0-5) i 5
(5-0).
Dins de la funció enemy
(que s'executa cridada per un ENTER_FRAME
de cada mine
), però fora del condicional que avalua si hi ha xoc entre la mina i la nau, escriurem el codi següent:
e.target.x += Math.random() * vibration - Math.random() * vibration;
e.target.y += Math.random() * vibration - Math.random() * vibration;
Per evitar que amb aquesta vibració aleatòria la mina pugui acabar fora de l'escenari, dins de la mateixa funció afegirem unes sentències condicionals que avaluïn si la mina és fora dels límits, i si hi és la tornarem a col·locar en el límit de l’escenari.
if (e.target.x < 0)
{
e.target.x = 0;
}
Aquest condicional evitarà que la nau surti pel costat esquerre de l'escenari. Hem d’afegir-hi altres condicionals similars per a la resta dels casos (si x > 550
llavors que x = 550
, si y < 0
llavors y = 0
, i si y > 400
llavors y = 400
).