Isometrisk spil matematik

Tags:    javascript html5 canvas

Heej Udviklerer.
Jeg er igang med at og lave en isometrisk spil engine fra scratch, og jeg har et mindre problem med at regne mine "isometriske" muse kordinater ud.

Lige pt er det her hvad jeg har lavet, og bruger til at viasualisere det.
www.johnbob.dk/test

Men har lidt svært ved at få den til at regne de rigtig koordinater ud, specielt hvis den også skal regne det rigtigt ud hvis man holder musen i toppen af en af firkanterne.

Håber der er en der ude der kan hitte rede i det.
På forhånd mange tak.
Wunderstrudel.



10 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 12 karma
Sorter efter stemmer Sorter efter dato
Har du set disse løsninger ?

http://stackoverflow.com/questions/6718875/find-column-row-on-2d-isometric-grid-from-x-y-screen-space-coords-convert-equa.

Principielt bør det ikke være kompliceret. Du kender din algoritme for at placere dine tiles ud fra et fast defineret XY-sæt. Din mus XY-sæt er ikke anderledes end det du bruger som udgangspunkt til at placere dine tiles. Det hvor det bliver en smule mere kompleks, er hvis din "verden" er større end de tiles du har pt. Så skal koordinater oversættes.

Iøvrigt er der rigtig god viden gemt her, også selvom det er til ActionScript:
http://www.tonypa.pri.ee/tbw/tut16.html





Hvad mener du med koordinat? Skal du vide, hvilken polygon, musen befinder sig i?
For koordinatet får du jo med mouse moved eventet.

By the way, istedet for at bruge setInterval til at gentegne verden bør du bruge requestAnimationFrame. Så gentegner du med skærmens opdateringshastighed, og gentegning stopper, hvis browseren skifter faneblad eller af andre årsager ikke vises.



Indlæg senest redigeret d. 25.02.2015 15:54 af Bruger #2695
Hvis du har koordinaterne for de fire hjørner i hver polygon, kan du bruge en point-in-polygon test (google det...og dine polygoner er convexe, hvilket gør det meget simplere).



Heej Robert.
Ja lige præcis, skal vide hvilken tile som er under musen, så jeg kan ændre den ved click. og mit problem har været at hver anden række, jo ligger forskudt med en halv længde. har prøvet diverse formler og matrixes, men det er svært når man ikek kan se de logiske træk bagved det. (:

tak fordi du siger det, er slet ikke så langt inde i det, det er det første html5 spil jeg roder med, har bare opbygget det baseret på det jeg lærte om c++ engang.

Mvh. Wunderstrudel



Mange tak for svarene, vil give mig til at lege med det (:
Så høre i nok fra mig igen, når det går galt igen.



Her har du et lille eksempel på, hvordan en containsPoint funktion kunne implementeres:
Fold kodeboks ind/udKode 


Punkterne i polygonen SKAL listes i urets retning.



Indlæg senest redigeret d. 26.02.2015 09:33 af Bruger #2695
Heej igen, har stadig ikke fået det til at virke (:
Og forstår desværre ikke helt det eksempel du har givet mig. hvor i scriptet regner du isoX og isoY ud fra cartX og cartY?
Mvh. Wunderstrudel



Det gør jeg ikke. Jeg bruger skærmkoordinaterne, så har du dem for felternes hjørner, så fungerer det.



ja jamen har godt kigget lidt på det insquare før, hat bare tænkt at det nok ville tage en del ydeevne for den, at skulle tjekke alle tiles om musen er i den, i forhold til bare at tjekke isoX og isoY af musen (:



Det eneste jeg gør, er at udregne dot product af en række vektorer, og det er kun multiplikation og addition, så det er meget hurtige operationer.
Det er sådan vi gør, på komogvind.dk/spilnu.dk, og endda på hundreder af polygoner, så det virker ganske godt :-)



t