3D-Space-Game-006.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 Source-Code ist Freeware und darf für den ; privaten Gebrauch frei verwendet werden. ; ;------------------------------------------------------- ; File: 3D-Space-Game-006 ; Date: 25.07.03 ;------------------------------------------------------- ; BB3D: 1.83 ;------------------------------------------------------- ; Mein dank an: Markus und HotBit ;------------------------------------------------------- ; ; Das mit der folgenden Kamera ist nicht ganz einfach. ; Einfach nur hinterher rennen reicht eigentlich nicht. ; Wir binden die Kamera aber erst mal hinter dem Schiff ; fest, und schauen wie es aussieht. Dazu wird das Pro- ; gramm etwas umgestellt. Bei der Erzeugung der Kamera, ; geben wir das Schiff als Parent-Objekt an. Und ver- ; schieben die Kamera-Position etwas hinter das Schiff. ; Damit die Bewegung besser zu sehen ist, erhöhen wir ; die Geschwindigkeit bei "bewege_schiff" nochmal. ; ; ------------------------------------------------------ ; ; 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 ; Ein Objekt, welches mit DOGA L1 erstellt wurde, wird geladen Global schiff=LoadMesh("schiff.x") ; Schiff-Objekt laden PositionEntity schiff,0,0,0 ; Position beliebig ; Danach die Kamera- und Licht-Einstellungen ; Global Cammera=CreateCamera(schiff) ; Ohne Kamera sieht man nichts ; und es wird an das Schiff angebunden CameraRange cammera,1,5000 ; Sichtweite der Kamera anpassen MoveEntity cammera,0,0,-2 ; Da die Kamera mitten im Schiff liegt, ; wird sie etwas nach hinten verschoben. 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 ScaleEntity ball,1000,1000,1000 ; Den Planet vergrößern PositionEntity ball,0,0,2003 ; Und vor die Kamera stellen ; Nun kommt der Main Loop ; Repeat TurnEntity ball,0,.1,0 ; Das Objekt wird bewegt/gedreht bewege_schiff() ; Funktions-aufruf für die Schiffs-bewegung 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() 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 ; ------------------------------------------------------ ; ; Das ist doch schon ganz nett. Experimentiert etwas ; mit den Objekt- Größen und Entfernungen herum. Jetzt ; fällt mir erst auf, daß die Drehrichtung der Tastatur- ; Abfrage falsch ist. Und die Perspektive scheint auch ; etwas krumm zu sein. Das werden wir korrigieren und ; seitliche Drehung hinzufügen. ; -> Weiter mit 3D-Space-Game-007.bb
Created on 20.08.2005 Zurueck