Oppure

Loading
19/12/14 8:16
Thejuster
Salve amici.

Chiedo aiuto a voi per verificare un pò questo piccolo algoritmo di collisione che tempo fà avevo scritto.

Ma ora, stranamente non capisco perché mi dia problemi e non funziona come dovrebbe.


Si parte esempio da:

Tizio_X; Tizio_Y;


ed ho una struttura per gli ostacoli del genere




List<_obstacle> Ostacoli = new List<_obstacle>();

public struct _obstacle 
{
   public int id;
   public int x;
   public int y;

}






Ora scendendo ad una logica molto semplice è che per verificare se il tizio, tocca un ostacolo io faccio in questo modo:

Il tizio misura: 32 x 64 pixel
mentre l'ostacolo: 32 x 32 pixel




for(int i = 0; i < Ostacoli.Count; i++)
{

   //Verifica

  if( Tizio_X >= Ostacoli[i].x && Tizio_X <= Ostacoli[i].x + 32 && Tizio_Y >= Ostacoli[i].y && Tizio_Y <= Ostacoli[i].y + 32)
{

 // Collisione

}


}




il codice credo sia abbastanza chiaro.

Se il tizio_x incrocia il punto iniziale dell'ostcolo X e se il tizio_x e dentro all'ostacolo
Stessa cosa per Y è incollisione.

Ma stranamente non mi funziona a dovere.

Il tutto funziona solo sull'asse Y Mentre su X non si ferma ci passa per dimezzo.

in pratica succede così:

s8.postimg.org/h2xvr52ud/…
mire.forumfree.it/ - Mire Engine
C# UI Designer
19/12/14 9:32
Cosa rappresentano x e y esattamente per l'oggetto e per l'ostacolo?
19/12/14 11:40
Thejuster
entrambi.

Sia il tizio che l'oggetto ostacolo hanno posizioni su asse X ed Y


( Personaggio Giocabile quindi X ed Y cambiano a seconda di dove si trova il personaggio)

esempio:


if(Keys.data == "Down") { Tizio_Y += .8f; }





Larghezza: 32 px - Altezza: 64 px

Tizio_X
Tizio_Y



-------

(Oggetto Ostacolo Fisso)

Dimensioni fisse : 32 x 32 px


Oggetto[index].x // Posizione X dell'oggetto
Oggetto[index].y // Posizione Y dell'oggetto


mire.forumfree.it/ - Mire Engine
C# UI Designer
19/12/14 12:03
No, non era quello che volevo sapere.

Per chiarire, x e y sono le coordinate di quale parte dell'oggetto/ostacolo?
19/12/14 14:09
Thejuster
è un ciclo for.
prende tutti gli ostacoli che sono nella lista.

Ostacolo[i].x Ostacolo[i].y




Tizio_X e Tizio_Y sono le cordinate del player


tutte partono da

x
+------------
|
y |


Il player misura 32x64
gli ostacoli tutti misurano 32x32


questo è per capire meglio

s1.postimg.org/j60yizlen/…


s8.postimg.org/h2xvr52ud/…

mire.forumfree.it/ - Mire Engine
C# UI Designer
19/12/14 14:15
Scusa ma la mia domanda era un'altra ... che risposta è "è un ciclo for"?

Io ti ho chiesto a cosa corrisponde x e y per l'ostacolo e cosa per l'oggetto in movimento?
Non so come fare diversamente questa domanda ... se puoi darmi una risposta bene, altrimenti come non detto ...

P.S. Ad esempio, sono le coordinate dell'angolo sinistro-alto dell'oggetto? Sono le coordinate del centro-centro dell'oggetto?
19/12/14 14:51
Thejuster
Si scusami e che non avevo compreso cosa intendevi per x e y

P.S. Ad esempio, sono le coordinate dell'angolo sinistro-alto dell'oggetto? Sono le coordinate del centro-centro dell'oggetto?




Si

Tizio_X e Tizio_Y sono le coordinate dell'oggetto in movimento partendo dall'angolo sinistro-altro

Mentre Oggetto[i].x e Oggett[i].y sono le coordinate dell'oggetto fermo (ostacolo) partendo sempre dall'angolo sinistro-alto.


quindi l'oggetto in movimento ( Tizio_X e Tizio_Y ) non dovrebbe oltrepassare l'oggetto fermo (Ostacolo[i].x e Ostacolo[i].y )
mire.forumfree.it/ - Mire Engine
C# UI Designer
20/12/14 20:31
Thejuster
Comunque ho risolto grazie lo stesso :-)
mire.forumfree.it/ - Mire Engine
C# UI Designer