Objektien tunnistus

Voit pyytää apua ohjelmointiongelmiin täältä.
Post Reply
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Objektien tunnistus

Post by RaatoX »

Mikä on selkein ja yksinkertaisin tapa tunnistaa kopio-objektit, kun ne törmää toisiin kopio-objekteihin. Jos ohjelmassa on satoja objekteja joihin törmäilee muita objekteja laumoittain ? Jotenkin en saa kaavoja täsmäämään keskenään. Pelihahmo tunnistaa objektit, mutta pelihahmon ampumat kopio-luodit eivät tuhoa muita kopio-objekteja. Kyseessä tasohyppely, jossa kerätään esineitä kulkemalla pelihahmolla ja sen osan kone tunnistaa. Mutta jos haluan tuhota esineen ampumalla niin ammukset tunnistaa kentän ja tuhoutuvat, muttei kopio-objekteja. Kuinka SetupCollision kannataisi tehdä ? Voiko johtua siitä, että kerättävät luodaan ennen looppia ja panokset vasta painettaessa spacea ? Missä järjestyksessä tulisi tunnistukset tehdä ?

Käsitykseni mukaan kloonien pitäisi periä isännän ominaisuudet, vai ?
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Objektien tunnistus

Post by MaGetzUb »

Tyyppikokoelmat on isojen objekti laumojen hallintaan paras. :) Kannattaa ensin tutustua ammukset esimerkkiin.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Objektien tunnistus

Post by RaatoX »

Kyllä olen tutustunut esimerkkeihin, mutta niissä ei tarkisteta luodin osumista klooni-objekteihin.
Rajoitukset on tehty aluerajoina. Aseet tekevät minulla laumoittain luoteja, jotka poistuvat kyllä map:iin osuessaan.
Mutta tunnistus ei toimi klooni-luotien osuessa muihin klooni-objekteihin.
Kloonit kyllä poistuvat mikäli pelihahmo kävellässään osuu niihin, mutta klooni-luodilla ammuttaessa luoti ei tunnista klooni-objekteja.
Pelihahmo on yksi objekti, joka maalataan kuvasarjalla. Mutta luodit ovat klooneja isännästä.
Mikäli tämä selvensi ;) .
Täytyykö siis kloonien törmäykset klooneihin esitellä koneelle eri tavalla, jos niitä molempia on satoja?
SetupCollision-käskyjä olen yrittänyt, jos johonkin suuntaan, mutta ei vaan skulaa. :(
phons
Guru
Posts: 1056
Joined: Wed May 14, 2008 10:11 am

Re: Objektien tunnistus

Post by phons »

Siis haluat että ammukset tuhoutuvat osuessaan toisiinsa? Tähän oli joku ihme härö tapa, mutta näinkin muistaakseni toimi:

Code: Select all

For a.ammus = Each ammus
    For a2.ammus = Each ammus
        If a <> a2 Then
            If ObjectsOverLap(a\obj, a2\obj) Then
                // mitä tapahtuukin... 
            EndIf
        EndIf
    Next a2
Next a
Eli siis käydään samat luodit läpi luoti-luupissa jolloin se tarkistaa jokaisen luodin törmäyksen jokaiseen luotiin, tämä tosin on virhealtis, jos molemmista luupeista tulee sama luoti.. eli katsotaan luodin overlap itseensä, tämän virheen poistaa rivi 3.
Image
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Objektien tunnistus

Post by MaGetzUb »

Tässä on yksinkertainen luotikokoelman objektien välinen törmäys;

Code: Select all

//Tähän kohtaan tulee luodin ampumis koodi...
For luoti.AMMUKSET = each AMMUKSET
     For Bluoti.AMMUKSET = each AMMUKSET
     If Bluoi <> luoti Then SetUpCollision Bluoti\obj, luoti\obj, 2, 2, 2 : SetUpCollision luoti\obj, Bluoti\obj, 2, 2, 2
     Next Bluoti
Next luoti
//Tästä alaspäin päivitetään luodit. 
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Objektien tunnistus

Post by RaatoX »

Kiitos, ongelma selvisi. Olin jo kokeillut kaikkea, mutta sisäkkäiset for-next jäi kokeilematta :D .
Mutta nyt aseet ovat liian tehokkaita, koska tuhoavat myös kuvaruudun ulkopuolella. :lol:
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Objektien tunnistus

Post by valscion »

RaatoX wrote:Mutta nyt aseet ovat liian tehokkaita, koska tuhoavat myös kuvaruudun ulkopuolella. :lol:
Aseta vaikkapa aseiden luodeille tyyppikokoelmaan uusi Field matkaLennetty ja lisää sitä aina samalla kun siirrät loopissa ammuksia (MoveObject-kohta siis) ja teet vaikka samassa loopissa tarkastuksen, jos kyseisen jäsenen matkaLennetty arvo on vaikkapa suurempi kuin 400 ja poista se.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Objektien tunnistus

Post by RaatoX »

Kiitos, näin teen. Ja Kiitos kaikille avustaneille ! Taas projekti etenee :P
Post Reply