Identität eines kopierten 3D-Objekts (=> Editor)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Dice of Darkness

Betreff: Identität eines kopierten 3D-Objekts (=> Editor)

BeitragFr, Okt 09, 2009 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich programmiere gerade mein erstes 3D-Spiel und bin dabei, mir einen Editor zu basteln, mit dem ich später Objekte beliebig oft kopieren und in die Spielwelt setzen kann.
Angefangen habe ich mit einem Objekt, das ich jetzt per Klick auf [Enter] beliebig oft kopieren, neu positionieren und bewegen können will. Um die geklonten Objekte zu verwalten, nehme ich einen Type:

Code: [AUSKLAPPEN]
Type box
Field number
End Type


Hiermit erstelle ich ein neues Objekt:

Code: [AUSKLAPPEN]
If KeyHit(28) Then
      box.box = New box
      box\number = num
      h = CopyEntity(matchbox)
      PositionEntity h,0,0,num
   EndIf


Die Variable "num" kann ich mit den Tasten 1 und 2 erhöhen bzw. erniedrigen. Damit wähle ich sozusagen aus, welches Objekt ich verändern möchte (denn der Wert von "num" wird in dem Feld "box\number" gespeichert).
Arrow D.h., dass jedes neu erstellte Objekt eine neue Identität bekommt, nämlich den Wert "num". Das Verfielfältigen des Objekts klappt jetzt schon, aber ich habe auch noch eine Routine, die dafür sorgen soll, dass ich das momentan gewählte Objekt bewegen kann:

Code: [AUSKLAPPEN]
For box.box = Each box
      If KeyDown(17) And box\number = num Then
         MoveEntity h,0,0,0.2
      ElseIf KeyDown(31) And box\number = num Then
         MoveEntity h,0,0,-0.2
      EndIf
   Next


Wenn ich also drei neue Objekte erstellt habe, so müssen diese im Feld "box\number" jeweils eine 1,2 oder 3 haben. Wenn ich jetzt den Wert "num" auf 2 setze und "W" drücke (vorwärts bewegen), müsste sich eigentlich das zweite Objekt bewegen, denn es heißt ja "If KeyDown(17) AND box\number = num". Nur bewegt sich jetzt leider immer das zuletzt erstellte Objekt, egal was ich für "num" für einen Wert wähle...

Mache ich irgend einen grundsätzlichen Fehler, d.h. muss ich die Identität jedes kopierten Objekts anders festlegen und abfragen?

Vielen Dank schonmal im Voraus,

Dice Of Darkness
Gratis Spiele, Musik, Tools

Tankbuster

BeitragFr, Okt 09, 2009 14:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
For box.box = Each box
If KeyDown(17) And box\number = num Then
MoveEntity h,0,0,0.2
ElseIf KeyDown(31) And box\number = num Then
MoveEntity h,0,0,-0.2
EndIf
Next


Was ist h?

h ist immer das zuletzt erstellte Objekt. Wink
Also wird nur das sich bewegen.

Du solltest jedes Objekt mit im Type speichern.
Also so:

Zitat:
Type box
Field number
Field mdl
End Type


Dann natürlich
Code: [AUSKLAPPEN]
If KeyHit(28) Then
      box.box = New box
      box\number = num
      box\mdl = CopyEntity(matchbox)
      PositionEntity box\mdl,0,0,num
   EndIf


usw....




Ich hoffe ich konnte behilflich sein Wink

Dice of Darkness

Betreff: DANKE!

BeitragFr, Okt 09, 2009 14:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, super jetzt klappt es einwandfrei!

Ich hatte mir schon gedacht, dass es daran liegen würde, und ich möchte meinen, ich hatte das mit dem zweiten Feld bereits schon ausprobiert und es hatte damals nicht geklappt... Naja jetzt klappt es ja^^! Danke vielmals!
Gratis Spiele, Musik, Tools

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group