Terve vaan kaikille...
Eli olen tässä tekemässä ihan normia tasoloikka peliä C++:lla ja multimedia kirjastona käytän SDL:ää.
Elikkäs tarkoitus on tehdä maailmaan painovoima. Noh itsessään kun miettii niin tuohan on varsin helppo toteuttaa. Eli kun painetaan hyppy nappia asetetaan jokin oletus hyppy voima jota sitten paivoiman mukaan miinustetaan. Mutta itselläni tuli sellanen ongelma, että....
Palikka esim. sijaitsee koordinaatistossa X = 10 ja Y = 10.
Pelaajan X ja y ovat taas 0 pisteessä eli X = 0 ja Y = 0.
Nytten ku painan hyppy nappia pelaajalle annetaan hyppyvoima joka on 1. Sitten painovoimaa aletaan miinustamaan tuosta hyppyvoimasta eli tuosta 1. Painovoiman arvo on 0.3. Eli painovoimaa miinustetaan 1 kokoajan. Mutta sitten kun pelaaja lähtee painovoiman takia laskeutumaan kohti maata, niin ukko saattaa mennä maan läpi. Eli tämähän on aivan ymmärettävää, koska jos pelaajaa liikutetaan maahan päin esim 0.3 nopeudella niin eihän tuo mene tasan 10 kanssa.
Eli kun palikka sijaitsee Y = 10 eli 10, niin eihän 0.3 liikuttaessa se mene tasan eli pelaaja on joko 33 while kierroksen ja 0.3 liikutuksen jälkeen pisteessä 9,9 ja 34 10,2. Eli ei mene tasan!
Miten tuon saisi tehtyä sillai että se menisi aina tasan tuon 10 et se pysähtyis 10 eikä menisi maasta läpi?
Toivottavasti saitte selkoo...
Kiitos!
Edit1: Eli tiedän kyllä sen et sen sais sillai et jos se on > kuin 10 nii asetetaan se 10, mutta oisko se mahdolista laskee suoraa 10?
Kokonaisluvuksi muuttaminen poistaa desimaaliosan.
float y; y = lasku(); return (float)(int)y;
Aivan!!! Hitto ku en ite tajunnu. Kiitos paljon sinulle ville-v. :)
Ilmeni yksi vika. Elikkäs, mitäs jos kyseessä onkin kokonais luvut. Eli jos pelaajaa liikutetaan 3 pixelii kerrallaan niin sittenhän 3 ei mene tasan 10 kanssa???
Tarkista kaikki pikselit liikuttavalta väliltä pelkän päätepisteen sijaan, niin pitäisi toimia oikein.
kayttaja-3842 kirjoitti:
Ilmeni yksi vika. Elikkäs, mitäs jos kyseessä onkin kokonais luvut. Eli jos pelaajaa liikutetaan 3 pixelii kerrallaan niin sittenhän 3 ei mene tasan 10 kanssa???
Jos pelaaja tahtois liikkua 3 pikseliä, mut tilaa on vaan kaks, niin liikuta sitä vain se kaks.
Aihe on jo aika vanha, joten et voi enää vastata siihen.