Vihut törmäämään toisiinsa

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
User avatar
wilizucoder
Member
Posts: 81
Joined: Sat Sep 08, 2007 11:24 pm
Location: Espoo
Contact:

Vihut törmäämään toisiinsa

Post by wilizucoder » Mon Oct 22, 2007 11:04 pm

Eli miten saa laitettua typeillä tehdyille vihuille keskinäisen törmäyksentunnistuksen, eli miten vihut saisi törmäämään toisiinsa?
Jos joku viitsisi hieman avittaa, kun en löytänyt mistään esimerkeistä tähän vastausta.

User avatar
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: Vihut törmäämään toisiinsa

Post by Pate5 » Tue Oct 23, 2007 1:48 pm

Joo, tämä onkin aika vaikea ongelma. Tässä olisi yksi ratkaisu:

Code: Select all

'Viholliset typeen
Type vihut
Field obj
EndType

ukko=loadobject("media/guy.bmp",72)'ladataan objekti

'luodaan 10 vihollista ja laitetaan ne random paikkoihin
for i=1 to 10
vihu.vihut=new(vihut)
vihu\obj=cloneobject(ukko
next i

for vihu.viholliset=each viholliset 'käydään viholliset läpi
for vihu2.viholliset=each viholliset 'käydään viholliset läpi eri nimellä
if vihu<>vihu2 then 'jos vihu=eri kuin vihu2
setupcollision vihu\obj,vihu2\obj,2,2,2 'laitetaan viholliset törmäämään toisiinsa
setupcollision vihu2\obj,vihu\obj,2,2,2
endif
next vihu2
next vihu
Ei ole testattu CoolBasicilla, mutta pitäisi toimia. Toivottavasti tästä oli apua.

-Pate5
CoolBasic henkilökuntaa
Graafikko

User avatar
Marcoder
Active Member
Posts: 120
Joined: Tue Aug 28, 2007 8:21 am

Re: Vihut törmäämään toisiinsa

Post by Marcoder » Tue Oct 23, 2007 2:24 pm

PateViitosen ratkaisu on siinä mielessä huono että siinä kaikki vihut käydään keskenään läpi kahteen kertaan.

Tällä virityksellä käydään vihut keskenään vain kerran.

Code: Select all

For v.VIHU = Each VIHU
    v2.VIHU = After(v)
    While v2 <> NULL
        SetupCollision v\obj, v2\obj, 2, 2, 2
        SetupCollision v2\obj, v\obj, 2, 2, 2
        v2 = After(v2)
    Wend
Next v

User avatar
wilizucoder
Member
Posts: 81
Joined: Sat Sep 08, 2007 11:24 pm
Location: Espoo
Contact:

Re: Vihut törmäämään toisiinsa

Post by wilizucoder » Tue Oct 23, 2007 3:20 pm

Kiitos, tätä juuri tarkoitin.

Eräs Vierailija

Re: Vihut törmäämään toisiinsa

Post by Eräs Vierailija » Tue Nov 20, 2007 6:51 pm

Tämä on hyvä koodi, muuta miksi se tiputtaa FPS:n 15:ta?

Niin, ja anteeksi vanhan topicin herättämisestä

User avatar
Harakka
Advanced Member
Posts: 430
Joined: Mon Aug 27, 2007 9:08 pm
Location: Salo
Contact:

Re: Vihut törmäämään toisiinsa

Post by Harakka » Tue Nov 20, 2007 6:55 pm

Jos törmäyksentunnistuksia asettaa loopissa, peli hidastuu varmasti. Ne täytyy asettaa ennen looppia. Jos peli hidastuu kuitenkin sen jälkeenkin, kyse on varmaan liian suuresta vihollismäärästä. Jokaisen kohdalla kun törmäys pitää tarkastaa erikseen, mihin kuluu aikaa. Kokeileppa vähentää vihollisten määrää.
Peli piirtokomennoilla - voittaja, Virtuaalilemmikkipeli - voittaja,
Sukellusvenepeli - voittaja, Paras tileset - voittaja
Vaihtuva päähenkilö - voittaja, Autopeli - voittaja sekä
Hiirellä ohjattava peli - voittaja B)

Eräs Vierailija

Re: Vihut törmäämään toisiinsa

Post by Eräs Vierailija » Tue Nov 20, 2007 7:13 pm

Kappas, nyt toimii.

Tattista!

Post Reply