SchwerkraftPhysik[2D] - raff ich net
Übersicht

![]() |
ToeBBetreff: SchwerkraftPhysik[2D] - raff ich net |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich will sowas wie einen kleinen Schooter bauen. Und zawr hat man eine Feststehende "Festung" mit Kanone und muss den Feind besiegen.
So, jetzt will ich aber so machen ( um den Schwirigkeitslevel zu ehöhen) dass der schuss so eine Schöne Kurve Fliegt, dass heißt beim Abschuss ist die geschindigkeit sagen wir mal 2Pixel pro Schleifendurchgang, der Winkel beträgt 200°Also Zeigt ungefär in die RechteObereHälfte. so jetzt soll die geschwindigkeit um 0.001 abnehmen (hab ich schon) und die "Schwerkraft" soll das geschoss "erfassen" sprich der winkel soll sich neigen. das hab ich aba auch schon aber der winkel neigt sich immer gleich ![]() hier mal der Code für das geschütz : Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Type s Field x#,y#,w#,speed#,g# End Type Global s.s Global Max_y = 200 Repeat Text 1,1,w mx = MouseX():my = MouseY() w = (-ATan2(mx-200,my-200)+360) Mod 360 If MouseDown(1) Then CreateS(200+Sin(-w)*50,200+Cos(-w)*50,-w,2,0.9) Line 200,200,200+Sin(w)*50,200+Cos(w)*50 UpdateS() Flip Cls Until KeyHit(1) End Function CreateS(x#,y#,w#,speed#,g#) s.s = New s s\x = x s\y = y s\w = w s\g = g s\speed = speed End Function Function UpdateS() For s.s = Each s s\x = s\x + Sin(s\w) * s\speed s\y = s\y + Cos(s\w) * s\speed If s\w < 360 Then s\w = s\w - s\g Line s\x,s\y,s\x+Sin(s\w)*10,s\y+Cos(s\w)*10 If s\y > Max_y Then Delete s.s Next End Function thx und mfg Crack93 ![]() |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Google mal nach Wurfparabel. | ||
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 |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weis net in welcher Klasse du bist, aber wenn du etwas in Physik aufgepasst hast, solltest du das eigentlich wissen ![]() Wurfparabel gibts mit und ohne Luftwiederstand ![]() http://de.wikipedia.org/wiki/Wurfparabel |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also Schwerkraft ist nur, dass etwas mit (auf der Erde) 9,81m/s² nach unten beschleunigt wird ("nach unten" im Spiel, genauer gesagt, wird man zum Erdmittelpunkt hin beschleunigt^^). Also musst du nichts weiter tun, als die vertikale Geschwindigkeit vy#=vy+a_erde rechnen. Für a sind 9.81 ein bisschen viel... musst selber herausfinden wie es dir am besten gefällt.
Luftwiderstand ist so ne Sache.... Wenn du den unbedingt dabeihaben willst, würd ich es auch faken mit vx=vx-a_luft. Alles andere ist ein wenig zu kompliziert. (Integration,cw-Werte,...) |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke ich hab mal mit meine Vater darüber gesprochen und der hat mia dann ne Formel gegeben.
Zitat: y = x*tan(w)-(g/(2*v²*Cos(w)2))*x²
Ich hab dass mal versucht in BB mit den Variablen umzusetzten : Code: [AUSKLAPPEN] Function UpdateS()
For s.s = Each s s\x = s\x + s\speed s\y = (x*Tan(s\w))-(grav/(2*(s\speed*s\speed)*(Cos(s\w)*Cos(s\w))))*(x*x) Oval s\x,s\y,5,5 Next End Function Dass klappt aber nicht so ganz.... könnt ihr mia helfen ? thx und mfg Crack93 ![]() P.s. : Ich bin in der 7ten klasse (Komm jetzt in die 8te) und hab 1 1/2 jahre kein Physik mehr gehabt und als ich das noch hatte haben wir nichts mit gravitation o.ä. durchgenommen ![]() |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
hier mal meine funktion, is genau das gleiche ![]() Is allerdings jetzt für 3d, sollte aber am prinzip nix ändern ![]() Code: [AUSKLAPPEN] schuss\x0#=schuss\x0#+schuss\v0#*framespeed#
tempy#=-(0.0981/(2*schuss\v0#^2*Cos(schuss\alpha#)^2))*schuss\x0#^2+Tan(schuss\alpha#)*schuss\x0# bei dir könnte es daran liegen das du nur "x" schreibst und nich s\x ![]() |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo danke für die Formel, sieht schonmal ganz gut aus... aber dann ist die ganze yPos im Ar**h !
Code: [AUSKLAPPEN] Function UpdateS()
For s.s = Each s s\x = s\x + s\speed s\y#=(grav/(2*s\speed#^2*Cos(s\w)^2))*s\x#^2+Tan(s\w)*s\x Oval s\x,s\y,5,5 Next End Function da macht der die y position irgentwie nicht so wie die sein soll ![]() thx und mfg Crack93 ![]() |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab meinen Vorschlag gemacht. Wenn er dich nicht interessiert, ist das dein Problem... | ||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab das so noch gemacht:
Code: [AUSKLAPPEN] PositionEntity schuss\mesh,EntityX(schuss\mesh),schuss\y0+tempy#,EntityZ(schuss\mesh)
das schuss\y0 is dann quasi die starty-position die du noch beim erstellen des schusses mit übergebund musst. wenn du jetzt nur die erste formel genutzt hast is das klar das das y "falsch" dargestellt wird. da ja das y dann nur die veränderung wiedergibt. ![]() |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
jo dankee ![]() @Eingeproggt: Ja Hat mich interressiert, aber diese lösung hatte ich auch schon vorher und es ist keine WurfFunction (sieht nicht so aus wie ein Wurf) ![]() thx und mfg Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ähm, ja Leute. Wurfparabel ist zwar richtig, wenn es um die Berechnung von Flugkörpern geht, hat aber in der Spieleentwicklung nichts zu suchen. Wenn jedes Spiel seine Flugkörper über solche Formeln berechnen würde, so würde jedes dieser Spiele ganz schön zum ruckeln kommen können.
Ich will das mal so ausdrücken. Die Formel der Wurfparabel kann man nutzen, wenn man den Zeitpunkt beliebig setzen will um dann die Position eines Körpers auszurechnen. Da ein Spiel aber in seiner Zeit Linear berechnet wird. Also nicht mal in der Zukunft dann in der Vergangenheit um dann wieder in der Gegenwart ewas auszurechnen, ist diese ganze Formel quatsch für ein Spiel. Man nehme eine Positionsvariable, bei 3D geht auch EntityX/Y/Z und eine Geschwindigkeitsvariable. Die Geschwindigketisvariable kann nicht durch etwas anderes wie bei der Position ersetzt werden. Setzt man nun ein Geschwindigkeitsvektor bei Abschuss fest, dann fliegt das Ding schon ganz automatisch in der vorgegebenen Richtung. Wird nun die Y-Geschwindigkeitsvariable ständig veringert, so hat man bereits eine Schwerkraft erzeugt. Die Zahl von 9,81 hat auch hier nichts zu suchen, da zum einen die Grössenverhältbnisse im Spiel meisten nicht der Realität übereinstimmen, aber auch eine absolut realistische Bewegung in den meisten Fällen zu schnell wäre. Will man nun noch ein Luftwiederstand, so teilt man alls Geschwindigkeitsvariablen durch eine kleine Zahl die aber größer als 1 ist. Besser ist hier *.995 oder so, da Multiplikation schneller berechnet werden, aber letztendlich das gleiche tun kann. Funktionen wie Sin/Cos oder gar Tan haben nur bei der Erstellung eines neuen Flugkörpers was zu suchen und nicht mehr bei der Flugbahn selbst. Der einzige Grund, warum man tatsächlich eine Wurfparabel im Spiel nutzen könnte, ist die, wenn eine KI mit Projektilen schiessen muss. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
@hectic :
Danke ! ![]() Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Type s Field x#,y#,w#,sx#,sy# End Type Type k Field x,y,w End Type Global s.s Global k.k Global Max_y = 200 Global grav# = 0.01 Global mx,my Global Kanonen_img = LoadAnimImage("gfx\Kanone 1.bmp",10,100,0,2) MaskImage Kanonen_img,255,0,255 MidHandle Kanonen_img Global G = LoadImage("gfx\Gehäuse.bmp") MaskImage G,255,0,255 MidHandle G Dim KAN(360) For i = 0 To 360 KAN(i) = CopyImage(Kanonen_img) RotateImage(KAN(i),i) Next k.k = New k k\x = 200 k\y = 200 k\w = 0 Repeat Text 1,1,w mx = MouseX():my = MouseY() Update() Flip Cls Until KeyHit(1) End Function CreateS(x#,y#,w#,speed#,sy#) s.s = New s s\x = x s\y = y s\w = w s\sx= speed s\sy = sy End Function Function Update() For k.k = Each k k\w = (-ATan2(mx-k\x,my-k\y)+360) Mod 360 If MouseDown(1) Then DrawImage KAN(k\w),k\x,k\y,1 CreateS(k\x+Sin(-k\w)*50,k\y+Cos(-k\w)*50,-k\w,2,2) Else DrawImage KAN(k\w),k\x,k\y,0 EndIf DrawImage G,k\x,k\y Next For s.s = Each s s\sy = s\sy - grav s\x = s\x + Sin(s\w) * s\sx s\y = s\y + Cos(s\w) * s\sy Oval s\x,s\y,5,5 Next End Function Danke und mfg ![]() Crack93 |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group