• Benvenuto in Making Videogames!
  • Dai sfogo alla tua fantasia!
  • Crea il tuo Videogioco!
Benvenuto ospite! Login Registrati




Valutazione discussione:
  • 1 voto(i) - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5
[DARK GDK] Iniziare a scrivere un giochino 2D...Alcuni chiarimenti..
#12
(24-03-2011, 09:43 AM)TheFedex87 Ha scritto: dbSpriteCollision(int SP1, int SP2) restituisce 0 se nn collide 1 se collide, mentre utilizzando la funzione
dbSpriteCollision(int SP1, 0) restituisce l'ID della sprite con la quale SP1 sta collidendo...Ma qui nasceva il mio problema in quanto se c'è più di una collisione ne restituisce solo e soltanto 1...
Comunque il codice da te riportate dovrebbe funzionare, ma c'è un problema, facendo così, tu sei costretto ad effettuare un controllo, in ogni momento, con tutte le sprite che ci sono nel livello, e non solo, sei anche costretto a differenziare i mattoni del pavimento da quelli del muro...alla fine fatto così diventa troppo elaborata la gestione...
Hai qualche consiglio su come poter gestire le cose differentemente??
Sad

EDIT: ah comunque io le reference le prendo dalla documentazione del DarkGDK che mi ha intallato lui stesso...

Ah ok, adesso mi è un po' più chiaro il funzionamento.
Comunque, ipotizziamo che si riuscisse a ottenere più di un id: dovresti comunque differenziare i mattoni in modo da capire se stai collidendo con il mattone a destra, a sinistra, in alto o in basso; in caso contrario non potresti bloccare una direzione precisa. Quindi oltre a conoscere il mattone devi anche conoscere la sua posizione rispetto al personaggio.
Mi sembra necessario avere qualche informazione in più per gestire le collisioni.
La velocità del codice non credo che sia un grosso problema, anche dbSpriteCollision(int SP1, 0) fa un controllo per ogni sprite (suppongo).

Io creerei quattro funzioni diverse (una per ogni direzione) che ritornano true se c'è una collisione verso quella posizione.
Qualcosa del tipo: bool collisioneSx(); bool collisioneDx(); bool collisioneUp(); bool collisioneDw(); (più avanti anche collisioneNemico())
Per verificare se ci sono collisioni verso destra e sinistra è necessario fare qualche accorgimento, visto che il personaggio si sposta su quest'asse.
Una volta fatto ciò diventa semplice gestire i movimenti: if(dbRightKey() && !collisioneDx()) muovi_a_destra;

Se sono stato poco chiaro fammi sapere che vedo di spiegarmi meglio...

Prova ad ipotizzare come funzioneranno queste quattro funzioni, in caso hai problemi provo a darti una mano.
 
Rispondi
  


Messaggi in questa discussione
RE: [DARK GDK] Iniziare a scrivere un giochino 2D...Alcuni chiarimenti.. - da steve - 24-03-2011, 01:12 PM

Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  Collisioni 2D ossen97 5 1,699 09-04-2011, 07:18 PM
Ultimo messaggio: steve
  Dark GDK + Visual C++ Riddick 22 5,913 27-03-2011, 12:40 AM
Ultimo messaggio: Zapetino
  Vendere un gioco con Dark GDK Adanf 5 1,834 15-02-2011, 02:01 PM
Ultimo messaggio: Adanf

Vai al forum:


Browsing: 3 Ospite(i)