Karte in 3D-Umgebung

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Nicdel

Betreff: Karte in 3D-Umgebung

BeitragSo, Jun 15, 2008 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo alle zusammen,

ich habe folgendes Problem:
Ich habe eine 3D-Umgebung programmiert, in der man herumfliegen kann. Nun möchte ich aber, dass man auf einer Karte am Bildschirmrand genau sieht, wo man ist (Karte = Heightmap). Wie geht das?

MfG Nicdel

DAK

BeitragSo, Jun 15, 2008 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
heightmap als bild laden (LoadImage) und dann nach dem RenderWorld und vorm Flip mit DrawImage zeichnen lassen...
Gewinner der 6. und der 68. BlitzCodeCompo

Nicdel

BeitragSo, Jun 15, 2008 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke...
Aber wie soll ich die Position auf dem Bild anzeigen?

Also bis jetzt sieht's so aus:
user posted image
  • Zuletzt bearbeitet von Nicdel am So, Jun 15, 2008 16:54, insgesamt einmal bearbeitet

DAK

BeitragSo, Jun 15, 2008 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
EntityX(), EntityZ(), Plot/WritePixel
Gewinner der 6. und der 68. BlitzCodeCompo

Nicdel

BeitragSo, Jun 15, 2008 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Na ja, der Punkt ist manchmal etwas außerhalb der Karte...

CypressArt

BeitragSo, Jun 15, 2008 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
so wird ein kleiner roter punkt angezeigt:

Code: [AUSKLAPPEN]
; KLeine Karte anzeigen
      Color 0,0,0
      Rect 0,15,256,256,1

      DrawImage map_kroki,0,15

      Color 255,255,255
      ;Text 0,280,"X:"+Int(x#)+" Y:"+Int(terra_y#)+" Z:"+Int(z#)

      Color 255,0,0
      Oval(x#/20-1,15+Abs(z#/20)-1,3,3,1)


wobei x# und z# die koordinaten der aktuellen cameraposition oder Pivot sind
(no comment) -> Google Search Bot!!

Nicdel

BeitragSo, Jun 15, 2008 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert leider auch nicht ganz.

Ich hab mal ein paar Infos:
- Kartengröße: 512x512
- wird aber skaliert:
Code: [AUSKLAPPEN]

terrain=LoadTerrain("hm\hm1.bmp")
ScaleEntity terrain,50,290,50

- Die Karte im Spiel ist nur 256x256 groß:
Code: [AUSKLAPPEN]

hmi = LoadImage("hm\hm1.bmp")
ScaleImage hmi, 0.5, 0.5
 

Matthias

BeitragSo, Jun 15, 2008 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay.
Also Mußt du die EntitX bzw Z Koordinaten durch die scalierung rechnen.

Dann wäre das als wenn du ein 512x512 Map hättest. Es ist aber nicht 512x512 sondernt 256x256 also must du das dann nochmal durch 2Teilen
Also

X#=EntityX(Camera,1)/100
Y#=EntityZ(Camera,1)/100

Nicdel

BeitragSo, Jun 15, 2008 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Problem gelöst mit
Code: [AUSKLAPPEN]
Oval((EntityX(cam)/50-1) * 0.5,15+(Abs(EntityZ(cam)/50)-1) * 0.5,3,3,1)


Danke für alle Antworten

Nicdel

BeitragSo, Jun 15, 2008 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn wir schon dabei sind würde ich gerne noch wissen, wie man Kolissionen zwischen Kamera und Terrain feststellt.

MfG Nicdel

Tankbuster

BeitragSo, Jun 15, 2008 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Am Besten dafür ist Code: [AUSKLAPPEN]
TerrainY

Du schaust einfach, ob EntityY(Kamera) kleiner als TerrainY(..) ist, und wenn, dann wird die Kamera wieder mit PositionEntity Kamera,EntityX(Kamera),TerrainY(.....),EntityZ(Kamera) auf Höhe der Terrains platziert.
Dazu ist aber noch eine Gravitation nötig, die die Kamera dauerhaft nach unten zieht.
Twitter
Download Jewel Snake!
Windows|Android

Nicdel

BeitragSo, Jun 15, 2008 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank. Aber wieso Gravitation?

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group