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