Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

son of Rizzo

Frischling

  • »son of Rizzo« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Hanau

Beruf: Schüler

  • Private Nachricht senden

11

14.05.2008, 11:04

naja,
von physik an sich hab ich schon etwas ahnung. Genug jedenfalls für dieses problem. Physik programmieren allerdings. Da fehlt mir jede erfahrung, dass ist mein erstes Programm, in dem ich physik programmieren möchte. Es geht ja allerdings auch eher darum, wie ich den ball daran hindere durch die waagerechte Ebene hindurch zu fallen. Die beschleunigung sieht schon realistisch aus. Auch das Hochhüpfen, wie er immer langsamer wird bis er dann schließlich wieder runterfällt, sieht realistisch aus. nur das mit dem Durchfallen bereitet mir probleme, weil ich nicht weiß, wie ich das richtig anstellen soll. :(

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

12

14.05.2008, 14:39

Berechne doch in jedem Frame, wie weit sich der Ball von der Ebene entfernt ist und wenn er zu weit weg ist, setzt du ihn zurück. Ansonsten beschreib das Problem am besten mal mit einem Bild.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

13

14.05.2008, 16:56

Simpelste Variante ein bewegtes Objekt, welches man idealisiert als Punkt darstellen kann, daran zu hindern einfach irgendwo durchzurauschen, ist die Methode den Anfang und den Endpunkt der Bewegung in eim Frames zu verbinden und die Ebene mit der daraus resultierenden Linie auf eine Kollision zu prüfen.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

14

14.05.2008, 19:19

der ball soll nur von oben nach unten fallen. simpler wäre es einfach die y coords zu vergleichen (+ball radius).
Das "aus dem bild fallen" wäre behoben wenn man bei einer kollision vor dem rendern alle werte entsprechend korrigiert...

son of Rizzo

Frischling

  • »son of Rizzo« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Hanau

Beruf: Schüler

  • Private Nachricht senden

15

15.05.2008, 13:49

oh man ich bin so ein Idiot! :evil:
Im Prinzip habt ihr mir alle die ganze zeit, die richtige Lösung gesagt (Erst prüfen, dann rendern), aber ich hab das falsch verstanden.
Naja danke für die ganzen Antworten jedenfalls. Ich habs jetzt so gemacht:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (!ende)
    {
        ballY = ballY + counter;
        if (ballY > 860)
        {
            ballY = 860;
            ende = 1;
        }
        SDL_Delay (25);
        ballXY.y = ballY;
        SDL_FillRect(screen, &resetscreen, SDL_MapRGB(screen->format, 0, 0, 0));
        SDL_BlitSurface (ball, NULL, screen, &ballXY);
        SDL_Flip(screen);
        counter++;
    }

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

16

15.05.2008, 14:06

Das funktioniet aber auch nur bei einem konstanten Radius von 40px. Bei anderen Radien müsstest du die Werte entsprechend anpassen, bzw. per Variablen und Abfragen die Richtige Höhe des Balles ermitteln

C-/C++-Quelltext

1
2
if((ballY + ballRadius) > BildschirmHöhe)
  ballY = BildschirmHöhe - ballRadius;

Werbeanzeige