Devo ricreare una funzione che mi restituisca la sovrapposizione non alla proiezione intera ma alla semiproiezione di un oggetto.
Ecco: dimezzando le funzioni che intercettano la posizione dell'oggetto sulla proiezione orizzontale o verticale dell'ostacolo, ottengo delle funzioni che ne intercettano la posizione oltre il margine sinistro o destro o alto o basso.
Dalla fusione delle funzioni posso ottenere l'intercettazione dell'oggetto sulle quattro emiproiezioni alta, bassa, destra, sinistra.
Collaudate: funzionano.
//intercetta la posizione sulla proiezione orizzontale dell'ostacolo function HorProject(ost){ if(oggetto==ost) return false; if(Hi<basso(ost) && Lo>alto(ost)) return true; } //intercetta la posizione sulla proiezione verticale dell'ostacolo function VertProject(ost){ if(oggetto==ost) return false; if(Sx<destro(ost) && Dx>sinistro(ost)) return true; } //intercetta la posizione sulla destra dell'ostacolo function VertProjectDestra(ost){ if(oggetto==ost) return false; if(Dx>sinistro(ost))return true; } //intercetta la posizione sulla sinistra dell'ostacolo function VertProjectSinistra(ost){ if(oggetto==ost) return false; if(Sx<destro(ost)) return true; } //intercetta la posizione sul basso dell'ostacolo function HorProjectBasso(ost){ if(oggetto==ost) return false; if(Lo>alto(ost)) return true; } //intercetta la posizione sull'alto dell'ostacolo function HorProjectAlto(ost){ if(oggetto==ost) return false; if(Hi<basso(ost)) return true; }Questo codice, unendo VertProject, che intercetta sulla proiezione verticale, con HorProjectAlto, intercetta sull'emiproiezione alta dell'ostacolo.
for(n=0;n<oggetti.length;n++){ if(HorProjectAlto(oggetti[n]) && VertProject(oggetti[n])) { $("test").innerHTML= "centrato"; } }
Che faticaccia!!!
Anche queste funzionano per qualunque oggetto.
Nessun commento:
Posta un commento