View Full Version : [OpenGL] Intruppare con gli oggetti
Arthemis
01-04-2005, 21:26
Ciao a tutti!
Sto programmando con le OpenGL da poco e vorrei cominciare a creare i primi "scontri" tra quadrati :P o per lo meno definire i limiti dell'area in cui posso far muovere 1 quadrato.
(non so se mi spiego ad esempio il gioco snake ha l'arena che avrà degli spazi definiti e io devo definire quand'è che se il mio oggetto tocca la fine non puo piu andare avanti).
Spero di essere stato abastanza chiaro e attendo vostri aiuti.
Ciao ciao! ;)
Vorresti quindi un algoritmo per gestire le collisioni ?
Arthemis
02-04-2005, 14:12
Si magari anche commentato in modo da capirlo grazie!
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=30
NeHe rulez ;)
Arthemis
02-04-2005, 18:50
Saro cocciuto io ma non ci capisco niente su quel manuale!Fino al texturing quasi ci sono ma da li in poi :( purtroppo nada!
Non avreste un pezzetto di codice commentato?:mc:
Ma hai la letto la spiegazione nella pagina o hai scaricato direttamente il codice ? Non credo che tu riesca a trovare codice più commentato di quello...
Purtroppo i tutorial NeHe tradotte in italiano ci sono solo fino alla 29...
Arthemis
03-04-2005, 08:46
E si lo so...ma il mio problema non è troppo l'inglese ma è il concetto che non riesco a capire. Ecco perchè avrei preferito un pezzetto di codice scritto da qualcuno (no NeHe). Comunque non fa niente ora mi metto a studiare :P
più che altro per risolvere questo problema devi lavorare di logica più che di codice, se hai strutture come quadrati ho sfere i concetti sono molto semplice ma appena vai con strutture più complesse la cosa diventa molto più difficile, un consiglio cerca di ridurre sempre le strutture ai minimi almeno a livello di impatto non di disegno, cioè.. per esempio se hai un personaggio simile ad un uomo non ti metti a costruire tutti i controlli per tutto il personaggio ma gli crei un quadrato o una serie di quadrati intorno...
Un'altro consiglio vai a seguire le lezioni di geometria ad ingegneria, parlano appunto di strutture 3d che al primo impatto sembra che non servono a niente ma poi si rilevano utili.
Es:
P1=punto1;
P2=punto2;
quesito: controllare se punto1 tocca o è all'interno di una sfera di raggio r intorno a punto2.
risposta:
r^2=(P1.x-P2.x)^2+(P1.y-P2.y)^2+(P1.z-P2.z)^2;il punto1 tocca la sfera intorno a punto2.
r^2<(P1.x-P2.x)^2+(P1.y-P2.y)^2+(P1.z-P2.z)^2;il punto1 è all'esterno della sfera intorno a punto2.
r^2>(P1.x-P2.x)^2+(P1.y-P2.y)^2+(P1.z-P2.z)^2; il punto2 è all'interno della sferaintorno a punto2.
Ciao.
Arthemis
04-04-2005, 18:03
Grazie 1000!Sto cominciando a capire. Ma quelle sono condizioni? Potresti solo implemetarmele sotto forma di codice per capire come le devo mettere nel mio codice?
Comunque non posso seguire le lezioni di Ingenieria ho solo 16 anni :P
Devo finire le superiori!
Grazie ancora!!!;)
be quella specie di cosa buffa che ho scritto sopra si può definire matematica, se la vuoi in codice te la faccio in c....
int xp1,yp1,yp1,xp2,yp2,zp2;///sono la coordinate di due oggetti o meglio due punti in uno spazio 3 d.
int r; //è il raggio di una sfera costuita intorno al secondo punto(xp2,yp2,zp2)
.......................................
///inizializzo i valori e eseguo tutte la altre operazioni
.......................................
if(q(xp1-xp2)+q(yp1-yp2)+q(zp1-zp2)<=q(r))
{
//codice in caso che il punto1 sia interno o sulla sfera
}
else
{
//codice in caso che il punto1 sia esterno alla sfera
}
//definisco una funzione che mi fa il quadrato di un numero per semplificare le
cose
int q(int val){ret val*val;}
nella parte del codice in caso di interno alla sfera puoi crearti ciò che vuoi ad esempio puoi impedire che loggetto si muova o puoi creare un'esplosione.....
Per l'università puoi seguire anche se non sei iscritto e anche se hai 16 anni ma penso che non è un ambiente tanto famigliare, in mezzo a quella gente....
Ciao..
Nel caso di due sfere ivece che di una sfera e un punto dovrebbe essere cosi:
if(q(xp1-xp2)+q(yp1-yp2)+q(zp1-zp2)<=q(rp1+rp2))
dove rp1 è il raggio della sfera intorno al punto1 e rp2 è il raggio della sfera intorno al punto due...
Ciao.
Arthemis
05-04-2005, 10:06
Grazie 1000!!!
;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.