Aktuelle Zeit: 21.09.2019, 13:10

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 2 Fragen auf einmal
BeitragVerfasst: 06.02.2010, 18:44 
Offline

Registriert: 09.08.2009, 21:38
Beiträge: 17
Edit
Hallo Leute,
hab mal dringent 2 Fragen

1. Frage - Fertig

2. Frage
Ich hab ein 2D Spielfeld aus 40x40 Vierecken und diese um 45° Verzerrt
Wie schaffe ich es etz das ich wenn ich mit der Maus drüber fahre das Feld ausfülle?

mit draw2Dretacle geht die 45 Grad Verzerrung nicht

Danke schonmal im vorraus


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 2 Fragen auf einmal
BeitragVerfasst: 07.02.2010, 00:25 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Du musst dir die entsprechenden 3d koordinaten zusammenbasteln und das dann rendern zb mit draw3DTriangle

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 2 Fragen auf einmal
BeitragVerfasst: 07.02.2010, 12:50 
Offline
Benutzeravatar

Registriert: 17.04.2007, 08:42
Beiträge: 460
Wohnort: Willich, NRW
Versteh ich das richtig, das du ne isometrische Ansicht erzeugen willst? Willst du nun, das Tile selektieren oder es mit Farbe füllen? Wenn dus wirklich mit farbe machen willst, wäre Sylence Ansatz schon sehr gut. Oder aber du implementierst in Irrlicht direkt dafür routinen und machst dan code sharing ;) Würde bestimmt einige freuen^^

_________________
Bild

Irrlicht - From Noob To Pro A Guideline

--

Sonstige Projekte, Blog : http://www.rpdev.net


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 2 Fragen auf einmal
BeitragVerfasst: 07.02.2010, 19:45 
Offline

Registriert: 09.08.2009, 21:38
Beiträge: 17
Also Ich möchte es nur Selectieren

wenn keine Verzerrung vorliegt klappt das auch nur eben nicht wenn es verzerrt ist ^^

Für alle die noch nicht wissen was ich meine mal ne Zeichnung:

Und nen code ansatz wär auch nicht schlecht arbeite noch nicht lange mit Irrlicht


Dateianhänge:
Feld.jpg [32.94 KiB]
Noch nie heruntergeladen
Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 2 Fragen auf einmal
BeitragVerfasst: 07.02.2010, 20:23 
Offline
Benutzeravatar

Registriert: 17.04.2007, 08:42
Beiträge: 460
Wohnort: Willich, NRW
Wenn es genau 45° sind kann ich dir vllt dienlich sein. Hab sowas mal vor einiger Zeit gemacht. War ne nette kleine Klassensammlung zum Thema isometrische Karten.

Da ja in irrlicht alles rechteckig ist was man mit draw2D zeichnen kann wirst du auch sicherlich einfach rechteckige bilder nehmen, bei denen die Textur an sich verzerrt ist. Somit wirst du wenn du irgendwo auf den Screen klickst immer 2 Bilder anwählen. Bei dem einen wirst du auf das Bild an sich klicken und bei anderen auf den transparenten Teil, der dann unsichtbar ist. Nun musst du rausfinden auf welchen der beiden Tiles du auf die transparente Stelle und bei welchen auf die sichtbare Stelle geklickt hast.

Wenn du statische Auflösungen benutzt kannst du folgendes machen. Zeichne dir eine Maske, die die gleiche Auflösung wie eine Kachel hat. Z.B.:

Bild

Dann legst du die Maska dahin, wo die beiden verdächtigen Tiles sind und fragst ab welche Farbe das Pixel unter der genannten Mouseposition hat. (Natürlich zeichnest du die Maske nicht mit!) Und kannst somit herausfinden bei welcher Kachel dann tatsächlich auf die sichtbare Stelle geklickt wurde und somit die selektierte sein muss.

Als Codebasis habe ich damals das genommen:

Code:
        int correctionX, correctionY;
   SColor color;
   int k, l;

   IImage* image = _device->getVideoDriver()->createImageFromFile("mask.png");

        //unsere Kacheln liegen in einer quadratischen Karte der Größe sizeOfMyMap vor
   for(unsigned int x = 0; x < sizeOfMyMap; x ++)
   {
      for(unsigned int y = 0; y < sizeOfMyMap; y ++)
      {
                        //Nun ermitteln wir den Offset, damit die Position auch in der Maske liegt
                        //Die Maske hat eine Auflösung von 64x32 und das Fenster eine Größe von screenWidth*TileWidth
                        //Weiterhin geht das Beispiel davon aus, dass die Karte zentriert gezeichnet wurde!
         correctionX = (screenWidth/2  - 64/2) - y * 64/2 + x *64/2;
         correctionY = (screenHeight/2 - 32/2*sizeOfMyMap) + y*32/2 + x*32/2;
         
         image->lock();
         color = image->getPixel(mouseX - correctionX, mouseY - correctionY);
         image->unlock();
      }
   }   


Nun kannst du color auswerten. Falls sie schwarz (SColor(255,0,0,0)) ist, dann ist es ganu unser gesuchtes Tile ansonsten eben nicht :)

Das Beispiel hinkt hier und da und entspricht nicht ganz dem wie ich es dir oben gennant habe. Es geht viel mehr alle Möglichkeiten durch. Dass das ineffizient ist brauche ich glaube nicht zu sagen. Ich werde mich die Tage mal etwas damit beschäftigen und hier http://www.rpdev.net/home/node/39 etwas dazu ergänzen.

Aber ich hoffe ich konnte dich in die richtige Richtung stoßen :>

mfg heck

_________________
Bild

Irrlicht - From Noob To Pro A Guideline

--

Sonstige Projekte, Blog : http://www.rpdev.net


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: 2 Fragen auf einmal
BeitragVerfasst: 08.02.2010, 18:53 
Offline

Registriert: 09.08.2009, 21:38
Beiträge: 17
Danke Hilft mir schonmal sehr ;)

Mal schauen ob ich vllt noch die ein oder andere Macke rausbekomm
schreib dich dann wegen verbesserungen an ^^


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de