Position im Spiel für alle Handys (Auflösung) gleich machen?

  • Antworten:2
Michele
  • Forum-Beiträge: 1.525

30.09.2013, 03:32:15 via Website

Hallo alle zusammen.

Nicht jedes Handy hat die gleiche Auflösung.
Mein Problem ist, wenn ich im Spiel einen Ort angebe durch Koordinaten und dann was passieren
soll das es auf einen anderen Handy mit einer anderen Auflösung nicht gleich ist.

Zeige mal ein beispiel was ich meine:

1public void worldMap(){
2
3 float posX = xpos;
4 float posY = ypos;
5 float x1 = 128, x2 = 444, y1 = 540, y2 = 800;
6 float x11 = -1304, x22 = -1304, y11 = 480, y22 = 870;
7
8 /*
9 * Erstes House
10 *
11 */
12
13 if ((posX >= x1 && posX <= x2) && (posY >= y1 && posY <= y2)) {
14
15 if(xpos == 128){
16 xpos = 124;
17 } else if(ypos == 540){
18 ypos = 536;
19 } else if(xpos == 444){
20 xpos = 448;
21 } else if(ypos == 800){
22 ypos = 804;
23 }
24
25 /*
26 * Zweites House
27 *
28 */
29
30 } if ((posX >= x11 && posX <= x22) && (posY >= y11 && posY <= y22)) {
31
32 if(xpos == -1304){
33 xpos = -1300;
34 } else if(ypos == 480){
35 ypos = 470;
36 } else if(xpos == -1304){
37 xpos = -1300;
38 } else if(ypos == 870){
39 ypos = 880;
40 }
41 }
42 }

Laufe ich gegen das erste oder zweite Haus
so bleibe ich stehen und laufe nicht durch.

Nun möchte ich das so hinbekommen das es bei jedem anderen Handy
auch so ist.
Aber bei jedem anderen Handy ist ja leider die Auflösung anders und daher sind die Koordinaten anders.
Da ja die Auflösung kleiner oder größer ist bei dem anderen Handy.

Hoffe ihr versteht mich.


LG

— geändert am 30.09.2013, 03:34:28

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

30.09.2013, 11:43:25 via Website

Tja, mit festen werten kann man da nicht weiter kommen. Wieso rechnest du nicht einfach mit relativen größen. Spielfeld ist 100% breit und lang.
An position x 45% und y 70% ist ein Hinderniss floating points werden da sicher weiterhelfen. Oder hat du rechnest einfach von 0-1.0 macht die sache evtl sogar intuitiver.
Das reine Bounding Box Model würde ich so aufbauen zumindest, das eine rendering davon entkoppeln und dann einfach nur noch zeichnen wenn es was zu zeichnen gibt. Logik vom UI mehr trennen und auch die Hindernisse mehr trennen, das sieht man ja jetzt schon in deinem Code das du jedes haus da einzeln prüfst, das wird alles andere als wartbarer und testbarer code.

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Michele

Antworten
Michele
  • Forum-Beiträge: 1.525

01.10.2013, 00:31:36 via Website

Hallo Mac.

Ich danke dir sehr.
Natürlich hast du recht. Und ein sehr guter Tipp von dir. Werde das mit dem Spielfeld mal machen.
Meine Map/World ist ein einzige Image.
Versuche sowas wie 2D Spiele in Zelda form von damals.

Mit richtiger Grafik etc kenne ich mich noch nicht aus.


LG

— geändert am 01.10.2013, 00:31:52

Antworten