Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

1

04.04.2010, 22:35

Kollisionsberechnung isometrischer Bilder ...

Abend zusammen,

hätte wiedereinmal eine Frage zu isometrischen Bilder... Wie kann ich zum Beispiel erkennen ob z.B. Mauskoordinaten oder ein anderes Bild sich in einem isometrischen Feld befindet ? die einzelnen Felder sehen ja ca. so aus:

/\
\/

aber die Bilder in dennen sie sich befinden sind ja normale vierecke und keine rauten d.h. ich habe nur die Höhe und die Breite des Feldes wie kann ich jetzt mit nur diesen beiden Informationen die Felder von einander unterscheiden ?(



mfg

SD
...

2

04.04.2010, 23:28

Naja, es gibt ja eine recht einfach Formel, um die Position eines Feldes in der Spielwelt in die Bildschirmposition umzurechnen. Etwas ähnliches wirst du ja auch benutzen, um die Felder an der richtigen Stelle anzuzeigen.
Die Formel kann man dann einfach umkehren, die Mauskoordinaten rein tuen und man bekommt die Position auf die die Maus in der Spielwelt zeigt.
Das mit dem "ein anderes Bild" versteh ich nicht, was willst du damit erreichen?
Lieber dumm fragen, als dumm bleiben!

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

3

14.04.2010, 20:08

so hab mich jetzt mal wieder mit dem thema beschäftigt, haber allerdings folgendes Problem:

um die Bilder auf dem Bildschirm anzuzeigen, benutze ich folgenden Code

C-/C++-Quelltext

1
2
3
4
5
int col = map[y][x].getypos();
int row = map[y][x].getxpos();
yhight = map[y][x].gethight()*4;
xp = row*(twidth/2) - col*(thight) + (int)camx; 
yp = col*(thight/2) + row*(thight/2) + (int)camy - yhight;


rechne ich diesen wieder zurück habe ich ja nur die X/Y koodrinaten des Tiles ... mir geht es eben darum wie ich jetzt mit diesem Punkt links oben berechnen kann ob die Maus in der Raute drinne ist oder nicht ? ^^
...

SilentDragon

Alter Hase

  • »SilentDragon« ist der Autor dieses Themas

Beiträge: 530

Wohnort: Köln

Beruf: Student

  • Private Nachricht senden

4

16.04.2010, 00:54

soo bin etwas weiter gekommen ^^

ich teile nun die Raute in 2 Dreiecke auf (oben und unten). Bringt theoretisch gesehen genau so wenig, allerdings praktisch schon, da ich online eine Formel gefunden habe, mit der man überprüfen kann ob ein Punkt in einem Dreieck liegt ^^

sieht im Code wie folgt aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int mrx = (int) (x + camx - 30);
        int mry = (int) (y + camy);
        int x1, x2, x3 = 0;
        int y1, y2, y3 = 0;
        
        for (int ymap=0; ymap<maphight; ymap++)
        {
            for (int xmap=0; xmap<mapwidth; xmap++)
            {
                int py = map[ymap][xmap].getframeypos();
                int px = map[ymap][xmap].getframexpos();
                x1 = px + (twidth/2);
                x2 = px;
                x3 = px + twidth;
                y1 = py;
                y2 = py + (thight/2);
                y3 = py + (thight/2);
                //x1 * a + x2 * b + x3 * c = mrx
                // y1 * a + y2 * b + y3 * c = mry
                // 1 * a + 1 * b + 1 * c = 1
            }
        }


wie man im Code erkennt beschreibt es die obere Hälfte des Dreiecks. Liegen nun a,b & c zwischen 0 und 1 liegt der Punkt im Dreieck !

ich weiß jetzt nur nicht wie ich das in Java lösen soll (in Mathe macht dies ja eig. der Taschenrechner XD) ^^

mfg
SD
...

Werbeanzeige