Eli olen tekemässä parin muun tyypin kanssa rpg peliä, mutta mietityttää että miten saisi sillä tavalla että hahmoa kun liikuttaa niin jos tulee vastaan shape opbejcti ni se ei mene sen läpi vaan pysähtyy siihen. Eli ihan niin monta shapea kun on ja ihan missä vaan ja ihan minkä kokosia vaan ni silti hahmo pysähtyisi niihin. Koska se olisi aika urakka että jokaiselle seinälle ja jokaiselle kivelle pitäisi tehdä oma leikkaus tarkistus. Niin olisiko tähän yksinkertaisempaa tapaa tehdä?
jos käytät pelissäsi tilemoottoria niin te se näin:
tee peli niin että sinulla on taulukko, jonka avulla piirrät kentän hakien taulukon soluista aina oikean palan oikeaan kohtaan. sitten onkin helppo tarkistaa voiko liikkua johonkin suuntaan, tarkistaa vain pelaajan yllä olevan palikan tunnuksen tms. sieltä taulusta.
Laita jokasen shapen koordinaatit taulukkoon. Eli indexoi ne. Ja ainakun se osuu shapeen niin käydään forrilla shapen taulukot läpi.
(edit: myöh.)
Taikasana: silmukka.
Esimerkiksi oletetaan että sinulla no taulukko objekti(n) jossa on kohdat x (integer) ja y (integer). Arvot ovat se ruutu, jossa objekti on. Tällöin voisi tarkistaa vaikka näin:
for i=0 to n-1 if pelaajanxkoordinaatti!=objekti(i).x and pelaajanykoordinaatti!=objekti(i).y 'liiku end if next
Mikäli siis pelaaja on yhdessä ruudussa ja maailma on muutenkin ruutupohjainen. Mikäli haluat että pelaaja voi liikkua vapaasti, katso onko pelaajan x-koordinaatti (piste) jonkun ruudun sisällä.
Miksi käyttää shapea, kun blittaus ei ole vaikea asia(yleisesti) (?)
Mutta, jos on pakko käyttää shapea, aluksi:
-Luodaan niitä omiin paikkoihin.
-Jokaisen paikka taulukkoon muistiin.
-Aina kun liikutetaan ukkoa, tai bottia tai jotain vaan mikä liikkuu, niin tarkistetaan ihan ekana for-silmukalla kaikki paikat läpi taulukosta.
-Jos este löytyy edestä, hypätään silmukasta veks
-Jos este ei löydy, vaan on maata pelkästään, jatketaan matkaa...
jos oikeen muistan niin shapet alkaa tuntumaan raskailta, kun niitä on päälle 10 näytöllä... (Pientä nykimistä ja kuvan päivitys heikkenee.)
Mikäli oikein ymmärsin, Tuomas viittaa samaan tekniikkaan jota on käytetty esimerkiksi Jakijassa. :)
Jooh, just siihen. Se on helppo aloittelijoille sekä käytännöllinen tilepohjaisissa peleissä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.