VB 2008 Ball über eine Schräge rollen lassen

Taquar

Grünschnabel
Ich möchte mir ein 2D Golfspiel programmieren....
Eigendlich geht ja alles:
Ball flug mit Berechnung der Schwerkraft und Bodeneigenschften (Gras, Sand und Stein)
Abprallen an geraden sowie schiefen Hindernissen mit Flugbahn änderung.

nur...

Wenn der ball ausrollt und dann eine Schräge runterrollen soll... fängt der ball an zu hüpfen... Das Problem sobald sich der bBll etwas nach unten Bewegt greift sofort die abprall Berechnung für die schrägen Hindernisse.
Jetzt muss ich eine neue Berechnung für eben diesen fall schreiben.
Kann mir vielleicht jemand Erklären oder Zeigen wie ich den Code schreiben muss um ein Rollen auf einer Schräge zu realisieren?


Ich danke im Voraus...;)
 
Zuletzt bearbeitet:

Spyke

Premium-User
da bisher keiner geantwortet hat will ich es mal versuchen.
Jedoch ohne Code (und Screenshot) fälts mir schwer.

Ich würde ja Behaupten das ich eine Maxmimalkraft habe wie hoch der Ball hüpfen kann, diese Maxmimalkraft verringert sich mit jedem Hüpfer.
Bis diese letztendlich 0 ist und der Ball nur noch rollt oder liegen bleibt.

Die großen groben Variablen wären:
x-Bewegungsrichtung
y-Bewegungsrichtung

x-Geschwindigkeit
y-Geschwindigkeit

x-Aktuelle Position
y-Aktuelle Position

Hab aber nicht wirklich Ahnung in Physik, oder besser gesagt wieder vergessen :-(
 

Shakie

Erfahrenes Mitglied
Ich würde ja Behaupten das ich eine Maxmimalkraft habe wie hoch der Ball hüpfen kann, diese Maxmimalkraft verringert sich mit jedem Hüpfer.
Naaaaaaja. Also Kräfteansatz ist schon mal nicht schlecht.
@Taquar: Wenn du speziell für die schiefe Ebene eine eigene Physikengine schreiben willst, dann musst du dir folgendes überlegen:
Du hast die Gewichtskraft des Balls und die Normalkraft der schiefen Ebene (und ggf. Rollreibung). Die Normalkraft ist diejenige Kraft, die die schiefe Ebene aufbringen muss, damit sie nicht kaputt geht (deformiert wird). Sie steht senkrecht auf der Ebene, während die Gewichtskraft immer Richtung Erde zeigt. Dann musst du diese beiden Kräfte vektoriell addieren (sagt dir Vektorrechnung etwas?) und du hast die Gesamtkraft auf den Ball. Diese Gesamtkraft definiert die Beschleunigung (über F=m*a). Ich weiß nicht wie sinnvoll es ist, die Physik hier noch im Detail zu erklären, da ich nicht weiß, wie viel du schon weißt ;)
In welchem "Format" speicherst du denn deine Golflandschaft, das heißt die Schiefe Ebene? Speicherst du einen Winkel, eine Länge der Ebene und die Position? Oder nimmst du eine Bitmap?
Im Prinzip müsstest du den Winkel der Ebene kennen, damit du den Betrag der Beschleunigung (oder den Beschleunigungsvektor) berechnen kannst.

Darüberhinaus ist es durchaus möglich, dass ein Ball eine schiefe Ebene hüpfend hinunterrollt. Es kommt auf die Anfangsbedinungen an. Wenn du den Ball legst wird er nur runterrollen, wenn du ihn fallen lässt wird er runter hüpfen.

EDIT: Soll sich dein Ball auch physikalisch korrekt drehen oder behandelst du ihn als Punktmasse?
 
Zuletzt bearbeitet:

Taquar

Grünschnabel
Ich danke euch für eure Ideen. ;)

Ich weiß natürlich die Grade meiner ebenen. *g*
Ich habe momentan fixe Grade vergeben.

Das der Ball sich dreht ist momentan nicht so wichtig... also ist es eine Punktmasse. ;)
Ich werde mir die Beschleunigungsberechnung ansehen... habe bemerkt das wenn ich unter eine bestimmte Geschwindlichkeit der Kugel komme das diese nicht mehr abheben kann, auch wenn es Bergab geht.
Somit habe ich die Variable "Rolling = 1" eingefügt.
Damit kann ich das Hüpfen unterdrücken und über F=m*a dann die Beschleunigung berechnen.

Später möchte ich es soweit bringen das sich der Ball dreht... mit Spin... Windwiderstand (momentan herscht Windstille *g*)... und unebenen Boden den ich nicht vorgeben muss damit der Ball richtig darauf reagiert.


Danke für die hilfe.

mfg
Taquar
 

Spyke

Premium-User
Wenn du fertig oder eine lauffähige Demo hast, dann meld dich mal.
Hast mich neugierig gemacht auf dein Projekt. :D