2D Starfield in 3D Szene einbauen ?
Übersicht

makaiBetreff: 2D Starfield in 3D Szene einbauen ? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hoffe das ist keine zu einfache bzw dämliche Frage, allerdings habe ich bis jetzt kaum in 2D gearbeitet und mich auch gar nicht damit beschäftigt.
Ich habe einen Starfield Code von Blitzcoder. Meine Frage ist, wie kann ich diesen in meine 3D Szene einbauen ? Ich muss ja irgendwie eine Kamera mit einbauen. Code: [AUSKLAPPEN] Const MAX_STAR=5000,STAR_SPEED=2,WIDTH=640,HEIGHT=480
Dim star_x(MAX_STAR),star_y(MAX_STAR),star_z(MAX_STAR) Global speed Graphics WIDTH,HEIGHT SetBuffer BackBuffer() setup_stars() speed = 1 While Not KeyDown(1) Cls UpdateStar(speed) control() Flip Wend End Function setup_stars() For c=0 To MAX_STAR star_x(c)=Rnd(-(WIDTH/2),(WIDTH/2))Shl 8 star_y(c)=Rnd(-(HEIGHT/2),(HEIGHT/2))Shl 8 star_z(c)=Rnd(STAR_SPEED,255) Next End Function Function UpdateStar(speed) For c=0 To MAX_STAR star_z(c)=star_z(c)-speed;STAR_SPEED If star_z(c)<= speed Then star_z(c)=255 ;STAR_SPEED s_x=(star_x(c)/star_z(c))+(WIDTH/2) s_y=(star_y(c)/star_z(c))+(HEIGHT/2) col=255-star_z(c) Color col,col,col Plot s_x,s_y Next End Function Function control() If KeyDown(200) Then speed = (speed + 1) If KeyDown(208) Then speed = (speed - 1) End Function Ich habe einen Weltraumshooter, möchte aber gerne dazu dieses Starfield haben, dass es sich immer in Richtung Spielerschiff bewegt bzw in Richtung Kamera. Eine weitere Frage: Ich möchte eine Geschäft in meinem Spiel erstellen, wo jede Menge Waren eingetragen werden müssen. Name, Menge, Preis. Eignen sich dazu DimFelder oder besser Types ? Ich möchte per Funktion nachher Waren in dieses Geschäft eintragen. Ich danke euch schonmal herzlichst für eure Mühe, die Frage zu beantworten. |
||
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Graphics3D 1024,768,16,2;WICHTIG Graphics"3D" SetBuffer BackBuffer() camera = CreateCamera() PositionEntity camera,0,0,-5 CameraClsMode camera,0,1;WICHTIG cube = CreateCube() Repeat Cls ;2D Zeug wenn hinter 3D erscheinen soll Color 0,0,255 Oval 400,400,200,200 ;3D Zeug TurnEntity cube,0,1,0 ;3D Zeug Rendern RenderWorld ;2D Zeug wenn vor 3D erscheinen soll Color 255,0,0 Oval 300,300,200,200 Flip Until KeyHit(1) Hier mal ein einfacher beispielcode. Und für das andere gilt folgende Weisheit. Umso Komplexer umso mehr sollten die Types vorgezogen werden. |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
makai |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jo danke, das hilft schonmal etwas. das problem ist nämlich folgendes:
da ich ja auch ne skysphere benutze, werden entweder nur die sterne oder nur die skysphere dargestellt. gibts eine möglichkeit das zu mischen ? also dass ganz aussen die starsphere zusehen ist, dannach dann die bewegten sterne bzw raumpartikel und dann alle anderen 3d objekte ? oder besser noch die bewegten partikel im vordergrund und der rest dahinter, allerdings sichtbar ? |
||
makai |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
weiss darauf vielleicht jemand noch ne antwort ?
oder ist es vielleicht ratsamer das ganze mit nem partikelsystem zu machen ? bei spielen wie freelancer sieht das nach partikel sprites aus !? sorry dass ich so drängen muss, aber ich verreise in kürze und habe dann mind. einen monat kein internet um das forum zu besuchen. vielen dank schonmal für antworten |
||
![]() |
Feldmannu |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mir für mein aktuelles Blitzprojekt eine Funktion geschrieben, die sehr flexibel ein Sternenfeld erzeugt.
Dabei können wahlweise Sprites oder Pixel benutzt , die Bewegungsgeschwindigkeit in allen Richtungen negativ und positiv gesetzt sowie der Mittelpunkt der Bewegung bestimmt werden. Wenn du auf meine Homepage (WWW-Button) gehst und den Quellcode von Spacewars herunterlädst, kannst du mit Include "starfield.bb" die Funktion nutzen. Einen Beispielcode zur Nutzung in 3D habe ich hier gepostet. Das Einzige, was du ändern musst, ist die Zeile "EntityTexture h,LoadTexture(PicPath+"starsprite.jpg",4)" in der Funtion "AddSprStar". Entweder ganz auskommetieren oder durch eine vorhandene Textur ersetzen. Die Globalen und die Konstanten müssen aus dem Beispiel auf jeden Fall übernommen werden! Code: [AUSKLAPPEN] Global width=800 ;Bildschirmbreite Global height=600 ;Bildschirmhöhe Global halfw=400 ;X-Mittelpunkt der Sternenbewegung - hier halbe Bildschirmbreite Global halfh=300 ;Y-Mittelpunkt der Sternenbewegung - hier halbe Bildschirmhöhe Global ScreenScale#=Float(height)/Float(width) ; Const MinSprStarDist=300 ;Minimale Tiefe der Sprites (z) Const MaxSprStarDist=800 ;Maximale Tiefe der Sprites (z) Graphics3D width,height,32,0 cam = CreateCamera() Include "starfield.bb" CreateSprStars(200) ;Sternenfeld mit 200 Sprites erzeugen speed#=0 While Not KeyHit(1) If KeyHit(200) Then ;Arrow Up dy=dy-1 ElseIf KeyHit(208) Then ;Arrow Down dy=dy+1 ElseIf KeyHit(203) Then ;Arrow Left dx=dx-1 ElseIf KeyHit(205) Then ;Arrow Right dx=dx+1 End If MoveStars(dx,dy,speed,halfw,halfh,width,height) ; Sterne bewegen ShowSprStars() ; Sterne anzeigen UpdateWorld() RenderWorld() Flip Wend CleanupStars() End |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group