JavascriptProva

martedì 22 gennaio 2013

Collisioni: facciamo i conti con l'ostacolo

A quest'ultima funzione, che mi blocca l'oggetto per tutta la parte di schermo che supera 400
 //CODICE CHE MUOVE L'OGGETTO
 if(MoveRight) MuoviADestra();
 if(MoveLeft) MuoviASinistra();
 if (destro(oggetto)>400) {
  oggetto.style.left=(400-larghezza(oggetto))+"px";
  MoveRight=false;
 }else{
  MoveRight=true;
 }
ora sostituisco la funzione daSinistra().
 //CODICE CHE MUOVE L'OGGETTO
 if(MoveRight) MuoviADestra();
 if(MoveLeft) MuoviASinistra();
 if (daSinistra(oggetto,ostacolo)) {
  oggetto.style.left=(sinistro(ostacolo)-larghezza(oggetto))+"px";
  MoveRight=false;
 }else{
  MoveRight=true;
 }
E ottengo la possibilità di aggirare l'ostacolo, ossia l'oggetto impatta contro il limite dell'ostacolo solo nel punto in cui l'ostacolo è presente, altrimenti arriva fino in fondo allo schermo.

No! Correzione:
 //CODICE CHE MUOVE L'OGGETTO
 if(MoveRight) MuoviADestra();
 if(MoveLeft) MuoviASinistra();
 if (prevDex<=sinistro(ostacolo) && daSinistra(oggetto,ostacolo)) {
  oggetto.style.left=(sinistro(ostacolo)-larghezza(oggetto))+"px";
  MoveRight=false;
 }else{
  MoveRight=true;
 }
Così funziona, altrimenti mi porta l'oggetto sulla sinistra dell'ostacolo anche quando si trova sulla destra.

Se muovo l'oggetto da destra, invece, esso attraversa ancora l'ostacolo. Inseriamo anche il reciproco della funzione da destra.
 //CODICE CHE MUOVE L'OGGETTO
 if(MoveRight) MuoviADestra();
 if(MoveLeft) MuoviASinistra();
 if (prevDex<=sinistro(ostacolo) && daSinistra(oggetto,ostacolo)) {
  oggetto.style.left=(sinistro(ostacolo)-larghezza(oggetto))+"px";
  MoveRight=false;
 }else{
  MoveRight=true;
 }
 if (prevSin>=destro(ostacolo) && daDestra(oggetto,ostacolo)) {
  oggetto.style.left=destro(ostacolo)+"px";
  MoveLeft=false;
 }else{
  MoveLeft=true;
 }
E funziona altrettanto.

Nessun commento:

Posta un commento