Page 1 of 1
Objektit
Posted: Thu Jun 19, 2008 8:28 pm
by Jormalaz
Eli siis miten saisin tehtyä sillä lailla, että jos objekti törmää toiseen, niin tulee addtext tai joku muu?
Esim.
if (se objektitörmäys) then
addtext "törmäsit"
endif
Toimisiko?
Re: Objektit
Posted: Thu Jun 19, 2008 8:55 pm
by Koodiapina
Ampuminen perustuu oikeastaan vain siihen, että luot luodin ja sitten tiedät onko se olemassa ja missä se on. Tämän tiedon avulla voit muunmuassa näyttää sen pelaajalle ja tehdä sillä kaikenlaista. Tämä tapahtuu muuttujilla, mutta koska luoteja voi olla miten paljon vain, tyyppikokoelmat ovat järkevin ratkaisu. Yleensä tähän käytetään vielä objekteja, koska niitä on helppo hallita pienellä koodimäärällä. Toivottavasti selkeytti asiaa, tuohon manuaalin bugaamiseen en osaa sanoa mitään :D
Re: Objektit
Posted: Thu Jun 19, 2008 8:59 pm
by Jormalaz
Grandi wrote:Ampuminen perustuu oikeastaan vain siihen, että luot luodin ja sitten tiedät onko se olemassa ja missä se on. Tämän tiedon avulla voit muunmuassa näyttää sen pelaajalle ja tehdä sillä kaikenlaista. Tämä tapahtuu muuttujilla, mutta koska luoteja voi olla miten paljon vain, tyyppikokoelmat ovat järkevin ratkaisu. Yleensä tähän käytetään vielä objekteja, koska niitä on helppo hallita pienellä koodimäärällä. Toivottavasti selkeytti asiaa, tuohon manuaalin bugaamiseen en osaa sanoa mitään
Editoin otsikkoa ja en enään tarvitse apua ampumiseen.
Re: Objektit
Posted: Thu Jun 19, 2008 9:12 pm
by Harakka
Objektien törmäysten tarkastaminen on aika helppoa.
Code: Select all
ukko = LoadObject("media/guy.bmp")
lehma = LoadObject("media/cow.bmp")
Repeat
If ObjectsOverlap(ukko,lehma) then
If viimeksitormattiin = 0 then 'jos viime framessa EI ole törmätty
AddText "Törmätään!"
viimeksitormattiin = 1 'merkitään, että on törmätty
EndIf
Else
viimeksitormattiin = 0 'jos ei törmätä, merkitään että viime framessa ei törmätty
EndIf
DrawScreen
Forever
Ylempi koodi lisää tekstin vain kerran kun törmätään, ja uudestaan kun objektit ovat eronneet toisistaan ja törmäävät uudestaan. Toinen tapa olisi muuten käyttää CountCollisions()-funktiota ja GetCollision():ia, mutta se on monimutkaisempi. Tämä tarkastaa, ovatko objektit päällekkäin.
Re: Objektit
Posted: Thu Jun 19, 2008 9:27 pm
by Jormalaz
Nyt ajattelen että miten saisi jos ammus osuisi objektiin ja sitten objekti tuhoituisi. Miten onnistuisi?
Ja voisitko kertoa "helpommin" tuon koodin. Eli ei mtn esimerkkejä, vain se koodi.
Re: Objektit
Posted: Fri Jun 20, 2008 12:18 am
by Eräs cb koodaaja
Siis tarkoitatko tuhoutumisella sitä, että veret lentää vai sitä että objekti vain häviää. Ensimmäisen(veret lentää) saat toteutettua animaatiolla jonka CloneObjectPositionilla laitat ukon kanssa samaan kohtaan. Jälkimmäisen(häviää) saat vain DeleteObjectilla.
Ja koodeja en ala vääntämään, koska muuten kopioit ne, etkä opi mitään.
Re: Objektit
Posted: Fri Jun 20, 2008 12:31 am
by Jormalaz
If CountCollisions(botti) Then
DeleteObject botti
EndIf
Jos teen tuon, niin tulee MAV (Memory access violation).
Re: Objektit
Posted: Fri Jun 20, 2008 11:48 am
by Eräs cb koodaaja
No kai se vääntää mavia, kun tuhoat objectin ja sen jälkeen yrität sen jälkeen vielä tarkistaa, törmääkö se.
EDIT:Ja kaikki muutkin objektiin vaikuttavat komennot aiheuttavat mavin
Re: Objektit
Posted: Sun Jun 22, 2008 8:23 pm
by Jormalaz
Onko CB:ssä koodia, jolla voisi tuhota funktion?
Esim:
If CountCollisions(botti) Then
DeleteObject botti
destoryfunction (funktio)
EndIf
Re: Objektit
Posted: Sun Jun 22, 2008 8:26 pm
by vms100
mihin sellasta tarvitaan?
50 viesti \o/
Re: Objektit
Posted: Sun Jun 22, 2008 8:35 pm
by Koodiapina
Jormalaz wrote:Onko CB:ssä koodia, jolla voisi tuhota funktion?
Esim:
If CountCollisions(botti) Then
DeleteObject botti
destoryfunction (funktio)
EndIf
E ole, eikä tule. Saahan se funktio möllöttää kaikessa rauhassa vaikka et sitä tarvisikaan.
EDIT: Maailman kehittynein ja modernein kieli - Grandi++ - tukee tätä toiminta B)
Re: Objektit
Posted: Sun Jun 22, 2008 9:08 pm
by Jormalaz
Mutta miten helvetissä saan sitten sen CountCollisions funktion pois?
If CountCollisions(botti) Then
DeleteObject botti
EndIf
Tuolla tavalla tulee se MAV...
Re: Objektit
Posted: Sun Jun 22, 2008 9:14 pm
by tuhoojabotti
käytä muuttujaa joka kertoo onko botti elossa vaikka bottikuollu=False sitten
Code: Select all
if bottikuollu=false then
if törmää then
delete botti
bottikuollu=true
endif
endif
Re: Objektit
Posted: Sun Jun 22, 2008 9:17 pm
by Jormalaz
tuhoojabotti wrote:käytä muuttujaa joka kertoo onko botti elossa vaikka bottikuollu=False sitten
Code: Select all
if bottikuollu=false then
if törmää then
delete botti
bottikuollu=true
endif
endif
Hmm... En oikein tajunnut tuota, mutta koitetaan.
Re: Objektit
Posted: Sun Jun 22, 2008 9:23 pm
by JATothrim
Lisäät tarkistuksen, että onko objekti Olemassa !!
Code: Select all
if bottiolemassa = true
If CountCollisions(botti) Then
bottiolemassa = false
DeleteObject botti
EndIf
endif
oho, tuhoojabotti kerkesi ensin
Re: Objektit
Posted: Mon Jun 23, 2008 3:34 pm
by Jormalaz
Voisitteko selittää, miten tuo cloneobject toimii. Haluaisin tehdä sen kanssa botista "kopion". Mitenköhän onnistuu?
Re: Objektit
Posted: Mon Jun 23, 2008 3:51 pm
by Harakka
Cloneobject() luo uuden objektin, jolla on sama kuva ja pyöritysarvo kuin sulkujen sisällä olevalla objektilla. Eli:
Code: Select all
kopioitava = LoadObject("media/guy.bmp")
uusi = CloneObject(kopioitava)
Tämän jälkeen molempia voi käyttää erikseen (liikuttamiset ja muut vastaavat).