Tyhmät kysymykset (I/2010)

Voit pyytää apua ohjelmointiongelmiin täältä.
Locked
User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku

Re: Tyhmät kysymykset (I/2010)

Post by Akuji »

Miten olisi mahdollista tehdä 2-D tasohyppelyyn hahmolle enemmän ominaisuuksia? Tarkoitan, että esim. välilyönnistä hyppää normaalisti ja vaikka Z-kirjaimesta tekisi voltin.
Awaclus
Forum Veteran
Posts: 2939
Joined: Tue Aug 28, 2007 2:50 pm

Re: Tyhmät kysymykset (I/2010)

Post by Awaclus »

Ohjelmoimalla.
User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku

Re: Tyhmät kysymykset (I/2010)

Post by Akuji »

Oho :!: Taisinkin kysyä hieman yksinkertaisesti, nyt kun kunnolla ajattelin. Painotin siis vain siihen volttiin, että mitenkös sen saisi tehtyä? Olen jo kokeillut laittaa koodiin lisää animoitavia kuvasarjoja, mutta en kyllä tiedä miksi ne eivät ole toimineet. :?:
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: Tyhmät kysymykset (I/2010)

Post by temu92 »

Tarkistat vaan kumpaa nappulaa painamalla ollaan hyppäämässä ja toistat sen mukaan eri pätkän animaatiosta. Ja animaatiohan pitää tietenkin olla myös piirrettynä, pelkkä ohjelmointipuoli ei riitä.
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Tyhmät kysymykset (I/2010)

Post by MetalRain »

Yksi mahdollisuus on myös pyörittää ukkoa. Kuitenkin voltissa haasteellisinta mielestäni on se kuinka tahdistaa pyörimisen laskeutumiseen ja miten mahdollinen voltin epäonnistuminen (esim. hahmon laskeutuminen päälleen) toteutetaan. Painovoimaesimerkistä muokattuna:

Code: Select all

Const PAINOVOIMA = -0.1 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä
kulmamuutos#=0.0


FrameLimit 40 'rajoita nopeutta
'-------------------------------------------------
'lataa kartta, siirrä sitä ylöspäin ja animoi se.
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5

'lataa animaatiosarja oikealle, maskaa ja piilota se
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13,36)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin

'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13,36)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin

'Tämä on varsinainen pelihahmo, joka piirretään ja
'jota hallitaan. Sille asetetaan törmäys->kartta
'Tätä EI PIILOTETA.
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin
'-------------------------------------------------
'Pääsilmukka
Repeat

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        'juokse oikealle
        PaintObject pelihahmo,oikea 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=2 'vauhtia oikealle
        kulmamuutos#=-Abs(kulmamuutos#)
        'vaihdetaan pyörimissuuntaa jos mennään oikealle,
        'näin saadaan etuperinvoltti molempiin suuntiin mennessä
    ElseIf LeftKey() Then
        'juokse vasemmalle
        PaintObject pelihahmo,vasen 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=-2 'vauhtia vasemmalle
        
    Else 
        'pysäytä animaatio, jos ei liikuta
        PlayObject pelihahmo,0
    EndIf
    
    'liikuta pelihahmoa
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA 'päivitä painovoima    
    
    TurnObject pelihahmo,kulmamuutos#'pyöritetään jos tarpeellista
    
    UpdateGame 'päivitä törmäys
    CloneCameraPosition pelihahmo 'liimaa kamera
    
    maassa=0 'ilmassa jollei toisin käy ilmi
    törmäykset=CountCollisions(pelihahmo)
    'katsotaan tärmätäänkö kattoon tai lattiaan
    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            'lattia
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 'jalat on maassa
                RotateObject pelihahmo,0.0 
                kulmamuutos#=0.0
            EndIf
            'katto
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    'jos ollaan ilmassa, näytä toisenlainen kuva
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    'HYPPY (vain jos jalat maassa)
    If KeyHit(cbKeyZ) And maassa Then 
        yPlus#=4.5 'voimaa ylös päin
        kulmamuutos#=7.0'pyörimisnopeus
    EndIf

    DrawScreen 'piirrä näyttö

Until EscapeKey()
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

olisko coolbasicissa sisään rakennettua tulostus komentoa? jos ei niin ja jollakulla on sellanen funktio voisiko laittaa tänne?
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Tyhmät kysymykset (I/2010)

Post by MetalRain »

Voit käyttää komentoriviä ja wordpadia hyväksi tiedoston tulostamisessa. Tällä koodilla komennat wordpadia tulostamaan oletustulostimella tiedostopolun mukaisen tiedoston.

Code: Select all

Execute "Write.exe /p "+Chr(34)+"tiedostopolku"+Chr(34)
Esimerkiksi tekstitiedosto C:\test.txt tulostettaisiin seuraavasti:

Code: Select all

Execute "Write.exe /p "+Chr(34)+"C:\test.txt"+Chr(34)
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Tyhmät kysymykset (I/2010)

Post by MaGetzUb »

Akuji wrote:Miten olisi mahdollista tehdä 2-D tasohyppelyyn hahmolle enemmän ominaisuuksia? Tarkoitan, että esim. välilyönnistä hyppää normaalisti ja vaikka Z-kirjaimesta tekisi voltin.
Chaosworm wrote:Ohjelmoimalla.
OMFG SHERLOCK!

Siis noh, teet erillisen kuvan animoidusta ukostasi, jossa se on kyykyssä. Sitten lähdekoodissa lataat animaatiot tavallisesti ilman pyörimistä ja lataat kuvan erikseen, jossa pelihahmo on kyykyssä ja paintobjektilla päällystät nykyisen pelihahmosi ja TurnObjecilla pyörität sitä sitten kun z-näppäin on pohjassa ja hahmosi on "ilmassa".
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku

Re: Tyhmät kysymykset (I/2010)

Post by Akuji »

MetalRain wrote:Yksi mahdollisuus on myös pyörittää ukkoa. Kuitenkin voltissa haasteellisinta mielestäni on se kuinka tahdistaa pyörimisen laskeutumiseen ja miten mahdollinen voltin epäonnistuminen (esim. hahmon laskeutuminen päälleen) toteutetaan. Painovoimaesimerkistä muokattuna:

Code: Select all

Const PAINOVOIMA = -0.1 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä
kulmamuutos#=0.0


FrameLimit 40 'rajoita nopeutta
'-------------------------------------------------
'lataa kartta, siirrä sitä ylöspäin ja animoi se.
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5

'lataa animaatiosarja oikealle, maskaa ja piilota se
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13,36)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin

'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13,36)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin

'Tämä on varsinainen pelihahmo, joka piirretään ja
'jota hallitaan. Sille asetetaan törmäys->kartta
'Tätä EI PIILOTETA.
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin
'-------------------------------------------------
'Pääsilmukka
Repeat

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        'juokse oikealle
        PaintObject pelihahmo,oikea 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=2 'vauhtia oikealle
        kulmamuutos#=-Abs(kulmamuutos#)
        'vaihdetaan pyörimissuuntaa jos mennään oikealle,
        'näin saadaan etuperinvoltti molempiin suuntiin mennessä
    ElseIf LeftKey() Then
        'juokse vasemmalle
        PaintObject pelihahmo,vasen 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=-2 'vauhtia vasemmalle
        
    Else 
        'pysäytä animaatio, jos ei liikuta
        PlayObject pelihahmo,0
    EndIf
    
    'liikuta pelihahmoa
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA 'päivitä painovoima    
    
    TurnObject pelihahmo,kulmamuutos#'pyöritetään jos tarpeellista
    
    UpdateGame 'päivitä törmäys
    CloneCameraPosition pelihahmo 'liimaa kamera
    
    maassa=0 'ilmassa jollei toisin käy ilmi
    törmäykset=CountCollisions(pelihahmo)
    'katsotaan tärmätäänkö kattoon tai lattiaan
    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            'lattia
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 'jalat on maassa
                RotateObject pelihahmo,0.0 
                kulmamuutos#=0.0
            EndIf
            'katto
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    'jos ollaan ilmassa, näytä toisenlainen kuva
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    'HYPPY (vain jos jalat maassa)
    If KeyHit(cbKeyZ) And maassa Then 
        yPlus#=4.5 'voimaa ylös päin
        kulmamuutos#=7.0'pyörimisnopeus
    EndIf

    DrawScreen 'piirrä näyttö

Until EscapeKey()
Esimerkkisi on muuten aivan täydellinen :) Olisiko mitenkään mahdollista saada noita mustia reunoja kuvasta pois voltin aikana? Vaikka maalaan maskiväriksi valkoisen ja vaihdan sen myös pelihahmon kuvaan, reunat näkyvät silti. :?:
jaahas
Advanced Member
Posts: 307
Joined: Fri Feb 05, 2010 11:36 pm
Location: Tornio

Re: Tyhmät kysymykset (I/2010)

Post by jaahas »

MetalRain wrote:Voit käyttää komentoriviä ja wordpadia hyväksi tiedoston tulostamisessa. Tällä koodilla komennat wordpadia tulostamaan oletustulostimella tiedostopolun mukaisen tiedoston.

Code: Select all

Execute "Write.exe /p "+Chr(34)+"tiedostopolku"+Chr(34)
Esimerkiksi tekstitiedosto C:\test.txt tulostettaisiin seuraavasti:

Code: Select all

Execute "Write.exe /p "+Chr(34)+"C:\test.txt"+Chr(34)
pitäisi saaha otettua kuva ohjelmasta ja sitten tulostaa se kuva niin miten se onnistuis?
User avatar
MetalRain
Active Member
Posts: 188
Joined: Sun Mar 21, 2010 11:17 am
Location: Espoo

Re: Tyhmät kysymykset (I/2010)

Post by MetalRain »

Akuji wrote:Olisiko mitenkään mahdollista saada noita mustia reunoja kuvasta pois voltin aikana? Vaikka maalaan maskiväriksi valkoisen ja vaihdan sen myös pelihahmon kuvaan, reunat näkyvät silti. :?:
Vaihda maskiväri mustaksi (RGB arvona 0,0,0) CoolBasic bugaa ja ei tue kunnolla muita maskivärejä kun objektia pyöritetään.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: Tyhmät kysymykset (I/2010)

Post by esa94 »

MetalRain wrote:
Akuji wrote:Olisiko mitenkään mahdollista saada noita mustia reunoja kuvasta pois voltin aikana? Vaikka maalaan maskiväriksi valkoisen ja vaihdan sen myös pelihahmon kuvaan, reunat näkyvät silti. :?:
Vaihda maskiväri mustaksi (RGB arvona 0,0,0) CoolBasic bugaa ja ei tue kunnolla muita maskivärejä kun objektia pyöritetään.
Oli joku kikka millä sai muun maskivärin ja silti pyöriviä objekteja.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Tyhmät kysymykset (I/2010)

Post by naputtelija »

Akuji wrote:Miten olisi mahdollista tehdä 2-D tasohyppelyyn hahmolle enemmän ominaisuuksia? Tarkoitan, että esim. välilyönnistä hyppää normaalisti ja vaikka Z-kirjaimesta tekisi voltin.
Helppo homma. Teet vain uuden animaation, Teet toisen hyppy-skriptin joka laukeaa näppäimestä Z. Laitat toiseen hyppy-skriptiin eri animaation ja tadaa! Tosin jos pitää voltata hypyn aikana niin teet vain samalla tavalla, paitsi että panet animaation toteutumaan vain ilmassa. Kaatumistunnisteen voi lisätä palauttamalla animaation ajankohdan. Esim. on 30 eri voltti-framea, ja niistä framet 25-30 ja 1-5 ovat jalat alhaalla. Eli:

Code: Select all

If ObjectFrame(ukko)<5 And ObjectFrame(ukko)>1 And ObjectFrame(ukko)<30 And ObjectFrame(ukko)>25 Then
    PlayObject ukko, LaskeutumisAlku, LaskeutumisLoppu
    score=score+5 'lisää pisteitä, jos puhut temppupelistä
Else
    PlayObject ukko, KaatumisAlku, KaatumisLoppu
    life=life-1 'vähentää elämää
Endif
If ObjectFrame(ukko)=LaskeutumisLoppu Then
    StopObject ukko
    PlayObject ukko, NormaaliSeisonta,NormaaliSeisonta
ElseIf ObjectFrame(ukko)=KaatumisLoppu Then
    StopObject ukko
    PlayObject ukko,NormaaliSeisonta,NormaaliSeisonta
EndIf
Korjatkaa, jos olen väärässä. Objektia ei kannata alkaa pyörittämään, tulos on vain ruma.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja »

Kikka oli, ellen väärin muista, se että ladataan kuva ja värjätään maskit mustaksi ohjelman sisällä :)

Itse tykkään enemmän tämäntapaisesta voltista, jossa pyörähdys tapahtuu kerran hypyn lakipisteen tienoolla. Tällöin ei tarvitse niin tarkasti pohtia myöskään voltista väärään aikaan laskeutumista, koska sitä ei voi tapahtua jos voltin sovittaa tilekokoon sopivasti kuten tässä.

Code: Select all

Const PAINOVOIMA = -0.1 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


'Asetetaan ruutu hieman zoomattuun tilaan
SCREEN 800,600 
SetWindow "Painovoimaesimerkki" 'suurenna ruudulle

'JOS PELI TÖKKII TAI PÄTKII TAI NYKII, MUUTA:
' 1) cbSizable -> cbFullScreen
' 2) poista rivi 23

FrameLimit 40 'rajoita nopeutta
'-------------------------------------------------
'lataa kartta, siirrä sitä ylöspäin ja animoi se.
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5

'lataa animaatiosarja oikealle, maskaa ja piilota se
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13,72)
//MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin

'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13,72)
//MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin

'Tämä on varsinainen pelihahmo, joka piirretään ja
'jota hallitaan. Sille asetetaan törmäys->kartta
'Tätä EI PIILOTETA.
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin
'-------------------------------------------------
'Pääsilmukka
Repeat

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        'juokse oikealle
        if rotate = 0 then PaintObject pelihahmo,oikea 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=2 'vauhtia oikealle
        vasem = 0
    ElseIf LeftKey() Then
        'juokse vasemmalle
        if rotate = 0 then PaintObject pelihahmo,vasen 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=-2 'vauhtia vasemmalle
        vasem = 1
    Else 
        'pysäytä animaatio, jos ei liikuta
        PlayObject pelihahmo,0
    EndIf
    
    'liikuta pelihahmoa
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA 'päivitä painovoima    
    
    UpdateGame 'päivitä törmäys
    CloneCameraPosition pelihahmo 'liimaa kamera
    
    maassa=0 'ilmassa jollei toisin käy ilmi
    törmäykset=CountCollisions(pelihahmo)
    'katsotaan tärmätäänkö kattoon tai lattiaan
    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            'lattia
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 'jalat on maassa
            EndIf
            'katto
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    'jos ollaan ilmassa, näytä toisenlainen kuva
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    'HYPPY (vain jos jalat maassa)
    If KeyHit(cbKeyZ) And maassa Then 
        yPlus#=4.5 'voimaa ylös päin
    EndIf
    
    If (yplus > 1.85 And yplus<1.95) Then
        rotate = 30*vasem-15
    EndIf
    
    TurnObject pelihahmo, rotate
    
    If ObjectAngle(pelihahmo)= 0 Then rotate = 0
    
    If maassa Then RotateObject pelihahmo, 0
    
    DrawScreen 'piirrä näyttö

Until EscapeKey()
Pelkkä saman spriten pyöräytys ei näytä kuitenkaan kovin hyvältä, käsin animoituun volttiin saa vaikka mitä kivoja yksityiskohtia jotka saavat sen näyttämään paljon paremmalta - ja voit tehdä myös ylös- ja alaspäin mentäessä eri framet tai pienet animaatiot, jolloin vaatteet voivat heilua komeasti ilmavirtausten mukana ;) Vielä latausaikakin lyhenee, kun ei tarvitse ohjelmassa pyöräyttää joka framesta eri versioita. Tämä on tietysti kierrettävissä sillä, että hyppyobjekti on erillinen, mutta se menee vähän kikkailuksi.

EDIT: Lisätäänpä vielä enemmän ponnistuksesta lähtevän näköinen voltti, se sopinee moniin tarkoituksiin paremmin :)

Code: Select all

Const PAINOVOIMA = -0.1 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


'Asetetaan ruutu hieman zoomattuun tilaan
SCREEN 800,600 
SetWindow "Painovoimaesimerkki" 'suurenna ruudulle

'JOS PELI TÖKKII TAI PÄTKII TAI NYKII, MUUTA:
' 1) cbSizable -> cbFullScreen
' 2) poista rivi 23

FrameLimit 40 'rajoita nopeutta
'-------------------------------------------------
'lataa kartta, siirrä sitä ylöspäin ja animoi se.
kenttä=LoadMap("Media\testmap.til","Media\tileset.bmp")
PositionObject kenttä,0,50
PlayObject kenttä,0,0,0.5

'lataa animaatiosarja oikealle, maskaa ja piilota se
oikea=LoadAnimObject("Media\zerorun1.bmp",47,51,0,13,72)
//MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,30,51 'tämä pitää asettaa kaikkiin

'sama vasemmalle
vasen=LoadAnimObject("Media\zerorun2.bmp",47,51,0,13,72)
//MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,30,51 'tämä pitää asettaa kaikkiin

'Tämä on varsinainen pelihahmo, joka piirretään ja
'jota hallitaan. Sille asetetaan törmäys->kartta
'Tätä EI PIILOTETA.
pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,30,51 'tämä pitää asettaa kaikkiin
'-------------------------------------------------
'Pääsilmukka
Repeat

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        'juokse oikealle
        if rotate = 0 then PaintObject pelihahmo,oikea 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=2 'vauhtia oikealle
        vasem = 0
    ElseIf LeftKey() Then
        'juokse vasemmalle
        if rotate = 0 then PaintObject pelihahmo,vasen 'vaihda kuvaa...
        If maassa Then PlayObject pelihahmo,2,11,0.25
        vauhti=-2 'vauhtia vasemmalle
        vasem = 1
    Else 
        'pysäytä animaatio, jos ei liikuta
        PlayObject pelihahmo,0
    EndIf
    
    'liikuta pelihahmoa
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA 'päivitä painovoima    
    
    UpdateGame 'päivitä törmäys
    CloneCameraPosition pelihahmo 'liimaa kamera
    
    maassa=0 'ilmassa jollei toisin käy ilmi
    törmäykset=CountCollisions(pelihahmo)
    'katsotaan tärmätäänkö kattoon tai lattiaan
    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            'lattia
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 'jalat on maassa
            EndIf
            'katto
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    'jos ollaan ilmassa, näytä toisenlainen kuva
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    'HYPPY (vain jos jalat maassa)
    If KeyHit(cbKeyZ) And maassa Then 
        yPlus#=4.5 'voimaa ylös päin
    EndIf
    
    If (yplus <4.45 And yplus>4.35) Then
        rotate = 20*vasem-10
    EndIf
    
    TurnObject pelihahmo, rotate
    
    If ObjectAngle(pelihahmo)= 0 Then rotate = 0
    
    If maassa Then RotateObject pelihahmo, 0
    
    DrawScreen 'piirrä näyttö

Until EscapeKey()
User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku

Re: Tyhmät kysymykset (I/2010)

Post by Akuji »

Miten tekisin sitten erillisestä objektista pyörivän volttikuvan? Itse en saanut aikaan mitään järkevää.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Tyhmät kysymykset (I/2010)

Post by koodaaja »

Se ei olekaan järkevää, kunhan yksi mahdollisuus. Ehdottomasti parasta on yksinkertaisesti piirtää nuo framet itse, jolloin saa kauniin animaation epämääräisen pyörähdyksen sijaan :)
User avatar
Akuji
Member
Posts: 60
Joined: Fri Oct 08, 2010 5:59 pm
Location: Turku

Re: Tyhmät kysymykset (I/2010)

Post by Akuji »

Sitäkin olen tässä yrittänyt, mutta ei ole mitään tullut. Ongelma on siinä, että en ole ennen tehnyt pelejä, joissa on enemmän kuin yksi hyppy, joten asiaan ei ole tullut perehdyttyä. Miten sellainen animaatio tehtäisiin? Olisihan se kiva semmoinenkin oppia :)
Wingman
Devoted Member
Posts: 594
Joined: Tue Sep 30, 2008 4:30 pm
Location: Ruudun toisella puolella

Re: Tyhmät kysymykset (I/2010)

Post by Wingman »

Akuji wrote:Sitäkin olen tässä yrittänyt, mutta ei ole mitään tullut. Ongelma on siinä, että en ole ennen tehnyt pelejä, joissa on enemmän kuin yksi hyppy, joten asiaan ei ole tullut perehdyttyä. Miten sellainen animaatio tehtäisiin? Olisihan se kiva semmoinenkin oppia :)
siinä tekemisessä on aika paljon asiaa mitä pitää ottaa huomioon.. riippuen vähän hyppääjän koosta/muista mitoista.. itse aloittaisin kait piirtämällä tikku-ukkona sen tyypin 'luut' ja siihen ympärille sitten itse tyypin, päälle vaatteet (jos niitä on) ja sitten vähän leikittelisin erikoisuuksilla (juuri näillä vaatteiden lepatuksilla ilmavirrassa jne. jne.)
- - - -
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: Tyhmät kysymykset (I/2010)

Post by naputtelija »

Onko cb:ssä rajaa muuttujien käytölle? Entä hidastaako ylenmääräinen muuttujien käyttö sovellusta? Esim:

Code: Select all

x=10
y=5
width=5
length=10
height=10
'tässä sitten rakennetaan talo parametrien mukaan...
'koodi tähän
'---------------------------------------------------------------
Ja jotain tollaista siis noin 20-35 kertaa.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
legend
Advanced Member
Posts: 371
Joined: Wed Nov 18, 2009 8:06 pm

Re: Tyhmät kysymykset (I/2010)

Post by legend »

naputtelija wrote:Onko cb:ssä rajaa muuttujien käytölle? Entä hidastaako ylenmääräinen muuttujien käyttö sovellusta? Esim:

Code: Select all

x=10
y=5
width=5
length=10
height=10
'tässä sitten rakennetaan talo parametrien mukaan...
'koodi tähän
'---------------------------------------------------------------
Ja jotain tollaista siis noin 20-35 kertaa.
Ei oikein mutta se kuluttaa rammia minimaalisesti. Jos haluat pienentää rammin kulutusta käytäppä dim...
Locked