Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Algoritmo non funziona come dovrebbe
Forum - C# / VB.NET - Algoritmo non funziona come dovrebbe

Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:16
Venerdì, 19/12/2014
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


Codice sorgente - presumibilmente C++

  1. List<_obstacle> Ostacoli = new List<_obstacle>();
  2.  
  3. public struct _obstacle
  4. {
  5.    public int id;
  6.    public int x;
  7.    public int y;
  8.  
  9. }




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


Codice sorgente - presumibilmente Plain Text

  1. for(int i = 0; i < Ostacoli.Count; i++)
  2. {
  3.  
  4.    //Verifica
  5.  
  6.   if( Tizio_X >= Ostacoli[i].x && Tizio_X <= Ostacoli[i].x + 32 && Tizio_Y >= Ostacoli[i].y && Tizio_Y <= Ostacoli[i].y + 32)
  7. {
  8.  
  9.  // Collisione
  10.  
  11. }
  12.  
  13.  
  14. }




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ì:

http://s8.postimg.org/h2xvr52ud/Cattura.jpg


PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5462
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 10:32
Venerdì, 19/12/2014
Cosa rappresentano x e y esattamente per l'oggetto e per l'ostacolo?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 12:40
Venerdì, 19/12/2014
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:

Codice sorgente - presumibilmente Plain Text

  1. 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




PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5462
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:03
Venerdì, 19/12/2014
No, non era quello che volevo sapere.

Per chiarire, x e y sono le coordinate di quale parte dell'oggetto/ostacolo?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:09
Venerdì, 19/12/2014
è un ciclo for.
prende tutti gli ostacoli che sono nella lista.

Ostacolo.x  Ostacolo.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

http://s1.postimg.org/j60yizlen/Cattura.gif


http://s8.postimg.org/h2xvr52ud/Cattura.jpg



PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5462
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:15
Venerdì, 19/12/2014
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?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 15:51
Venerdì, 19/12/2014
Si scusami e che non avevo compreso cosa intendevi per x e y

Testo quotato



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.x e Oggett.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.x e Ostacolo.y )


PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 21:31
Sabato, 20/12/2014
Comunque  ho risolto grazie lo stesso :-)


PM Quote