3d tiles - wie ?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Blitzprogger

Betreff: 3d tiles - wie ?

BeitragSo, Apr 25, 2010 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich programmiere ein kleines Spiel für das ich 3d-Tiles habe (32 x 16 x 32 Tiles). Diese haben eine ID 1 bis x, wobei 0 für "Kein Modell an dieser Stelle steht". Die IDs werden in eine Datei mittels:
Code: [AUSKLAPPEN]
file = WriteFile ("Data\Maps\"+dat$+".txt")
For x = 0 To 31 : For y = 0 To 15 : For z = 0 To 31
         WriteInt file,map (x,y,z)
Next : Next : Next
gespeichert.
Später werden die IDs wieder eingelesen.

Doch wie kriege ich die Map nun hin das alle Tilemeshes nun an den richtigen Stellen stehen? (alle 10 x 10 x 10 Felder)
Alle meine Versuche haben nicht funktioniert?

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Xeres

Moderator

BeitragSo, Apr 25, 2010 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie hast du es denn versucht? PositionEntity?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Blitzprogger

BeitragSo, Apr 25, 2010 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe zwei Dim Felder: tile und map.
tile (64) ist ein Feld in das die Tilemeshes geladen werden. In einem Ordner habe ich die Meshes (mit Namen 1 - x).
Geladen wird wie folgt: Code: [AUSKLAPPEN]
Function loadtiles ()
   file = ReadDir ("Data\Gfx\Tiles")
   Repeat
      dat$ = NextFile (file)
      If Right (dat$,4) = ".b3d" Then
         dat$ = Replace (dat$,".b3d","")
         tile (Int(dat$)) = LoadMesh ("Data\Gfx\Tiles\"+dat$+".b3d")
      EndIf
   Until dat$ = ""
   CloseDir file
   tile (0) = 0 ;sollte bedeuten: hat kein Mesh (hoffe es ist richtig)
End Function


map steht für die ID des Meshes an der Position x*10,y*10,z*10.

mapmesh ist ein Mesh, das mittels Createmesh () erstellt wurde.
Dieses Mesh wird zusammengesetzt wie folgt: Code: [AUSKLAPPEN]
Function redomap ()
   If mapmesh <> 0 Then FreeEntity mapmesh
   mapmesh = CreateMesh ()
   For x = 0 To 31 : For y = 0 To 15 : For z = 0 To 31
            If map (x,y,z) > 0 Then
               PositionEntity tile (map (x,y,z)),x*10,y*10,z*10
               AddMesh tile (map (x,y,z)),mapmesh
            EndIf
   Next : Next : Next
End Function


Resultat im Spiel: Alle Tilemeshes an der gleichen Position, abseits davon nichts.

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Xeres

Moderator

BeitragSo, Apr 25, 2010 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, du musst die Geometrie des Objekts verschieben; Benutze mal PositionMesh statt PositionEntity.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Blitzprogger

BeitragSo, Apr 25, 2010 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Geht leider immernoch nicht. Sad
neuer Code: [AUSKLAPPEN]
Function redomap ()
   If mapmesh <> 0 Then FreeEntity mapmesh
   mapmesh = CreateMesh ()
   For x = 0 To 31
      For y = 0 To 15
         For z = 0 To 31
            If map (x,y,z) > 0 Then
               newmesh = CopyMesh (tile (map (x,y,z)))
               PositionMesh newmesh,x*10,y*10,z*10
               AddMesh newmesh,mapmesh
            EndIf
         Next
      Next
   Next
End Function



Edit:
Falls es euch hilft: Mit 3D Tiles meine ich ein Baukastensystem ähnlich wie in den TrackMania Spielen.
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Blitzprogger

BeitragSo, Apr 25, 2010 17:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Puhh...

Habe es geschafft Very Happy !
Es ging als ich ein Dim Feld erstellte das die Meshes an der gegebenen Positon speichert. Anstatt vorhandene Meshes zu kopieren wird jetzt halt ein paar mal das Mesh aus dem Ordner geladen. Nicht optimal wie ich finde, aber es funktioniert.
Danke für die Hilfe.

mfg
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/

Unfreiwilliger Gewinner des BAC# 115. Wink

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group