3D-Space-Game-005.bb
;------------------------------------------------------- ; ; 3D Space Game Tutorial ; ; (C) by Turgut Frank Temucin alias TFT ; ; Alle Rechte verbleiben beim Autor. Die Veröffentlich- ; ung außerhalb des BlitzForums ist nur mit Genehmigung ; gestattet. Der Sorce-Code ist Freeware und darf für den ; privaten Gebrauch frei verwendet werden. ; ;------------------------------------------------------- ; File: 3D-Space-Game-005 ; Date: 25.07.03 ;------------------------------------------------------- ; BB3D: 1.83 ;------------------------------------------------------- ; Mein dank an: Markus und HotBit ;------------------------------------------------------- ; ; Wie ihr bei Teil 004 sicher mitbekommen habt, ist das ; Größenverhältnis alles andere als korrekt. Daher ; werden wir als nächstes dem Ganzen etwas Größe ver- ; leihen. Dazu werden wir mit den Befehlen ScaleEntity ; und PositionEntity den Objekten die richtige Größe ; geben. ; Damit die neuen Code-Teile besser zu finden sind, ; werden diese nun mit "******" eingerahmt. Hier ein Dank ; an Markus für die Idee. ; ------------------------------------------------------ ; ; Als erstes werden ein paar Konstanten definiert. Diese ; sind unveränderbar und immer Global. Const screen_x=640 Const screen_y=480 Const screen_m=2 ; Bildschirm Modus ; 2=Fenster 1=Fullscreen Const screen_t=16; 16 Bit oder 32 Bit Bildschirm ; Dann wird der Bildschirm geöffnet ; Graphics3D screen_x,screen_y,screen_t,screen_m ; Den Bildschirm öffnen SetBuffer BackBuffer() ; das DoubleBuffering aktivieren ; Danach die Kamera- und Licht-Einstellungen ; Global Cammera=CreateCamera() ; Ohne Kamera sieht man nichts Global licht=CreateLight(1) ; Für das richtige Ambiente muß eine ordentliche ; Lichtquelle her. RotateEntity licht,0,90,0 ; Das Licht kommt von rechts ; Jetzt wird ein Objekt erzeugt und positioniert ; Global ball=CreateSphere(12) ; Eine Kugel erstellen Global tex=LoadTexture("welt.jpg") ; Die Welt-Textur laden EntityTexture ball,tex ; und dem Objekt zuweisen ;********* ; ; um die Größe eines Objektes zu ändern, benutzt man am besten ; den ScaleEntity Befehl ; ScaleEntity ball,1000,1000,1000 ; Die Ursprungsgröße wird in alle Richtungen um den Faktor 1000 ; vergrößert. ; Und die Position um den doppelten Faktor nach vorne verschoben. ; Zusätzlich müssen wir CameraRange anpassen. Weil wir sonst ; das Objekt gar nicht mehr sehen können. Das liegt daran, das Standard- ; mäßig CameraRange auf 1-1000 eingestellt ist. ; PositionEntity ball,0,0,2003 ; Und vor die Kamera stellen CameraRange cammera,1,5000 ; Sichtweite der Kamera anpassen ; Dieser Befehl wird später bei den Kamera- und Licht-Einstellungen eingeordnet ; Da die Entfernungen jetzt auch größer sind, müssen wir auch die Geschwindigkeit ; des Schiffes erhöhen. Das machen wir in der Funktion "bewege_schiff" ;********* ; Ein Objekt das mit DOGA L1 erstellt wurde, wird geladen Global schiff=LoadMesh("schiff.x") PositionEntity schiff,0,-.5,2 ; Nun kommt der Main Loop ; Repeat TurnEntity ball,0,.1,0 ; Das Objekt wird bewegt/gedreht bewege_schiff() ; Funktions-aufruf für die Schiffsbewegung RenderWorld ; Bild berechnen und zeichnen Flip 1 ; Seite wechseln Until KeyHit(1) ; Abrechen, wenn ESC gedrückt ; Und zum Schluß das Ende ; End ; Alles beenden Function bewege_schiff() ;******* ; ; Dazu führen wir eine lokale Variable ein, welche die maximale Geschwindigkeit ; enthält. Diese ist vom Type Flieskomma. Da wir ja nicht nur Integer-Geschwindigkeiten ; haben können. ; Local MSF#=.1 ;******* If KeyDown(200) ; Taste Pfeil auf TurnEntity schiff,.2,0,0 Else If KeyDown(208) ; Taste Pfeil ab TurnEntity schiff,-.2,0,0 Else If KeyDown(205) ; Taste rechts TurnEntity schiff,0,.2,0 Else If KeyDown(203) ; Taste links TurnEntity schiff,0,-.2,0 EndIf If KeyDown(17) ; Taste W MoveEntity schiff,0,0,MSF Else If KeyDown(31) ; Taste S MoveEntity schiff,0,0,-MSF EndIf End Function ; ------------------------------------------------------ ; ; OK...... soweit so gut. Das Schiff bewegt sich und der ; Planet ist in ausreichender Entfernung. Beim Experi- ; mentieren fällt auf, daß das Schiff aus dem Sichtbe- ; reich verschwindet. Also sollte die Kamera dem Schiff ; folgen. Damit wir genau sehen können, wo es ist. ; -> Weiter mit 3D-Space-Game-006.bb
Created on 20.08.2005 Zurueck