Problem mit Cameraprojekt + Text(gelöst)

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Michi

Betreff: Problem mit Cameraprojekt + Text(gelöst)

BeitragDo, Nov 11, 2004 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Problem ist folgendes:
Bei meinem Spiel soll an den Planeten/Monden der Name stehen, damit man den Überblick behält. Nun ist aber so, das immer am aktuell Planeten/Mond im Programmablauf, der gerade sichtbar ist, nicht nur der Name, sondern auch noch viel mehr darüber steht.
Kann mir mal einer sagen, was da nicht funzt???
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung
  • Zuletzt bearbeitet von Michi am Fr, Nov 12, 2004 15:23, insgesamt einmal bearbeitet
 

Edlothiol

BeitragDo, Nov 11, 2004 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei den genauen Informationen sicher...

Es wäre sehr hilfreich, wenn du das Problem etwas genauer beschreiben würdest und die relevanten Codeteile posten würdest Rolling Eyes
 

Michi

BeitragDo, Nov 11, 2004 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, nochmal:
Es gibt augendblicklich 43 Monde und Planeten, die sich umkreisen. An jedem soll sein Name stehen, an der Erde soll also "Erde" stehen, am Mars "Mars" usw. Das habe ich so erreicht:
Code: [AUSKLAPPEN]

...
Repeat
...
KolErde=EntityDistance(schiff, Erde)
...
If KolErde<1500 Then CameraProject c, EntityX(Erde), EntityY(Erde), EntityZ(Erde)
If ProjectedZ()<>0 Then Text ProjectedX(), ProjectedY(), "Erde"
...
Flip
Until Keyhit(1)
...

Dieser Code steht halt besagte 43 mal hintereinander, nur die Namen sind halt immer anders. Das funzt auch gröstenteils. Nur:
Der Code oben wird ja nacheinander für alle Monde und Planeten durchgeführt. Es sind ja nicht alle gleichzeitig sichtbar. Nehmen wir mal an, alle Monde, die im Code nach dem Mond "Sinope" kommen, sind außer Kamerareichweite. Dann geschieht folgendes Phänomän: Bei Sinope steht nicht Sinope, sondern ganz viele Schriftzüge übereinander.

Ich hoffe, du/ihr versteht mich jetzt.
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung
 

Ava

Gast

BeitragDo, Nov 11, 2004 22:12
Antworten mit Zitat
Michi hat Folgendes geschrieben:
Dieser Code steht halt besagte 43 mal hintereinander, nur die Namen sind halt immer anders..


Oh mein Gott, das ist nicht Dein Ernst oder?! Also sollange Du diesen beinahe 100 Zeilen Code nicht in weniger als 5 Zeilen packst, helfe ich Dir auch nicht bei Deinem Problem! Das ist eine rein erzieherische Maßnahme! *g* Wink

[/edit]
Stichwort: Types oder Dim-Felder.

Das könnte dann in etwas so aussehen:
Code: [AUSKLAPPEN]
for planet.t_planet = each t_planet
if entityDistance(entity, planet\entity) < maxDistance# then *blablup*
next t_planet

Nicht mal fünf Zeilen... Rolling Eyes
 

Michi

BeitragDo, Nov 11, 2004 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Oh mein Gott, das ist nicht Dein Ernst oder?! Also sollange Du diesen beinahe 100 Zeilen Code nicht in weniger als 5 Zeilen packst, helfe ich Dir auch nicht bei Deinem Problem! Das ist eine rein erzieherische Maßnahme! *g*

Es sind 129 Zeilen (Absätze zwischen den einzelnen Blöcken)
Aber is Ok, wollte ich sowieso umstellen, nachdem dieses Problem hier gelöst ist. Werde ich morgen machen, versprochen, ehrlich Mama *g*
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung
 

Ava

Gast

BeitragDo, Nov 11, 2004 23:48
Antworten mit Zitat
So ist brav! *g*

Na gut, und zu Deinem ProbleM: eine Spontanidee wäre z.b. Du könntest vielleicht ein entityVisible() für Camera und Zielplanet aufrufen, wobei Planeten generell als "Sichtblock" gelten. Dann könntest Du anschliessend nur Planetennamen anzeigen die:

1) in einer bestimmten Reichweite sind
2) im Camerasichtfeld und von keinem anderen Planeten verdeckt werden

Hilft Dir das weiter?

Lieben Gruss
+ Mama Ava +
Razz *kicher*

D2006

Administrator

BeitragFr, Nov 12, 2004 0:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Michi hat Folgendes geschrieben:
Code: [AUSKLAPPEN]

...
Repeat
...
KolErde=EntityDistance(schiff, Erde)
...
If KolErde<1500 Then CameraProject c, EntityX(Erde), EntityY(Erde), EntityZ(Erde)
If ProjectedZ()<>0 Then Text ProjectedX(), ProjectedY(), "Erde"
...
Flip
Until Keyhit(1)
...


Folgendes:
Du musst die Bedingungen mehr ausreizen. Zum Beispiel wird verhindert, dass wenn der Planet weiter als 1500 LE entfernt ist, dass CameraProject ausgeführt wird. Du musst allerdings auch den Textbefehl verhindern. Sonst nimmt er die Koordinaten vom letzten CameraProject und dadurch kommen dann einem Mond sehr viele Schriftzüge.

Des weiteren könntest du, bevor du den Text schreibst, überhaupt ersteinmal überprüfen, ob die 2D Koordinaten im Bildschirm liegen.

Das wäre erstmal alles, was mir an dem Code auffällt.

Ich hoffe es hilft.

MfG
D2006
 

Michi

BeitragFr, Nov 12, 2004 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx, und WIE das hilft!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Das ist der Fehler!!!
Danke an D2006 und "Mama" Ava *g*
damit wäre das geklärt.

PS: Da hätte ich auch selbst draufkommen können Rolling Eyes
Aber..Wozu soll er gut sein???
IBM-Ingeneur über die Idee des Mikroprozessors, 1968
Code: [AUSKLAPPEN]

   __
<_/__\_> <--- die Wayne-Zeichnung

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group