Tai rekisteröidy jo tänään!
Sivuja: 1 [2]

Platformer slopetuella

0 jäsentä ja 1 Vieras katselee tätä aihetta.
#15: 21. Tammikuu 2013, 08:37Peukku ylös +0Peukku alas -0
Miten tähän sais vaihdettua noi liikkumisnäppäimet WADS-näppäimiin? Oon yrittäny paristakin kohtaa mutta en tiedä että pitääkö kirjottaa joku keyboard_check(a) vai mikä.
keyboard_check(ord('A'))
1x
Tykkään
Spoiler
#16: 21. Tammikuu 2013, 13:15Peukku ylös +0Peukku alas -0
keyboard_check(ord("A"))
Eli sen sijaan vaan, että laittaisit vaikka vk_up, niin pistätkin ord("KIRJAIN ISOLLA TÄHÄN")
Niin toimii :p

EDIT:
Turha viesti, huomasin vasta lähetettyäni reaktorin viestin. Don't mind me
Tykkään
Lainaus käyttäjältä: ElNinja -2015
Ei normaalit ihmiset yritä paeta.
http://www.facebook.com/stillrunninggame
http://www.stillrunning.fi
#17: 21. Tammikuu 2013, 13:26Peukku ylös +0Peukku alas -0
Öhöm,

Enginen tekijänä saanen huomauttaa että tuki näppäinten vaihdolle on tässä valmiina, eli pelaajaobjektin createssa löytyy:

button_right = vk_right // Tallennetaan muuttujaan oikea nuolinäppäin.
button_left = vk_left // Tallennetaan muuttujaan vasen nuolinäppäin.
button_jump = vk_up // Tallennetaan muuttujaan ylöspäinnuolinäppäin.


Tuosta vaihdetaan vk_right muotoon ord('D'), vk_up muotoon ord('W') ja vk_left muotoon ord('A') ja a vot, liikkuminen toimii WASDilla :P
Tykkään
Spoiler




#18: 21. Tammikuu 2013, 16:06Peukku ylös +0Peukku alas -0
Joo nyt toimii. Kiitos kaikille :) Pitänee opetella edes vähän GML:llää
Tykkään
#19: 21. Tammikuu 2013, 16:52Peukku ylös +0Peukku alas -0
Koska monet ovat valittaneet etteivät saa kasilla auki, niin tässä ois engine "raakana koodina":

PELAAJAOBJEKTI

Create:
Spoiler
gravity_direction = 270; // Asetetaan painovoiman suunta alaspäin

button_right = vk_right // Tallennetaan muuttujaan oikea nuolinäppäin.
button_left = vk_left // Tallennetaan muuttujaan vasen nuolinäppäin.
button_jump = vk_up // Tallennetaan muuttujaan ylöspäinnuolinäppäin.


Step:
Spoiler
// Painovoima

if place_free(x,y+1) // Jos maata ei ole jalkojen alla, niin painovoima käyttöön, muuten nollaksi.
{
gravity=0.2
}
else
{
gravity=0
}




// Liikkuminen

/*

Näppäintarkastuksen voi tehdä myös keyboard-eventien avulla.
Tässä kuitenkin näytän, miten homma hoituu kätevästi step-eventissä
yhdellä koodilla, jolloin ei tarvitse kirjoittaa melkein samaa asiaa
uudelleen vasemmalle ja oikealle liikkumiseen.

Muuttujat button_left ja button_right on määritelty create-eventissä.

*/


liikkuu = 0;

if keyboard_check(button_left)
{
suunta = -1;
liikkuu = 1;
}


if keyboard_check(button_right)
{
suunta = 1;
liikkuu = 1;
}





if liikkuu = 1
{




nopeus = suunta*2 // Asetetaan liikkumisnopeus ja sen suunta (etumerkki). Muuttamalla kerrointa, pelaaja liikkuu nopeammin. HUOM: Kertoimen tulee olla jaollinen kahdella!




        // Tapaus 1: Tutkitaan, voidaanko liikkua suoraan vaakatasossa.
        if !place_meeting(x+nopeus,y,o_maa_parent)
        {
        x+=nopeus
        }
        else
        {
       
                // Tapaus 2: Tutkitaan, voidaanko liikkua loivaan yläviistoon.
                if !place_meeting(x+nopeus,y-abs(nopeus),o_maa_parent)
                {
                x+=nopeus
                y-=abs(nopeus)
                }
                else
                {
               
                        // Tapaus 3: Tutkitaan, voidaanko liikkua jyrkkään yläviistoon. Jos et halua, että näin jykkää mäkeä voi kiivetä, poista neljä seuraavaa riviä.
                        if !place_meeting(x+nopeus,y-(2*abs(nopeus)),o_maa_parent)
                        {
                        x+=nopeus
                        y-=(abs(nopeus)*2)
                        }
               
                }
       
       
        }

}






// Hyppääminen; hyppynäppäin button_jump on määritelty create-eventissä.




if keyboard_check(button_jump) and !place_free(x,y+1) // Jos pelaaja on maassa ja hyppynappi painettuna, niin hyppää.
{

vspeed=-6

}

// Jos haluat, ett pelaaja ei voi pomppia painamalla hyppynappia pohjassa, niin vaihda "keyboard_check" -kohdan tilalle "keyboard_check_pressed".


Collision: o_maa_parent
Spoiler
// Pysäytetään liike.
move_contact_solid(direction,12)
vspeed = 0;



o_maa_parent -OBJEKTI
-solid päälle

Kaikki pelin maaobjektit
-solid päälle
-parentiksi o_maa_parent

Tadaa :P
5x
Tykkään
Spoiler




#20: 08. Joulukuu 2015, 17:27Peukku ylös +0Peukku alas -0
Tämä on ollut todella hyödyllinen esimerkki simppelyydestään ja helposti sovellettavasta koodista.
Tosin ajansaatossa yksi asia, mikä tässä esimerkissä on häirinnyt minua on ollut;

kulkeminen alamäkeä pitkin. Näyttäisi hienommalta jos se menisi maata pitkin

Tämä on tosin aika vanha esimerkki jo, mutta on ollut hyvänä pohjana eri projektien aluille.
Joten en tiedä viititkö päivittää tätä enää.  *->
Tykkään
Spoiler
#21: 08. Joulukuu 2015, 18:37Peukku ylös +0Peukku alas -0
Devastated perustuu tähän platform-moottoriin, ja yleisön pyynnöstä korjasinkin tuon jo siihen. Periaatteessa, voisin päivittää tämänkin examplen :D
1x
Tykkään
Spoiler




#22: 10. Joulukuu 2015, 16:25Peukku ylös +0Peukku alas -0
Devastated perustuu tähän platform-moottoriin, ja yleisön pyynnöstä korjasinkin tuon jo siihen. Periaatteessa, voisin päivittää tämänkin examplen :D
Niin olisihan se hyvä korjaus/lisä tuohon exampleen.
Vaikka koodia onkin helppo soveltaa, en itse saanut aikaan kunnollista alamäki liikkuvuutta.  :/
Tykkään
Spoiler
#23: 17. Kesäkuu 2017, 23:58 (muokannut Woffelson 18. Kesäkuu 2017, 18:53)Peukku ylös +0Peukku alas -0
Morjensta vaan näin nekropostailun merkeissä. Otin vapaudekseni vähän päivittää tätä examplea. (Olen tekemässä tämän examplen pohjalta fysiikkamoottoria GameMakerin Box2d fysiikkasysteemillä, mutta siitä lisää kenties joskus tulevaisuudessa.) Tuohon Migulin toiveeseen tämä voi vähän tulla myöhässä, mutta tein mm. tuon liikkumisen alamäkeen. Samalla otin x-nopeudesta ytyä ylämäkitapauksissa, kun oli muuten niin sairaan nopeeta. Tässä liikkeet:

Spoiler
if liikkuu = 1
{




nopeus = suunta*2 // Asetetaan liikkumisnopeus ja sen suunta (etumerkki). Muuttamalla kerrointa, pelaaja liikkuu nopeammin. HUOM: Kertoimen tulee olla jaollinen kahdella!

//Tapaus -1: jyrkkä alaviisto
if place_meeting(x+nopeus,y+16,o_maa_parent) and !place_meeting(x+nopeus,y+(abs(nopeus)*2),o_maa_parent) and !keyboard_check(button_jump)
{
x+=nopeus
y+=(abs(nopeus)*2)
}
else
{
   
    //Tapaus 0: loiva alaviisto
    if place_meeting(x+nopeus,y+8,o_maa_parent) and !place_meeting(x+nopeus,y+abs(nopeus),o_maa_parent) and !keyboard_check(button_jump)
    {
    x+=nopeus
    y+=abs(nopeus)
    }   
    else
    {
       
        // Tapaus 1: Tutkitaan, voidaanko liikkua suoraan vaakatasossa.
        if !place_meeting(x+nopeus,y,o_maa_parent)
        {
        x+=nopeus
        }
        else
        {
       
                // Tapaus 2: Tutkitaan, voidaanko liikkua loivaan yläviistoon.
                if !place_meeting(x+nopeus/2,y-abs(nopeus)/2,o_maa_parent)
                {
                x+=nopeus/2
                y-=abs(nopeus)/2
                }
                else
                {
               
                        // Tapaus 3: Tutkitaan, voidaanko liikkua jyrkkään yläviistoon. Jos et halua, että näin jykkää mäkeä voi kiivetä, poista neljä seuraavaa riviä.
                        if !place_meeting(x+nopeus/4,y-(abs(nopeus)),o_maa_parent)
                        {
                        x+=nopeus/4
                        y-=(abs(nopeus))
                        }
               
                }
       
        }

    }
   
}
}

Ja bonuksena hyppyyn päivitettynä seinähyppy. Tässä tapauksessa kannattaa jo viimeistään ottaa tuon Miconkin muistuttama pressed käyttöön, kun tuo pelkkä check tekee hyppelystä aika hackerman-menoa.
Spoiler
// Hyppääminen; hyppynäppäin button_jump on määritelty create-eventissä.




if keyboard_check(button_jump) and (!place_free(x,y+1) // Jos pelaaja on maassa ja hyppynappi painettuna, niin hyppää.
or (!place_free(x+4,y) and keyboard_check(button_left)) // Seinäloikkaus vasemmistoon
or (!place_free(x-4,y) and keyboard_check(button_right))) // Seinäloikkaus oikeistoon
{

vspeed=-6

}

// Jos haluat, ett pelaaja ei voi pomppia painamalla hyppynappia pohjassa, niin vaihda "keyboard_check" -kohdan tilalle "keyboard_check_pressed".


Teki itselleni hallaa yrittää sopeutua Micon väljään sisennystyyliin, mutta eiköhän homman idea käy tuosta aika lailla selville. Sain idean tuohon testausjärjestyksen merkitykseen tästä, joka on vähän sofistikoituneempaa koodia aiheesta. Käytännössä lisäsin tuohon Micon "sweeppiin" kaksi esitarkistusta. Toivottavasti näistä on jollekin hyötyä. Jos jotakuta kiinnostaa tuo GM-physics versio, niin minua voi yrittää patistaa examplen teossa. Se on vielä tosin kesken. Sen verran mainittakoon, että ajattelin tehdä siitä myös yhteensopivan Poizenin vesimallinnuksen kanssa vaikken niihin hienoihin laskelmiin kyllä yksityiskohtaisemmin uskalla kajota.

EDIT: Muutama aivopieru korjattu.
EDIT2: Pieni kosmeettinen korjaus vielä. Saatan jatkossakin hioa koodia, jos katson tarvetta. Nyt tuon kuitenkin pitäisi jo moitteettomasti toimia.
2x
Tykkään

Sivuja: 1 [2]
 

Powered by SMF 2.0.11 | SMF © 2006–2009, Simple Machines LLC