Prova a sostituire il tuo processo 'legno' con questo e dimmi se funziona con la logica 'corretta' che avevi pensato.
Code: Select all
//--------------------------------------------##LEGNO
process legno(x,y)
private
begin
graph=3;
walls=walls+1;
loop
y=y-2; //Velocità risalita verso l'alto
if(y<1) walls=walls-1; score=score+5; break; end //se superi il bordo superiore muori
//Controlla collisione con personaggio
if(collision(type marco) && palla==1)
//Se appallottolato calcola l'angolo di rotazione da usare
if (id_marco.x > x)
angle-=5000; //Rotazione Oraria
score+=1;
else
angle+=5000; //Rotazione Antioraria
score+=1;
end
end
frame;
end
end
Con la modifica che ho apportato controlla la posizione del personaggio rispetto al centro del muro di legno e non rispetto alle due coordinate fisse che avevi aggiunto, in questo modo seleziona, solo in caso di collisione appallottolato, l'angolo di rotazione da applicare.
Si potrebbe cercare di migliorare ulteriormente la 'fisica' della rotazione valutando l'angolo precedente, infatti ora se ti sposti da un lato all'altro del muro la rotazione ribalta immediatamente il muro, quando invece dovrebbe, almeno a livello 'fisico', non cambiare più rotazione (non so se mi sono spiegato

).
Il problema dei 45 minuti per testare non l'ho capito?!?
Nel processo 'genera' è commentata la seguente istruzione:
Code: Select all
//parte=0; //DA TOGLIERE, MESSO SOLO PER GENERARE SEMPRE LA PRIMA PARTE DI MURI IN DEBUG
se tu la togli e metti come valore il numero di livello da 'testare', il gioco continua a proporti quel livello e puoi fare tutti i test del caso sul livello specifico.
Ovviamente devi rimuoverla quando vuoi tutti i livelli o se vuoi controllare l'esecuzione completa del gioco, ma in quel caso sei costretto, probabilmente, a perdere i 45 minuti che hai 'segnalato'

In questa fase potrebbe far comodo anche un menu nascosto di debug in cui abiliti o meno alcune funzionalità di trace, o come in questo caso, la possibilità di selezionare il livello da proporre in continuazione x 'debuggare' il tutto.
Alla prossima!