Ciao a tutti,
sto realizzando un giochino tipo guerre stellari, finora ciò che sono riuscito a fare è:
la nave che si muove nello stage
lo sparo
i nemici random e la collisione
e ad incrementare una variabile per il punteggio.
Non essendo un grande ActionScripter mi sono servito di un tutorial che mi è stato consigliato da un amico qui del forum per la precisione l'articolo è questo (che ha diversi articoli correlati):
http://www.sastgroup.com/leggi-tutor...ale%20(parte1)
Adesso per chiarezza vado a riassumere in breve come ho sistemato gli oggetti nello stage e quali script ho associato loro.
Bene nel primo frame del filmato ho questo codice:
codice:
numEnemy=10;
attesa=6000; //6 sec
creanemico();
function creanemico() {
intervallo = setInterval(pausa,attesa);
function pausa() {
nexT();
}
}
function nexT(){
for (i=1; i<=numEnemy; i++){
nemico.duplicateMovieClip( "nemico"+i, i );
}
creanemico();
}
ho creato un clip chiamato "nave" che corrisponde alla navicella del giocatore a questa ho associato questo script:
codice:
onClipEvent(load){
speed=20; //velocita navicella
_root.palla._visible=false; //nasconde la pallottola
counter=1; //numero spari utile per duplicare movieclip
}
onClipEvent (enterFrame) {
speed=20;
if (Key.isDown(Key.RIGHT)) {
this._x+=speed;
}
else if (Key.isDown(Key.LEFT)) {
this._x-=speed;
}
if (Key.isDown(Key.DOWN)) {
this._y+=speed;
}
else if (Key.isDown(Key.UP)) {
this._y-=speed;
}
else if (Key.isDown(Key.SPACE)) {
counter++;
_root.palla.duplicateMovieClip( "palla"+counter,counter );
_root["palla"+counter]._visible=true;
}
}
Ho creato un altro movie clip che ho chiamato "palla" che corrisponde allo sparo della navicella a cui ho associato questo codice:
codice:
onClipEvent (load) {
speed=10; //velocita della pallottola
this._y=_root.nave._y-30; //-30 perchè allineo la pallottola alla punta della nave
this._x=_root.nave._x;
}
onClipEvent (enterFrame) {
this._y-=speed; //fa muovere verso l'alto
if (this._y<=0){ //appena arrriva alla fine dello schermo
this.removeMovieClip(); //toglilo dallo schermo
}
//collisione col nemico
for (i=1; i<=_root.numEnemy; i++){
if (this.hitTest( _root["nemico"+i])){ //collisione col nemico
_root.punteggio+=100; //punteggio
//_root["enemy"+i].gotoAndPlay( 2 ); //fa vedere la distruzione
removemovieclip(_root["nemico"+i]); //elimima da stage
}
}
}
poi ho creato un altro movie clip che ho chiamato "nemico" che corrisponde alle navicelle aliene a cui ho associato il codice:
codice:
onClipEvent (enterFrame) {
this._y+=enemySpeed;
if (this._y>=800) { //supera la dim massima del mio stage di esempio
reset();
}
}
onClipEvent (load) {
function reset(){
this._x=random(800);
this._y=random(0);
enemySpeed=random(6)+1;
}
reset();
}
in ultimo dopo aver creato una variabile nel primo frame del filmato con questa dicitura:
ho creato una casella di testo con nome variabile punteggio (ovviamente)
per dovere devo anche fare la premessa che ho usato un frame rate abbastanza alto affinchè le animazioni vengano piuttosto fluidi pari a 30 fr/s.
Problema 1:
Il gioco sembra tuttosommato funzionare se non fosse per il fatto che ad un certo punto si blocca, la prima cosa che mi è venuta in mente è stata quella di abbassare la frequenza dei fotogrammi a 15 (risultato=animazioni scattose) ma il problema persiste. Così penso che magari dipenda da qualche ciclo o da qualche script maligno (tra quelli citati sopra perchè altri non ce ne sono).
Problema 2:
Se avete dato un'occhiata al primo codice ovvero quello che s trova sul primo frame della timeline principale vi accorgerete che il clip nemico viene duplicato random per 10 volte ogni 6 secondi e questo funziona solo che mi carica anche un undicesimo nemico a cui non viene applicata la proprietà hitest quindi non gli si può sparare e questo ciclicamente ogni 6 secondi perchè ripeto ogni 6 secondi i nemici vengono duplicati.
Spero che possiate aiutarmi ho speso diverso tempo a fare questa cosa e spero di poterla portare al termine.
Vi ringrazio anticipatamente per aver letto fin qui