Orario: 20-05-2013, 2:36 Benvenuto ospite! (Log inRegistrati)


Rispondi 
Imbucare una palla
Autore Messaggio
Xaldyz
Esoterico

Messaggi: 2,385
Registrato: Apr 2010
Offline Offline
#1 Imbucare una palla
0
Ragazzi, avrei bisogno di una mano per capire come fare a dire al programma "ehi tu, guarda che quella palla è andata in buca!" (se ancora non si è capito, sto parlando di un biliardo Sorriso)

Allora, io ho il mio bel modello (ovvero una tavola con 4 sponde, in tutto sono 7 mesh contate Asd ) in cui tra una sponda e l'altra al momento c'è un piccolo buco.

Ora, per quel che riguarda la gestione delle collisioni, creo dei BBox che si adattano dinamicamente al modello (ovvero rilevo la dimensione quando carico il modello, e ci costruisco intorno la collisione). Questo per dire che molto più semplicemente potevo fare una cosa fissa e adattarci il modello (ovvero prevedere che il tutto sia 1000x500 e costruire il modello adattandolo) però era troppo facile Sorriso

So già che qualcuno mi risponderà Keep it simple, stupid! (cit.) però diciamo che è un punto come un altro per capire come funziona la fisica.

Comunque, tornando al discorso principale: mi sapete consigliare qualche modo per capire quando, più genericamente, un qualcosa "supera" un traguardo? (ovviamente, tutto questo deve essere fatto in base al modello)

Io avevo pensato a questo, poi ditemi se dico boiate Smile
Inserire nel modello, in corrispondenza delle buche, un torus, dargli un nome particolare, e poi da programma caricare quella posizione. Come vi pare come idea?
03-05-2010 10:12
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Mickey
Coder inside

Messaggi: 950
Registrato: Apr 2009
Offline Offline
#2 RE: Imbucare una palla
0
Tralasciando il fatto che non so cosa sia un torus (Asd) potresti creare un GameObject senza texture, insomma, invisibile, anche 2D, con le coordinate e la grandezza che vuoi. Quindi gestisci la collisione tra le palline e questo oggetto.
E' solo un'idea, eh.

Michele "Mickey" Marolla
03-05-2010 13:33
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Tano
Ninja Scientist

Messaggi: 1,408
Registrato: Nov 2008
Offline Offline
#3 RE: Imbucare una palla
0
Vai di collision detection classico. Approssimi il buco con un rettangolo, controlli che nessuna figura geometrica intersechi con i vertici del rettangolo. Non è la cosa più elegante del mondo, ma è la più semplice. Il problema di lavorare sui vertici però è che le palle contengono tanti vertici.. Quindi l'operazione potrebbe essere molto pesante. Quindi approssima anche le palle a rettangoli e dovresti più o meno risolvere.

Potresti pure creare dei "Collision Box" ovvero degli oggetti di gioco che si occupano solo di fare il check sulla collisione. Quando avviene, puoi prendere il puntatore all'oggetto con cui è entrato in contatto e farne ciò che vuoi.

"..Credevamo di aver successo un giorno, al teatro delle commedie, con due soli spettatori.." Takeshi Kitano.

[Immagine: linkedin-icon.png]
Gaetano Lenoci
Studio Leaves
Coward Knight
03-05-2010 13:40
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Xaldyz
Esoterico

Messaggi: 2,385
Registrato: Apr 2010
Offline Offline
#4 RE: Imbucare una palla
0
Immagine del Torus:

[Immagine: Torus.png]

Sì Mickey, mi piace come idea. Devo solo capire come fare a metterla dentro al modello Linguaccia

Tano, sì, rivisitando un po' l'idea si può fare. Premettendo che sto lavorando con XNA Linguaccia penso che il mix delle due cose sia l'approccio giusto comunque Smile
03-05-2010 13:45
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
mude
Arrested Development

Messaggi: 6,986
Registrato: Nov 2008
Offline Offline
#5 RE: Imbucare una palla
0
crea una sphera in corrispondenza del buco che non renderizzi. se la palla collide con la sphera ed è sotto una certa altezza significa che è dentro. Fermosi

.: DevLog | Twitter Pinaster Games | Twitter Personale :.
[Immagine: BBh5DKU.png] Beta
03-05-2010 14:11
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Xaldyz
Esoterico

Messaggi: 2,385
Registrato: Apr 2010
Offline Offline
#6 RE: Imbucare una palla
0
(03-05-2010 14:11)lefantome ha scritto:  crea una sphera in corrispondenza del buco che non renderizzi. se la palla collide con la sphera ed è sotto una certa altezza significa che è dentro. Fermosi

ti vedo abbastanza sconvolto Asd

so che è una domanda banale, volevo solo vedere se la mia testa bacata funziona o spara idee a caso senza senso Smile
03-05-2010 14:14
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
johnnyfreak
Indieveloper

Messaggi: 1,482
Registrato: Sep 2009
Offline Offline
#7 RE: Imbucare una palla
0
dovrebbe essere più efficiente con due rettangoli, uno tipo ombra sotto la palla ,e uno per ogni buca.
03-05-2010 14:14
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
mude
Arrested Development

Messaggi: 6,986
Registrato: Nov 2008
Offline Offline
#8 RE: Imbucare una palla
0
(03-05-2010 14:14)Xaldyz ha scritto:  
(03-05-2010 14:11)lefantome ha scritto:  crea una sphera in corrispondenza del buco che non renderizzi. se la palla collide con la sphera ed è sotto una certa altezza significa che è dentro. Fermosi

ti vedo abbastanza sconvolto Asd

so che è una domanda banale, volevo solo vedere se la mia testa bacata funziona o spara idee a caso senza senso Smile

a dire la verità ho risposto in automatico senza leggere e pensare. il Fermosi c'è perchè deve esserci Fermose
Fermofumo

.: DevLog | Twitter Pinaster Games | Twitter Personale :.
[Immagine: BBh5DKU.png] Beta
03-05-2010 14:15
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
dsoft20
XD:I

Messaggi: 886
Registrato: Nov 2008
Offline Offline
#9 RE: Imbucare una palla
0
(03-05-2010 14:11)lefantome ha scritto:  crea una sphera in corrispondenza del buco che non renderizzi. se la palla collide con la sphera ed è sotto una certa altezza significa che è dentro. Fermosi
Fai prima a vedere la distanza che creare una sphera che non renderizzi Fermosi
03-05-2010 14:38
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
michelepa87
mi(n)chele

Messaggi: 210
Registrato: Mar 2010
Offline Offline
#10 RE: Imbucare una palla
0
Probabilmente è esagerata l'idea di usare un Torus per rappresentare la buca..
Se non hai pretese di realismo, potresti per ogni buca mettere un Oggetto* che meglio l'approssima (considera che per cadere la palla deve rotolare oltre la metà del proprio diametro) e fare il check tra l'Oggetto* della palla e quello della buca, se collide allora un'anim della palla che scende e magari scompare.. bla bla..

Oggetto* = Una struttura che ti permetta di verificare la collisione, quindi BBox, rettangoli, cerchi.. dipende da te Smile

Edit: Nel tuo caso visto che l'altezza del piano del biliardo è costante e le palle non dovrebbero volare Asd puoi benissimo crearti una struttura che rappresenta un cerchio ed associarla ad ogni pallina e alle buche.

Guarda, ti posto anche un'immagine per spiegarti meglio cosa intendo:
[Immagine: ballh.png]

La palla è quella in rosso, quando collide con il tondino blu (in questo caso una semplice collisione fra cerchi) la palla entra in buca.

Ovviamente nella realtà non funziona così.. però potrebbe essere una buona approssimazione Sisi

[Immagine: icon_blogspot.png] Michele Giacalone
(Questo messaggio è stato modificato l'ultima volta il: 03-05-2010 14:46 da michelepa87.)
03-05-2010 14:39
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
johnnyfreak
Indieveloper

Messaggi: 1,482
Registrato: Sep 2009
Offline Offline
#11 RE: Imbucare una palla
0
fare il calcolo della distanza è buono ma sono sempre convinto che i pochi confronti necessari al check si rettangoli sia migliore di due moltiplicazioni, una addizione e una radice (anche se potresti evitare la radice).

Poi ci sarebbe il problema della velocità: la palla entra se è "abbastanza" lenta, altrimenti rimbalza e torna dentro il campo XD
03-05-2010 14:42
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
mude
Arrested Development

Messaggi: 6,986
Registrato: Nov 2008
Offline Offline
#12 RE: Imbucare una palla
0
io supponevo che la palla fosse gestita dalla physica

.: DevLog | Twitter Pinaster Games | Twitter Personale :.
[Immagine: BBh5DKU.png] Beta
03-05-2010 14:45
Visita il sito web di questo utente Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Xaldyz
Esoterico

Messaggi: 2,385
Registrato: Apr 2010
Offline Offline
#13 RE: Imbucare una palla
0
ho già la libreria fisica che pensa al tutto Sorriso devo solamente capire come fare a dire "è entrata in buca", ma ora che ci penso, visto che il tavolo è completamente liscio, posso allo stesso modo dire "la palla è sotto un certo livello" (ipotizzando che non mi salti fuori -.-)
03-05-2010 14:46
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
dsoft20
XD:I

Messaggi: 886
Registrato: Nov 2008
Offline Offline
#14 RE: Imbucare una palla
0
(03-05-2010 14:46)Xaldyz ha scritto:  ho già la libreria fisica che pensa al tutto Sorriso devo solamente capire come fare a dire "è entrata in buca", ma ora che ci penso, visto che il tavolo è completamente liscio, posso allo stesso modo dire "la palla è sotto un certo livello" (ipotizzando che non mi salti fuori -.-)
Si, basta escludere ogni posizione fuori dall'area di gioco
03-05-2010 14:49
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
michelepa87
mi(n)chele

Messaggi: 210
Registrato: Mar 2010
Offline Offline
#15 RE: Imbucare una palla
0
(03-05-2010 14:46)Xaldyz ha scritto:  ho già la libreria fisica che pensa al tutto Sorriso devo solamente capire come fare a dire "è entrata in buca", ma ora che ci penso, visto che il tavolo è completamente liscio, posso allo stesso modo dire "la palla è sotto un certo livello" (ipotizzando che non mi salti fuori -.-)

Se tutto viene gestito dalla tua libreria allora la soluzione più comoda è quella che dici tu.. però così non sai che buca hai preso Asd

A sto punto usa delle BBox messe dentro le buche a mo di trigger, così ogni volta che collidono con qualcosa (una palla viene imbucata) gestisci tutto molto meglio (magari lanciando qualche evento che ha come argomento la buca o roba simile)

[Immagine: icon_blogspot.png] Michele Giacalone
03-05-2010 14:59
Trova tutti i messaggi di questo utente Cita questo messaggio nella tua risposta
Rispondi 


Vai al forum: