Tunnel

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

blitz

Betreff: Tunnel

BeitragSo, Aug 29, 2004 13:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi an alle!
Hab schon wieder ne Frage:

(Bin durch den WM-Player draufgekommen)

Ich möchte mit Blitz Basic einen Tunnel im Vollbildmodus machen, bei dem man das Gefühl hat, hineingezogen zu werden. Geht das überhaupt.

Bedanke mich wie immer jetzt schon herzlich,
mfg blitz

BladeRunner

Moderator

BeitragSo, Aug 29, 2004 13:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Klar geht das. Setz dich einfach mal ran und wenn es Probleme gibt kannst Du nochmal fragen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

zirri

BeitragSo, Aug 29, 2004 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Ich verstehe das jetzt so das du sowas wie nen Lichtunnel oder wurmloch meinst.
Hier ist mal sonen Quelltext. Vielleicht kannst du ja was damit anfangen. Ist in 3D nartürlich.

Code: [AUSKLAPPEN]
Graphics3D 800, 600, 32, 2
Tex1 = CreateTexture(256, 256)

SetBuffer TextureBuffer(Tex1)

For Zaehler = 1 To 2000
Color Rnd(255), Rnd(255), Rnd(255)
Plot Rnd(255), Rnd(255)
Next

Tex2 = CreateTexture(256, 256)

SetBuffer TextureBuffer(Tex2)

For Zaehler = 1 To 2000
Color 255, 255, 255 
Plot Rnd(255), Rnd(255)
Next

SetBuffer BackBuffer()


Kamera = CreateCamera()
CameraViewport Kamera, 0, 0, 800, 600
CameraClsColor Kamera, 0, 0, 0
CameraRange Kamera, 0.01, 10000
Licht = CreateLight(1, Kamera)
AmbientLight 255, 255, 255
MoveEntity Kamera, 0, 0, -10
CameraZoom Kamera, 1


Cylinder1 = CreateCylinder(80,0)
TurnEntity Cylinder1, 90, 0, 0
ScaleEntity Cylinder1, 1, 10, 1
EntityFX Cylinder1, 16
EntityAlpha Cylinder1, 1

Cylinder2 = CreateCylinder(80,0)
TurnEntity Cylinder2, 90, 0, 0
ScaleEntity Cylinder2, .9, 10, .9
EntityFX Cylinder2, 16
EntityAlpha Cylinder2, .5


EntityTexture Cylinder1, Tex1
EntityTexture Cylinder2, Tex2

While Not KeyHit(1)

u# = u# + .0015
v# = v# + .0015
PositionTexture Tex1, u#, v#
PositionTexture Tex2, u#*2, v#*2

UpdateWorld()
RenderWorld()

Flip()
Wend

EndGraphics()
End()
 

blitz

Betreff: ?

BeitragSo, Aug 29, 2004 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hab leider nur bb2d
und ich hab auch keine ahnung wie ich anfangen soll
ich meine einen tunnel, der gerade in den bildschirm hinein geht,kein
loch, und man soll das gefühl bekommen, dass man hineingezogen wird

sbrog

BeitragSo, Aug 29, 2004 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Das gibts im Robtutorial unter Grafik.
So was meinst du ,stimmts ?

Code: [AUSKLAPPEN]

; Rob´s BB-Kurs 2
; Robert Gerlach 2.2002
;
; DotTunnel
; ----------------------------------------------
; Ein klassischer DotTunnel. Tunnel aus Punkten.




Global width = 640
Global height = 480
mode = 1
Global punkte_in_ring = 20
Global invert = 0 ; Schwarz auf weiß oder weiß auf schwarz.



Graphics width, height, 16, mode
SetBuffer BackBuffer()

If invert = 1 Then
ClsColor 255,255,255
Else
ClsColor 0,0,0
EndIf


Type com
   Field x#
   Field y#
  Field speed#
   Field winkel
End Type
Global dot.com


Global x# = 320
Global y# = 240
Global zeit = MilliSecs()

Global m_winkel#

; Vorberechnete Sinus/Cosinus-Tabellen
Dim sinus#(360)
Dim cosinus#(360)

For i = 0 To 360
sinus#(i) = Sin(i)
cosinus#(i) = Cos(i)
Next





; Die Hauptschleife
Repeat
Cls

If MilliSecs() - zeit >= 100 Then
neuepunkte
zeit = MilliSecs()
EndIf


mittelpunktbewegen
punktebewegen


punktemalen

Flip
Until KeyHit(1)
End





; Den Ausgangspunkt der Einzelpunkte bewegen
Function mittelpunktbewegen()
m_winkel# = m_winkel# + .3
If m_winkel# >= 360 Then m_winkel# = 0

ym_winkel# = m_winkel# * 3
If ym_winkel# > 360 Then ym_winkel# = (m_winkel# * 3 - 360)
x# = (width / 2) - 200 * cosinus#(m_winkel#)
y# = y# + sinus#(ym_winkel#)


End Function







; Einen neuen Punktering erschaffen
Function neuepunkte()
   For i = 1 To punkte_in_ring
      dot.com = New com
      dot\x# = x#
      dot\y# = y#
      dot\winkel = (360 / punkte_in_ring) * i
     dot\speed# = .08
   Next
End Function




; Die Punkte bewegen und am Rand des Screens löschen
Function punktebewegen()
For dot.com = Each com

dot\x# = xbewegen#(dot\x#, dot\winkel, dot\speed#)
dot\y# = ybewegen#(dot\y#, dot\winkel, dot\speed#)
dot\speed# = dot\speed# + .02
If dot\x# < 0 Or dot\x# > width Or dot\y# < 0 Or dot\y# > height Then Delete dot.com

Next

End Function


; Die Punkte zeichnen
Function punktemalen()
For dot.com = Each com
If invert = 0 Then
f = dot\speed# * 50
Else
f = 255 - (dot\speed# * 50)
EndIf
Color f, f, f
Oval dot\x# - dot\speed#, dot\y# - dot\speed#, dot\speed# * 2, dot\speed# * 2
Next
End Function











; Bewegt einen Punkt auf der X-Achse mit der angegebenen Geschwindigkeit
Function xbewegen#(x#,winkel#,speed#)
x2# = x# + Cosinus#(winkel#)*speed#
Return x2#
End Function


; Das gleiche mit der Y-Achse.
Function ybewegen#(y#,winkel#,speed#)
y2# = y# + Sinus#(winkel#)*speed#
Return y2#
End Function



TheProgrammer

BeitragSa, Sep 04, 2004 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey. Cooler Effekt.
Nach ner Zeit kommt dann aber
Array index out of bounds.

Vieleich könnte man den Tunnel noch
"geschlossener" wirken lassen.
aktuelles Projekt: The last day of human being

Bms

BeitragDi, Sep 07, 2004 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
schau doch mal ins codearchiv unter "MoveToPoint mit Effektbsp."

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group