Nyt kun tiedämme kuinka tehdä isometrinen näkymä ja kuinka ohjata sankaria hiirellä, meidän pitäisi mennä nukkumaan ja unohtaa kaikki ne… Odota, ei, halusin sanoa, että meidän pitäisi nyt yhdistää isometria ja hiiri. Hei, herää!
Tässä ei ole mitään varsinaista uutta, käytämme isometrisen opetusohjelman ja vaihdamme näppäimistön ohjauksen hiiren ohjaukseen.
Muuntaminen isometrisestä
Ainoa mielenkiintoinen kysymys tässä luvussa on kuinka muuntaa hiiren koordinaatit näytöstä laatoiksi, jotta tiedämme, mitä laattapelaajaa on napsauttanut. Kuten ehkä muistat edellisestä luvusta, käytimme:
game.xmouse=Math.round((_root._xmouse-game.tileW/2)/game.tileW);
game.ymouse=Math.round((_root._ymouse-game.tileH/2)/game.tileH);
Jos olet koskaan miettinyt, miksi käytimme näitä rivejä, niin ei, se ei johdu siitä, että koodi näyttää hyvältä ja on tarpeeksi pitkä tehdäkseen vaikutuksen tyttöystävääsi. Syy, miksi käytimme tätä koodia, johtui pääasiassa siitä, että olimme sijoittaneet sankarin oikeaan paikkaan käyttämällä rivejä:
char.x = (char.xtile *peli.tileW)+peli.tileW/2;
char.y = (char.ytile *peli.tileW)+peli.tileW/2;
Älä ole ujo, katso kahta paria. Voin jopa kirjoittaa rivit uudelleen selvyyden vuoksi. Otetaan koodi char.x:lla, jos oudot nimet korvataan yksinkertaisilla kirjaimilla, se sanoo:
a=b*c+d
Nyt jotta voimme löytää hiiren koordinaatit, meidän on saatava kirjain “b” tästä yhtälöstä:
b=(a-d)/c
ja tämä on juuri se, mitä olemme käyttäneet hiirelle. OK, mutta olimme täällä puhumassa isometriikasta. Isometrisessä näkymässä laattoja ei voi napsauttaa hiirellä samalla koodilla, koska olemme sijoittaneet laatat eri tavalla. Kaikki laatat asetetaan isometrisesti koodilla:
xiso=x-y
yiso=(x+y)/2
Saadaksemme selville, mitä ruutua on napsautettu, meidän on löydettävä muuttujat “x” ja “y” näistä yhtälöistä. Kirjoitetaan ensimmäinen rivi uudelleen:
x=xiso+y
Korvaa nyt x:n yhtälö toiselle riville:
yiso=(xiso+y+y)/2
joka voidaan kirjoittaa uudelleen pari kertaa:
yiso=(xiso+2y)/2 2yiso=xiso+2y 2y=2yiso-xiso y=(2yiso-xiso)/2
Ja olemme luoneet kaksi riviä laattojen laskemiseksi isometrisessä tilassa näytön koordinaateista:
y=(2*yiso-xiso)/2
x=xiso+y
Todellinen koodi
Käytä työfunktiossa tätä koodia selvittääksesi isometrinen laatta hiiren alla:
var ymouse=((2*peli.clip._ymouse-game.clip._xhiiri)/2);
var xmouse=(peli.leike._xhiiri+hiiri);
game.ymouse=Math.round(hiiri/peli.tileW);
game.xmouse=Math.round(xmouse/game.tileW)-1;
Olen varma, että näet yhtäläisyydet 2 aiemmin luomamme rivin kanssa. Muuttujalla xmouse ja imouse on arvot siellä, missä hiiri olisi ollut, jos emme olisi tarpeeksi typeriä aloittaaksemme kaiken tämän isometrisen jutun.
Muista, älä käytä _root._xmousea, koska “laatat” -elokuvaleikkeemme on siirretty (game.clip._x=150) ja haluamme saada hiiren “tiles” -elokuvaleikkeen sisään. Jos käytät _root._xmousea, laatta x=0 sijoitetaan näyttämön vasempaan reunaan, mutta isometrinen näkymä sijoittaa sen laatan noin näyttämön keskelle.
Voit ladata lähdekoodin ja kaikki koodit ja elokuvat täältä.
