Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [XNA] Collision Detection
Forum - C# / VB.NET - [XNA] Collision Detection

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:47
Domenica, 05/10/2008
Qualcuno puo aiutarmi?
Sto letteralmente uscendo pazzo.
anche perchè non trovo tutorial nella rete
preferirei in vb.net che ho gia un po di roba pronta
come telecamera, personaggio che si muove, offset ecc.

il problema e che non so come eseguire una collisione tra oggetti.

non saprei per iniziare mi basta anche un semplice esempio, magari anche su come rilevare una traiettoria approssimativa tra il pg e l'oggetto.

anche perchè non si puo essere super precisi inserendo una cordinata specifica potrebbe anche sballare di qualche unità, quindi chiedo aiuto a voi, magari al totem, el pisano.
che siete già ad un punto avanzato rispetto a me che sono partito direttamente dalla base delle DirectX.


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:36
Domenica, 05/10/2008
La maniera più semplice è calcolare il diametro della prima mesh (supponendo che tu stia usando delle meshes) e controllare che l'estremità non sia dentro il campo di influenza della seconda mesh. Esistono anche altri algoritmi più sofisticati (che adesso non mi ricordo quali) che permettono rilevazioni più accurate, ma che richiedono maggior tempo computazionale.


Il mio blog: https://piero.dev
PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 19:47
Domenica, 05/10/2008
uhm chiedo troppo un piccolissimo esempio?
riguardo alle mesh uso direttamente dei modelli fatti con 3dsmax.

anche un solo esempio mi renderebbe la vita facile.

io ho provato questo modo

Codice sorgente - presumibilmente VB.NET

  1. Dim lol As Model
  2.  
  3. For Each mesh As ModelMesh In omino.Meshes
  4.  
  5.                 If mesh.BoundingSphere.Intersects(lol) Then
  6.  
  7.                 End If
  8.  
  9.  
  10.             Next



ma mi da errore proprio nella posizione dopo all'interects non capisco il perchè.

Ultima modifica effettuata da Thejuster il 06/10/2008 alle 13:17


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:35
Lunedì, 06/10/2008
Il metodo intersects richiede come parametro un oggetto BoundingSphere o BoundingBox.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 20:47
Lunedì, 06/10/2008
quindi manca un  qualcosa.
e questo che non so.

in pratica mi dovrebbe realizzare attorno al modello un area virtuale o quadrata o circolare
preferisco quadrata
e quell'if serve appunto come verifica che i 2 oggetti si toccano.
su questo ci sono arrivato.
ma secondo me sbaglio proprio qualcosa nelle dichiarazioni. e qui che non capisco

sulla ratete ci sono solo tutorial ma non spiegano ogni parametro la propria funzione.

le guide che hai fatto tu, specificano perfettamente la funzione di ogni parametro.

sulla rete trovi solo immondizia. 8-|


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 15:55
Martedì, 07/10/2008
Tu hai usato "lol" come parametro, ma lol è di tipo Model. Puoi usare due for each nidificati:
Codice sorgente - presumibilmente VB.NET

  1. For Each mesh As ModelMesh In omino.Meshes
  2.   For Each lolmesh As ModelMesh In lol.Meshes
  3.     If mesh.BoundingSphere.Intersects(lolmesh.BoundingSphere) Then
  4.     End If
  5.   Next
  6. Next


PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:06
Mercoledì, 08/10/2008
ci provo e spero vivamente che funzioni.

allora totem ho fatto in questo modo allora io ho una navicella e tipo un persona

dunque se la navice tocca la persona dovrebbe scatenare l'evento ma mi sa che non worka

mi da il messaggio ogni secondo


Codice sorgente - presumibilmente VB.NET

  1. For Each mesh As ModelMesh In omino.Meshes
  2.                 For Each ships As ModelMesh In shipModel.Meshes
  3.                     If mesh.BoundingSphere.Intersects(ships.BoundingSphere) Then
  4.                    
  5.                         MsgBox("toccato")
  6.  
  7.                     End If
  8.                 Next
  9.             Next




sbaglio?

Ultima modifica effettuata da Thejuster il 08/10/2008 alle 13:44


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 17:46
Giovedì, 09/10/2008
Non mi sembra sbagliato... Ma non so quale possa essere l'errore.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2331
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 18:20
Giovedì, 09/10/2008
Dannazzione a ste collisione del cavolo.
dimane! senza di quelle non potro mai continuare il mio gioco.

nemmeno a me sembra sbagliato eppure come appena si avvia il gioco mi sbuca subito in continuazione il messaggio.

totem anche tu se non sbaglio stai entrando in questo mondo di xna.

non ancora hai provato a fare una cosa del genere?
del tipo queste collisioni?

pensa, sono perfino riuscito a generare
l'acqua dinamica con il Reflection.

e non riesco a interfacciare una stupida collisione :grr:


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo