Frameunabhängiges Prog. + Animationen unmöglich?

Übersicht BlitzBasic Blitz3D

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Black Spider

BeitragSo, Jan 15, 2006 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
rendertweening is ganz einfach, wenn man weis wie!
also, du setzt eine globale Variable, die die Bilder pro sekunde sein soll (60 oder 90 sind optima, ich hab nen älteren rechner, deshalb 60)
BlitzBasic: [AUSKLAPPEN]
Global bps = 60          ;Bilder pro Sekunde

nun sind weitere Variablen gefragt, wie z.B. wie regelmässig wird das Bild erneuert etc.
BlitzBasic: [AUSKLAPPEN]
;--- BPS ---
BildPeriode = 1000 / BPS
Bildzeit = MilliSecs() - BildPeriode

so. nun zur schleife:
BlitzBasic: [AUSKLAPPEN]
While Not(Ende=1)
;____________________________________

; BPS
Repeat
BildAus = MilliSecs() - BildZeit
Until BildAus

BildTicks = BildAus / BildPeriode

; tween
BIldTween# = Float( Bildaus Mod BildPeriode) / Float(BildPeriode)

;- Bildupdate -
For BildLimit = 1 To BildTicks

If BlidLimit = BlidTicks Then CaptureWorld
BildZeit = BildZeit + BildPeriode


UpdateWorld

Next

RenderWorld Bildtween
Flip Flase
Wend
End

da wir jetzt mit festgelegten frames arbeiten, muss FLip False (=0) gesetzt werden, damit es auf jedem Rechner mit der gleichen FPS Zahl abläuft.
Und wenn du ein SlowMove machen willst, dann kannst du die schleife abbrechen,
FPS (hier variable bps) runtersetzen, Variablen erneuern,
Schleife wieder Starten,
hinterher Schleife nocheinmal abbrechen, und FPS wieder auf ursprung hochsetzen Variablen Updaten
und Schleife neu Durchstarten. Dass sieht sehr geil aus.

Ich hoffe ich konnt´ helfen. bei mir kommen da dann übrigens keine Ränder.
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif
 

horstböhse

BeitragMo, Apr 10, 2006 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich bins nochmal!!

Also, ich habe jetzt die aktuelle Version, aber es funktioniert immer noch nicht!!

ZB. zieht bei meinem Spiel der Gleiter eine Wasserspur hinter sich her.
Dies passiert, indem in jedem Spielschleifendurchlauf ein Sprite am Ort des Gleiters erzeugt wird, welches dann mit der Zeit an alpha verliert!!

Die Position des Gleiters und die der Spurspitze driften jedoch bei Bewegung auseinander. Das sieht dann so aus:
http://www.dmgames.de/Datenaustausch/Spur.JPG

Hier der Quellcode der Spurfunktion. Sie wird jede Schleife einmal aufgerufen:

BlitzBasic: [AUSKLAPPEN]



RingSprite=LoadSprite("Grafik\Welle.png")
HideEntity(RingSprite)

Function Spur_UpdWellen()

;Wellen Updaten
For Welle.Spur_Wellen=Each Spur_Wellen
Welle\Alpha=Welle\Alpha-0.005
If Welle\Alpha<0 Then
FreeEntity Welle\Sprt
Delete Welle
Else
Welle\Size=Welle\Size+0.2
ScaleSprite Welle\Sprt,Welle\Size,Welle\Size
EntityAlpha Welle\Sprt,Welle\Alpha
End If

anzahl=anzahl+1
Next

;Neue Wellen
For Spieler.SpielerListe=Each SpielerListe

Welle.Spur_Wellen=New Spur_Wellen
Welle\Sprt=CopyEntity(RingSprite)
ShowEntity(Welle\Sprt)
Welle\Size=1
Welle\Alpha=Spieler\V/400.0;+0.01
EntityAlpha(Welle\Sprt,Welle\Alpha)
PositionEntity Welle\Sprt,spieler\x,spieler\y,Z_Spur

Next

Return anzahl

End Function


Danke

Markus2

BeitragMo, Apr 10, 2006 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Vieleicht so ?

PositionEntity Welle\Sprt,spieler\x,spieler\y,spieler\z-Z_Spur
 

horstböhse

BeitragMo, Apr 10, 2006 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal!!

Ich verstehe leider nicht ganz, was das bringen soll, da das Problem ja nicht in der Z-Komponente liegt!
Ausprobieren kann ich es nicht, da es gar keine z-Komponente in der spieler-Struktur gibt, da sie nicht notwendig ist.
Die Variable Z_Spur wird im Quellcode mit einem Wert besetzt, der sich dann während des Spiels nicht ändert!

Aber ich bin trotzdem dankbar für jede Antwort, will doch nur, dass Render-Tweening richtig funzt!! Sad

Markus2

BeitragDi, Apr 11, 2006 9:32
Antworten mit Zitat
Benutzer-Profile anzeigen
@horstböhse

Benutzt du die Kamera von Vorne statt von Oben !?
Sieht mir danach aus wenn du Z nicht benutzt bei der Bewegung .

Hast du die Struktur mal mit dem Wert des SpielerEntitys verglichen ?
Da steht zwar Abweichung im Sceenshot aber ich weiß ja nicht
was der bedeutet .
 

horstböhse

BeitragDi, Apr 11, 2006 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, genau! Das ganze wird ja ein 2D-Spiel auf 3D-Basis, und da habe ich gewohnterweise X-Y benutzt!!

Die 3 Werte "Positionsabweichung" im Screenshot haben damit nichts zu tun!

Wenn ich das richtig verstehe, wird ja bei Rendertweening interpoliert.
Tut BB das auch bei PositionEntity oder nur bei Moveentity?

Es wird in dem Code ja am anfang ein Sprite bei 0,0 erstellt, welches dann immer kopiert wird und mit PositionEntity an die Position des Gleiters gesetzt wird! Liegt da vielleicht der Grund?
Aber der Ring ist dem Gleiter umso weiter voraus, umso schneller er ist.

Außerdem pulsiert der Alphawert so komisch!
 

horstböhse

BeitragDi, Apr 11, 2006 18:11
Antworten mit Zitat
Benutzer-Profile anzeigen
ach ja, die Strukurwerte und die Entitywerte stimmen überein!

Markus2

BeitragDi, Apr 11, 2006 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst ja mal ausprobieren was passiert
wenn du die Welle vorher noch die letzte Position des Gleiters gibst
und dann die du ausgelesen hasst ob BB das dann genau wie
den Gleiter Interpoliert .

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group