• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kilka pytań SFML...

0 głosów
515 wizyt
pytanie zadane 25 stycznia 2017 w C i C++ przez iWantCode Bywalec (2,170 p.)
Jak wygląda przykładowa implementacja SAT w sfml i jak działa SAT bo już nie wiem?

Jak zastosować realistyczną fizykę w grze 2D, jak obliczyć prędkość opadania, odbijanie piłek itd?.

3 odpowiedzi

+1 głos
odpowiedź 25 stycznia 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Jeśli nie wiesz jak zaprogramować fizykę w grze w realny sposób, możesz użyć biblioteki Box2D.
0 głosów
odpowiedź 25 stycznia 2017 przez Pajdas Mądrala (5,930 p.)

Jak wygląda przykładowa implementacja SAT w sfml i jak działa SAT bo już nie wiem?

Internet, a jak zaimplementować... wykonać odpowiednie obliczenia, nie zawsze na wszystko będzie przykładowa implementacja.

Jak zastosować realistyczną fizykę w grze 2D, jak obliczyć prędkość opadania, odbijanie piłek itd?.

No to tutaj przyda ci się fizyka. "Jak obliczyć prędkość opadania" - wzory fizyka w gimnazjum.
https://en.wikipedia.org/wiki/Collision_response

(ja również jestem za Box2D, ale jak koniecznie chcesz spróbować... na pewno do tworzenia takiej "biblioteki" na własną rękę będzie wymagać od ciebie świetnej obiektówki)

0 głosów
odpowiedź 25 stycznia 2017 przez niezalogowany
edycja 30 sierpnia 2017

Prędkość opadania czyli np numerycznie prosta jest metoda eulera. W 1d wygląda tak:

#include <iostream>

using namespace std;

int main()
{
    double y0 = 500;
    double y = y0, v=0, a=-10, dt = 0.01; // np zmiana polozenia na ekranie co 0.01 s

    int k = 10000;
    
    for(int i=0; i<k; i++)
    {
        v += a*dt;
        y += v*dt;
    }
    cout<<y<<endl;
    double t = k*dt;
    cout<<y0+a*t*t/2<<endl; // porownanie ze wzorem z gimnazjum

    return 0;
}

Analogicznie dla dwóch wymiarów rozłożenie na wektory:

    for(int i=0; i<k; i++)
    {
        vx += ax*dt;
        vy += ay*dt;
        x += v*dt;
        y += v*dt;
    }

Zadziała gdy odpowiednio rozłożysz siły/przyśpieszenia na składowe. Zrobisz rzut ukośny. Jeżeli przyśpieszenie będzie zmieniać się w czasie np symulacja układu słonecznego to lepiej użyć coś innego (chociaż dla szczególnych warunków też będzie działać ładnie). Ale ogólnie prosty sposób - zmiana prędkości zmienia się przyśpieszenie razy czas, zmiana położenia - prędkość razy mały krok czasowy.

Podobne pytania

0 głosów
1 odpowiedź 571 wizyt
pytanie zadane 30 września 2016 w C i C++ przez L33TT12 Gaduła (3,950 p.)
0 głosów
4 odpowiedzi 1,973 wizyt
pytanie zadane 17 sierpnia 2016 w C i C++ przez czmyk Obywatel (1,100 p.)
0 głosów
2 odpowiedzi 430 wizyt
pytanie zadane 4 czerwca 2016 w C i C++ przez maciek061 Gaduła (4,490 p.)

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...