problem mit ball zeichnen
Übersicht

ToudyBetreff: problem mit ball zeichnen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute,
spiel grad ein bisschen mit einfacher ballphysik rum. Hab damit nur ein Problem. Wenn der ball gegen den rechten bildschirmrand hüpft soll er einfach abprallen und in die andere Richtung weiterhüpfen. Wenn er nun abprallt wird der Ball plötzlich 200 Pixel zu weit links gezeichnet und hüpft ab dort ganz normal weiter. Code: [AUSKLAPPEN] Global xmax=1024, ymax=600 Graphics xmax, ymax, 32, 2 SetBuffer BackBuffer() Global frametimer=CreateTimer(100) SeedRnd MilliSecs() Global start = 100 ;Anfang des hüpfens Global t# = 0.1 ;Zeit für die Formel Global winkel = 45 Global speed# = 60 Global way ;weg Global boden = LoadImage("Floor.bmp") MidHandle boden Global ball = LoadImage("Kugel.bmp") MidHandle ball Global kugelXpos# = 120, kugelYpos# = ymax-30 Repeat WaitTimer (frametimer) Cls DrawImage boden, 40, ymax-10 ;Boden zeichnen For i=1 To 13 DrawImage boden, i*80+40, ymax-10 ;Kugel zeichnen Next DrawImage ball, kugelXpos#, kugelYpos# way = (speed# * t# * Cos(winkel)) ;Berechnung der Wurfparabel(X-Komponente) kugelXpos# = start+way kugelYpos# = ballheight#-(speed# * t# * Sin(winkel) - 0.5 * 10 * (t# * t#)) ;Berechnung der Wurfparabel(Y-komponente) t# = t# + 0.1 ;ablaufgeschwindigkeit wählen Text 50, 100, "Kugel X: " + kugelXpos# + " Y: " + kugelYpos# Text 50, 150, "Winkel: " + winkel Text 50, 200, "Start " + start If kugelYpos#>570 Then ;Wenn kugel Boden berührt t# = 0.1 ;Funktion von vorne Berechnen start = kugelXpos# ;Aufprallpunkt der Kugel speichern EndIf If kugelXpos#>xmax Then ;Wenn Kugel rechte seite berührt WaitKey() winkel = 180-winkel ;Einfallswinkel gleich ausfallswinkel way = way * (-1) ;Richtung umkehren start = kugelXpos# EndIf Flip Until KeyHit(1) End meine frage ist jetzt: Warum macht er nicht am bildschirmrand (Also bei x=1024) mit der berechnung der kugelbahn weiter, sonder so bei etwa x=800? Vielleicht könnt ihr mir ja helfen. ICh seh den Fehler einfach nicht. P.S: Sorry für die schlechte formatierung, is schon spät ![]() |
||
![]() |
Mr.HydeNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was ich jetzt nur auf den ersten Blick sehe ist, dass du way=... zweimal berechnest. Das zweite mal gibt den nötigen Umkerwert aus, aber ich glaube dahin kommt es gar nicht, da vorher durch das erste die Kugel versetzt wird. | ||
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen |
Toudy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@mr Hyde:
Danke für die Antwort. Aber dahin kommt es schon, wenn der ball den rechten bildschirmrand berührt hüpft er ja in die andere Richtung weiter, nur eben um etwa 200 pixel nach links versetz, anstatt am bildschirmrand weiterzumachen. |
||
Holloway |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also dein way=way * (-1) is iwie wirklich sinnlos, weil beim naechsten schleifendurchlauf wird der wert wieder mit der Berechnung der X-Komponente ueberschrieben und du hast den wert davor nicht benutzt
und die verschiebung kommt glaub ich wegen dem kugelXpos# = start+way wenn du die wayberechnung ma mitn paar werten durchrechnest z.b. speed = 60 time = 2 winkel = 135 (war voher z.b. 45) dann biste schon bei ca. -85 und da ich denke das time noch viel hoeher is dann kommt das mit den 200 schon hin ; ) gruss |
||
Stay Heavy |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group