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 :D
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
:evil: 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 :mrgreen:

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).