Olen väsännyt pientä Super Mario tyyppistä peliä. Käytän siinä Spritejä ja ongelma on miten saan ohjelman huomaamaan, että Mario törmää hirviöön?? Pitääkö tehdä iso taulukko koordinaateista?? Verrata väriarvoja?? docollision? Mikä ois semmonen kevyt hyvä rutiini??
Aloitetaampas kielen sanomisesta...
Ylhäältäpäin kuvattu? Vai kolmiulotteine? =P Kolmiulotteisessa on paljon vaikeampaa tarkistella törmäyspisteitä.. ja onhan lisenssit hankittu, jos mariota aiot käyttää pelissäsi ;)
Jos tiedot hirviöistä ovat taulukossa, voit helposti verrata pelihahmon koordinaatteja ja kunkin hirviön koordinaatteja ottaen huomioon spritejen leveydet, ja jos kohdat menevät päällekkäin, törmäys on tapahtunut.
proguru, 3D-tasohyppely spriteillä? Kuulostaa vallan mainiolta ;)
Väriarvoilla leikkiminen ei useimmiten tule kuuloonkaan, nopsasti onnistuu jos vertailet kuutioilla, pixelperfect vie sitten hieman enemmän aikaa mutta ei toki liikaa sekään :)
Joo... jos kieli on VB törmäys rutiini on tämän näköinen:
If pelaaja.Top < (hirviö.Top + hirviö.Height) Then If (pelaaja.Top + pelaaja.Height) > hirviö.Top Then If pelaaja.Left < (hirviö.Left + hirviö.Width) Then If (pelaaja.Left + pelaaja.Width) > hirviö.Left Then ' OSUMA !! End If End If End If End If
Tuossa juha90 antamassa vinkissä kappaleiden täytyy olla täsmälleen toistensa kohdalla...
Kieli on VB ja marion tilasta pelissä käytetään valokuvia oikeasta ihmisestä.. Eikös tuo koordinaattejen vertaaminen vaadi aika paljon laskenta tehoa? Onko kukaan kuullut siitä docollision functiosta tai osaako kukaan avustaa sen käytössä?
LL, Ei todellakaan tarvitse kunhan kummankin kappaleen jokin kohtaa osuu toisiinsa!
Kummankin? Ajattelin laittaa peliin muutakin kuin Marion ja yhden vihollisen... Kukaan ei taida olla käyttänyt ilmeisesti tota ducollisionia?! Sehän ilmeisesti vertaa kahden neliön paikkaa ja laskee sen alueen kuinka paljon ne neliöt ovat sisäkkäin ja tarkastaa sitten siltä alueelta törmääkö sen neliön sisällä oleva sprite toisen neliön sisällä olevaan spriteen.. Tarkastus tapahtuu ilmeisesti väriarvoilla!
Etuna tässä verrattuna tuohon koordinaatti vertailuun on se, että törmäys tapahtuu todellakin Marion ääriviivojen mukaan. Eikä marion ympärillä olevan neliön mukaan!
Anttikin kirjoitti, että voin helposti verrata pelihahmon koordinaatteja, mutta tarkoittiko hän pelihahmon ääriviivoja vai jotain Picturelaatikon reunoja?
Ajattellaanpa tilanne jossa pelihahmo on paikoillaan. Kun hahmo on ollut paikoillaan vaikka 5 sekunttia se vaihtaa itsestään vaikka käsien asentoa, mutta sen picturelaatikon koordinaatit ei muutu ollenkaan, siinä tulee apuun docollision vai mitä hemmot, jotka sitä osaa käyttää??
Niinpä niin mut VBllä jos käy jotain tollasta tekemään niin tulee tosi vilkkuva , mut jos käytät DXää taikka APIa niin siitä vaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.