jump problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Lars

Betreff: jump problem

BeitragMi, Jan 27, 2010 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich habe ein Problem in einem 2D jump and rund Projekt mit dem Springen.
ich weiß ,dass es dazu schon recht viele Themen gibt, die ich mir auch schon durchgelesen habe.
Trotzdem beckomme ich es nicht hin.

Code: [AUSKLAPPEN]
If collision = 1

         speed=10

         Repeat

         figurys=figurys-speed

         speed=speed- 0.1

         figury=figurys

         Until speed = 0

         collision = 0

             
         
         EndIf


Was ist daran falsch?
Wenn die Spielfigur collidiert bleibt sie einfach nur stehen.

Danke schon mal im Vorraus

Mfg

Lars

Xeres

Moderator

BeitragMi, Jan 27, 2010 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Schleife ist dabei schon mal ein falscher Ansatz; Du möchtest ja eine Veränderung sehen, d.h. das Programm soll ansonsten fortschreiten und die Grafik anzeigen.
Da musst du Variablen verwenden, die den Status von der Sprung Sequenz angeben.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragMi, Jan 27, 2010 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, wie Xeres schon schreibt:

Eine zweite Repeat/Until-Schleife in deinem Spiel stört den gesamten Spielablauf. Bei einer Kollision setzt Du eine sog. Flag Collisions%=1. Das ist eine Variable, die im Hauptprogramm abgefragt werden kann, so dass dort Reaktionen darauf möglich sind. Umzunächst mal bei Deinem Code zu bleiben:

BlitzBasic: [AUSKLAPPEN]
If Collision = 1
If Speed=0 Then
Speed=10
EndIf
FigurYs = FigurYs - Speed
Speed = Speed- 0.1
FigurY=FigurYs
If Speed<0 Then
Collision=0
Speed=0
EndIf
EndIf

Und das müsste man jetzt immer von der Main-Schleife aus aufrufen.

Allerdings hast Du in deinem Code noch einen Fehler If Speed=0 Then wird so nicht klappen, weil eine Float-Variable Speed# nach einigen Berechnungen nie wirklich exakt 0 sein wird. Besser verwendest Du If Speed<0 Then.

Außerdem bezweifle ich, dass die Verwendung von FigurY=FigurYs sinnvoll ist. Was bezweckst du damit. Das ist irgendwie doppelt gemoppelt. Müsste es nicht einfach so FigurY=FigurY-Speed heissen? Mir kommt es so vor als soll FigurYs nochmal eine Geschwindigkeit sein, oder?

Und noch eine Frage: Müsste bei der Kollision die Figur nicht eigentlich sofort stehenbleiben? Womit kollidiert die denn da?
 

Lars

BeitragMi, Jan 27, 2010 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke das hat mein Problem gelöst. Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group