|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 | |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
[vb net 2008] collisione di due oggetti
salve,
ho due oggetti , A e B. Vorrei far scaturire una azione alla loro collisione. Io il codice g'à l'ho fatto, però è abbastanza statico, nel senso che se ho pochi oggetti da gestire, potrebbe anche andare bene, ma se ne ho molti risulta alquanto snervante. vi posto uno stralcio di come ho risolto. Mi piacerebbe trovare una soluzione dinamica che vada bene per tutti i miei oggetti che richiedano una azione alla loro collisione. grazie mille. Quote:
Questo funziona, ma se devo inserire molti altri oggetti, mi sembra che in questo modo risulti un po come dire.. "incasinata la cosa", anche se fattibile. Il problema non è tanto farla la cosa, ma nella fase di aggiornamento della routine o nel debug dopo un lungo tempo che non lavoro su questo progetto. Mi piacerebbe in definitiva, riuscire a trovare una soluzione dinamica dove si possano intercettare le varie collisioni e poterla così applicare semplicemente a tutti gli oggetti.
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
|
#2 | |||
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
questo giro mi rispondo da solo ^_^
ho trovato qui la spiegazione. http://www.dreamincode.net/forums/showtopic35291.htm praticamente basta usare: If OGGETTO1.Bounds.IntersectsWith(OGGETTO2.Bounds) Then ora modifico il codice Quote:
Quote:
heheh oggi continuo a rispondemi da solo " me la faccio e me la dico" lol.. mi sa che devo dormire prima di nott e^_^ al posto del costrutto if che ho usato basta che usa Quote:
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. Ultima modifica di superbau : 17-10-2009 alle 14:23. |
|||
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
accidenti non mi si riesce di ottimizzare il codice... l'oggetto in questione che dovrebbe far partire il msgbox ha come tag muro
Quote:
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
Quote:
alla fine son arrivato a questo: Quote:
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. Ultima modifica di superbau : 17-10-2009 alle 15:49. |
||
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Codice:
For Each c As Control In Me.Controls
If TypeOf (c) Is PictureBox Then
If c.Tag = "muro" Then MsgBox("trovato")
End If
Next
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
niente da fare non vuol sapere di andare, mi esce sempre fuori muro non trovato! .. si che nel picturebox4 nella sua propietà alla voce tag ho messo "muro"... uff..
Quote:
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Se lo inserisci direttamente a design nella Proprietà Tag della PictureBox, ovviamente va messa la stringa "secca", muro, senza virgolette. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
sisi è senza virgolette nel design, ma non riesce di prendermela. non capisco il motivo.
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Bisogna però sistemare il codice. Se vuoi gestire il trovato / non-trovato, questo :
Codice:
For Each c As Control In Me.Controls
If TypeOf (c) Is PictureBox Then
If c.Tag = "muro" Then MsgBox("trovato")
Else
MsgBox("non trovato")
End If
Next
Codice:
Dim trovato As Boolean = False
For Each c As Control In Me.Controls
If TypeOf (c) Is PictureBox Then
If c.Tag = "muro" Then
MsgBox("trovato")
trovato = True
Exit For
End If
End If
Next
If trovato = False Then MsgBox("non trovato")
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
mi restituisce sempre non trovato
Quote:
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
1. Sicuro che quel Tag non contenga spazi ?
2. Se quel KeyDownControlli è quello che penso io ( http://www.hwupgrade.it/forum/showpo...62&postcount=2 ), non mi spiego : Handles Me.KeyDown... |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
si il KeyDownControlli è quello che hai linkato, e non ci sono spazi nel tag
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
In ogni caso, da me funziona, evidentemente c'è qualcos'altro che non va sul tuo progetto... |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
hai ragione, non me ne ero accorto, grazie.
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
se può servire posto l'intero codice della sezione interessata...
Quote:
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
eppure cribbio puntandolo direttamente funziona! la scritta Ciao mi esce..
Quote:
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Non ti aspetterai che passi al setaccio tutto il tuo codice...
Comunque credo sia chiaro il perchè. Ha a che fare con quel discorso sulle PictureBox, sovrapposizioni e trasparenze. Se hai una PictureBox di sfondo ( chiamiamola pcb_sfondo ) e avevi impostato .Parent = pcb_sfondo, come ti consigliai, ovviamente adesso il For Each va fatto sulle PictureBox che stanno su quel container. Codice:
Dim trovato As Boolean = False
For Each c As Control In pcb_sfondo.Controls
If TypeOf (c) Is PictureBox Then
If c.Tag = "muro" Then
MsgBox("trovato")
trovato = True
Exit For
End If
End If
Next
If trovato = False Then MsgBox("non trovato")
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Aug 2006
Città: Vicenza
Messaggi: 1150
|
ah okay, grazie, provo poi ti faccio sapere, grazie, sicuramente è il problema del parent.
__________________
Motherboard:Asus Commando - CPU: q6600 2.4Ghz - cpu cooler: Asus V40 - RAM: ddr2 8Gb - HD: Samsung 850evo 512Gb- GPU: Asus 770gtx ti - Extra Gpu coller:Manatthan coller 210140 - Monitor: Asus VK266H - Aliment.: SilentMaxX IC-tech 600w - Mouse: MXmaster - SO: windows 10. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:59.




















