Tuhoa luoti\objb sen sijaan että piilottaisit sen rivillä 9. Tämä ei ole koko ongelmasi: jos luoti on vaikka ensimmäisen otkon (mikä se on?) päällä, luoti tuhotaan, mutta silti päällekkäisyys tarkastetaan seuraavien otkojen kohdalla. Siis päällekkäisyys luodille jota ei enää ole olemassa.
Sinun on muuten turha tarkastaa onko otko <> luoti, koska nämä eivät kuulu samaan tyyppikokoelmaan (ehkä?), eivätkä siis voi olla sama asia (ellet ole säätänyt, mitä en usko).
Eli tee näin välttääksesi mavin. Tärkeää koodissa siis on komento Exit, jolla poistutaan sisemmästä silmukasta. Muista käyttää Exitiä vain jos tuhoamista tapahtuu.
Code: Select all
For otko.OTKOT = Each OTKOT
For luoti.LUODIT = Each LUODIT
If Päällekkäin( luoti\obj, otko\obj ) Then
TuhoaLuotiJaOtko()
Exit
EndIf
Next luoti
Next otko
Edit. siinä tapauksessa, että et käytä kahta silmukkaa, voi ongelmasi johtua esim. siitä, että luoti\obj-muuttujaan ei ikinä kloonata luotia. Tai ehkä se kloonataan, mutta tarkastus tehdään monta kertaa jopa sen jälkeen kun luoti on tuhottu. Kannattaa muutenkin lähettää se koko koodi, niin ei meidän tarvitse käydä läpi kaikkia maailman vaihtoehtoja errorille.