Objektien henk.koht liike jne.

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

Objektien henk.koht liike jne.

Post by RaatoX »

Ongelmani on, että luon nipun objekteja, joiden tulisi jokaisen liikkua itsenäisesti ja törmäykset kenttään tarkistetaan jokainen erikseen.
Törmätessä näkymättömiin objekteihin, tulisi liike olla käänteinen, nyt kaikki kääntyy, kun yksi objekti törmää johonkin.
Objektit luotu ja liike annettu, mutta kaikki liikkuvat jostakin syystä samalla tavalla eli en jotenkin saa annettua objekteille erillisiä omia nopeuksia.
Kuinka kaavaan tulisi sijoittaa moveobject tai vastaava, jotta jokaisella objektilla olisi erillinen liike, ja jonka voi kääntää törmäystarkistus osiossa ?
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Objektien henk.koht liike jne.

Post by esa94 »

RaatoX wrote:Ongelmani on, että luon nipun objekteja, joiden tulisi jokaisen liikkua itsenäisesti ja törmäykset kenttään tarkistetaan jokainen erikseen.
Törmätessä näkymättömiin objekteihin, tulisi liike olla käänteinen, nyt kaikki kääntyy, kun yksi objekti törmää johonkin.
Objektit luotu ja liike annettu, mutta kaikki liikkuvat jostakin syystä samalla tavalla eli en jotenkin saa annettua objekteille erillisiä omia nopeuksia.
Kuinka kaavaan tulisi sijoittaa moveobject tai vastaava, jotta jokaisella objektilla olisi erillinen liike, ja jonka voi kääntää törmäystarkistus osiossa ?
Pasteapa ensin nykyinen koodi?
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Objektien henk.koht liike jne.

Post by RaatoX »

korppusininen1=LoadAnimObject("Media\korppusin.png",48,51,0,16) ' LUODAAN OBJEKTI
MaskObject korppusininen1,cbMagenta
ShowObject korppusininen1,OFF
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Type KORPPUSININEN
Field objKS
End Type

If GetMap2(3, x, y) = 60 Then

korppusininen.KORPPUSININEN = New(KORPPUSININEN)
korppusininen\objKS = CloneObject(korppusininen1)
PositionObject korppusininen\objKS, 32*(-.6*MapWidth() + x +7.5) + ObjectX(map), -32*(-.5*MapWidth() + y -19.2) + ObjectY(map)
LoopObject korppusininen\objKS,0,15,.2,ON
SetupCollision korppusininen\objKS,näkymätönkivi\objNK,2,1,2'''''
SetupCollision näkymätönkivi\objNK,korppusininen\objKS,2,1,2'''''
ObjectOrder korppusininen\objKS,1

ks1x=1 ' TÄSSÄ ANNETAAN NOPEUS

EndIf
ShowObject korppusininen1,OFF
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For oks1.KORPPUSININEN = Each KORPPUSININEN
For onk1.NÄKYMÄTÖNKIVI = Each NÄKYMÄTÖNKIVI

If oks1 <> onk1 Then
If ObjectsOverlap(oks1\objKS, onk1\objNK) Then

ks1x=-ks1x 'TÄSSÄ MUUTETAAN KÄÄNTEINEN NOPEUS

End If
End If

MoveObject oks1\objKS,ks1x
Next onk1
Next oks1
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Objektien henk.koht liike jne.

Post by esa94 »

RaatoX wrote:

Code: Select all

korppusininen1=LoadAnimObject("Media\korppusin.png",48,51,0,16) ' LUODAAN OBJEKTI
MaskObject korppusininen1,cbMagenta
ShowObject korppusininen1,OFF
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Type KORPPUSININEN
    Field objKS
 End Type

        If GetMap2(3, x, y) = 60 Then

        korppusininen.KORPPUSININEN = New(KORPPUSININEN)
        korppusininen\objKS = CloneObject(korppusininen1)
        PositionObject korppusininen\objKS,  32*(-.6*MapWidth() + x +7.5) + ObjectX(map), -32*(-.5*MapWidth() + y -19.2) + ObjectY(map)
         LoopObject korppusininen\objKS,0,15,.2,ON
        SetupCollision korppusininen\objKS,näkymätönkivi\objNK,2,1,2''''' 
        SetupCollision näkymätönkivi\objNK,korppusininen\objKS,2,1,2''''' 
        ObjectOrder korppusininen\objKS,1
 
        ks1x=1 ' TÄSSÄ ANNETAAN NOPEUS
            
  EndIf
ShowObject korppusininen1,OFF
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For oks1.KORPPUSININEN = Each KORPPUSININEN
        For onk1.NÄKYMÄTÖNKIVI = Each NÄKYMÄTÖNKIVI

        If oks1 <> onk1 Then
           If ObjectsOverlap(oks1\objKS, onk1\objNK) Then
             
            ks1x=-ks1x 'TÄSSÄ MUUTETAAN KÄÄNTEINEN NOPEUS
            
            End If
          End If  
 
    MoveObject oks1\objKS,ks1x
    Next onk1
Next oks1
Laita For onk1...–loopin alkuun ks1x = 1
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Objektien henk.koht liike jne.

Post by RaatoX »

No, ei auta. Kokeilin laittaa kyseisen pätkän eri kohtiin kaavaa ja tulokset olivat seuraavat.
Menee näkymättömienkivien läpi paukkuen tai hidastellen tai toimien kuten ennen eli kaikilla objekteilla sama liikerata :) .
Jotakin muuta tulisi keksiä ;) .
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Objektien henk.koht liike jne.

Post by RaatoX »

Objektit liikkuvat korkeiden tasojen päällä ja reunoissa on näkymättömät kivet, joihin törmätessä objektin tulisi kääntää suuntaa.
Tasot ovat eripituisia, joten olisi kiva jos ne liikkuisivat jokainen omalla tavallaan, ei kytköksissä toisiinsa. :D
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Objektien henk.koht liike jne.

Post by esa94 »

RaatoX wrote:Objektit liikkuvat korkeiden tasojen päällä ja reunoissa on näkymättömät kivet, joihin törmätessä objektin tulisi kääntää suuntaa.
Tasot ovat eripituisia, joten olisi kiva jos ne liikkuisivat jokainen omalla tavallaan, ei kytköksissä toisiinsa. :D
No kun säädät nopeuden negatiivisesti, se ei automaagisesti palaudu vaan kaikki myöhemmät objektit saavat saman negatiivisen nopeuden.
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Objektien henk.koht liike jne.

Post by RaatoX »

Itse uskon, että virhe tapahtuu objektien luomiskaavassa. Siellä annetaan objektin vauhti, mutta annanko sen kyseisessä kaavassa kaikille erikseen vai yhden yhteisen ? Jos haluan antaa kaikille oman muuttujan vauhdiksi, jota seurataan, niin kuinka se annetaan ?
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: Objektien henk.koht liike jne.

Post by valscion »

RaatoX wrote:Itse uskon, että virhe tapahtuu objektien luomiskaavassa. Siellä annetaan objektin vauhti, mutta annanko sen kyseisessä kaavassa kaikille erikseen vai yhden yhteisen ? Jos haluan antaa kaikille oman muuttujan vauhdiksi, jota seurataan, niin kuinka se annetaan ?
Aseta tyyppikokoelmaan uusi Field, vaikkapa "nopeus" ja sitten tuolla For-Each loopissa siirrät objekteja niiden omien nopeuksien perusteella (eli tarkistat nopeuden käyttämällä esim. For oks1.KORPPUSININEN = Each KORPPUSININEN loopissa oks1\nopeus muuttujaa).
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 henk.koht liike jne.

Post by RaatoX »

Kiitos VesQ, tähän lopputulokseen tulin ajatuksissani myös itse.
Halusin vain varmistuksen tähän, jotten tee turhaa työtä ;) .
Pistän piakkoin ekat screenit projektista, jota olen väsännyt nyt 1/2 vuotta ja uskoisin, että syksyllä valmis ;) .
Ohjelmassa nyt noin 6000 riviä ja laajenee :D .
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Objektien henk.koht liike jne.

Post by JATothrim »

RaatoX wrote:Kiitos VesQ, tähän lopputulokseen tulin ajatuksissani myös itse.
Halusin vain varmistuksen tähän, jotten tee turhaa työtä ;) .
Pistän piakkoin ekat screenit projektista, jota olen väsännyt nyt 1/2 vuotta ja uskoisin, että syksyllä valmis ;) .
Ohjelmassa nyt noin 6000 riviä ja laajenee :D .
Toivottavasti koodi ei ole yhtä purkkaa, että esim. koodin jakaminen eri tiedostoihin onistuu/on tehty? ;)
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
RaatoX
Member
Posts: 54
Joined: Thu Aug 12, 2010 7:04 pm

Re: Objektien henk.koht liike jne.

Post by RaatoX »

Koodin jakaminen on tehty huolella aliohjelmiin ja ohjelmarakenne on suunniteltu erikseen heti alussa omaan pelivihkoon :) .
HUOM! Luotan perinteiseen suunnitteluun enemmän kuin nykyaikaisiin esim. excel-taulukkoihin :P .
Perusteellinen rakennesuunnittelu vei n. 2kk ennen koodauksen aloitusta.
Ohjelmassa yhdistellään eri pelityylejä (genreä) ja niiden yhteen saattaminen vei suunnittelusta omanaikansa ;) .
Peli käsittää valmiina n. 30 toimintakenttää/osa-aluetta ja kenttien läpikahlaaminen arviolta kestää n.20-24 tuntia.
Siksi mainitsemasi koodirakenne ja sen jakaminen on tärkeysasteikolla nro 1 :D .
Post Reply