Objectien tunnistus ongelma

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
Raato

Objectien tunnistus ongelma

Post by Raato »

No, täytyykö todellakin laittaa SetupCollision kaikkiin obj:hin ja myös toisin päin törmäyksiä varten.
Eli palikka1 tunnistaa palikka2 ja toinen palikka2 tunnistaa palikka1.
Teen ohjelmaa jossa on noin 20 obj:ia, joten tunnistuksia tulisi jälkimmäisellä tavalla, LIIKAA!!!
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Objectien tunnistus ongelma

Post by phons »

Jos teet ne tyypeillä, joka on TODELLA kannattavaa jos on niin monta objektia, niin ei siihen mene kuin muutama, muutaa yleisesti täytyy. Jos törmäys on vain silloin kun sinä törmäät vihuun eikä silloin kun vihu törmää sinuun niin vihu menee sinusta läpi mutta jos itse törmäät silloin vihuun niin siinä on törmäys. Ymmärsitkö?
Image
Guest

Re: Objectien tunnistus ongelma

Post by Guest »

Raato wrote:No, täytyykö todellakin laittaa SetupCollision kaikkiin obj:hin ja myös toisin päin törmäyksiä varten.
Eli palikka1 tunnistaa palikka2 ja toinen palikka2 tunnistaa palikka1.
Teen ohjelmaa jossa on noin 20 obj:ia, joten tunnistuksia tulisi jälkimmäisellä tavalla, LIIKAA!!!
Eli onko 10 muuttujaa todellakin 9*8*7*6*5*4*3*2 ja nämä vielä toisin päin...????
Ja kuinka saadaan törmäys kopioituun palikkaan tunnistettua jos se on sama kuin alkuperäinen.
Ohjelma antaa virheen SetupCollision palikka1,palikka1, 1, 1, 2
E.T.
Newcomer
Posts: 42
Joined: Thu Jul 03, 2008 9:33 am

Re: Objectien tunnistus ongelma

Post by E.T. »

Vieras wrote: Eli onko 10 muuttujaa todellakin 9*8*7*6*5*4*3*2 ja nämä vielä toisin päin...????
Ja kuinka saadaan törmäys kopioituun palikkaan tunnistettua jos se on sama kuin alkuperäinen.
Ohjelma antaa virheen SetupCollision palikka1,palikka1, 1, 1, 2
Kymmenelle objektille törmäyksentunnistuksia tarvitaan "vain" 10*9=90
Objektien ei tarvitse törmätä itseensä. Jos teet objektit typeillä niin törmäykset kannattaa laittaa näin

Code: Select all

for o1.objektit=each objektit
    for o2.objektit=each objektit
        if o1<>o2 then setupcollision o1\obj,o2\obj,1,1,2
    next o2
next o1
Quidquid latine dictum sit, altum videtur.
Voitot: Viikkokisa XVII
otto90x
Advanced Member
Posts: 349
Joined: Mon Aug 27, 2007 9:00 pm
Location: Lapinjärvi, Finland
Contact:

Re: Objectien tunnistus ongelma

Post by otto90x »

Tässä vielä vähän toisenlainen lähestymistapa

Code: Select all

For o1.objektit=Each objektit

    o2.objektit=First(objektit)
    o2=After(o1) 
   // valitaan aina seuraava objekti
    While o2<>NULL // kunnes saavutetaan viimeinen objekti
    
        //asetetaan molemmat törmäämään toisiinsa
        SetupCollision o1\obj,o2\obj,1,1,2
        SetupCollision o2\obj,o1\obj,1,1,2
        
        o2=After(o2) 
    Wend 
    
Next o1
Tämän hyöty siis on siinä ettei jokaista objektia tarvitse käydä läpi jokaisen objektin kohdalla, vaan käydään vaan sen objektin jälkeiset objektit, niihin aikaisempiinhan on jo asetettu törmäys, eli seuraavasti:

objekti 1 asetetaan törmäämään objektiin 2, objektiin 3, objektiin 4...
objekti 2 asetetaan törmäämään objektiin 3, objektiin 4...
objekti 3 asetetaan törmäämään objektiin 4...

EDIT: Törmäyksien kokonaismäärä näköjään kuitenkin pysyy samana joten nopeutta ei taida tulla lisää, mutta on hyvä muistaa tämä "kikka" jos aiot muuten päivitellä (katsoa vaikka että törmäävätkö) objektijoukkoja keskenään.
Otto Martikainen a.k.a. MetalRain, otto90x, kAATOSade.
Runoblogi, vuodatusta ja sekoiluja.
Raato

Re: Objectien tunnistus ongelma

Post by Raato »

Kiitos vinkeistä, kyllä se tästä taas selkeni.
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Objectien tunnistus ongelma

Post by phons »

No niin, itsellenikin oli tästä hyötyä kun botit aina menivät toisten päälle mutta ei kauaa. :D
Image
Post Reply