Skocz do zawartości
informatyk2000

OpenGl, c++ podskakiwanie obiektu.

Rekomendowane odpowiedzi

Witam,

Posiadam takowy kod:

int cFizyka::kolizja(cFizyka &X) //wykrywanie kolizji z innym obiektem (funkcja przekazuje 1 gdy jest kolizja 0 gdy brak)
{
//jesli wystepuje kolizja to przynajmniej jeden z wierzcholkow musi zawierac sie wewnatrz
//sprawdzenie czy ktorys z wierzcholkow obiektu nie zawiera sie w obiekcie sprawdzanym
int kolizja = 0;
if (w_prosokacie(x_ + granica_.xa, y_ + granica_.ya, X) == 1) kolizja = 1;
else if (w_prosokacie(x_ + granica_.xa, y_ + granica_.yb, X) == 1) kolizja = 1;
else if (w_prosokacie(x_ + granica_.xb, y_ + granica_.yb, X) == 1) kolizja = 1;
else if (w_prosokacie(x_ + granica_.xb, y_ + granica_.ya, X) == 1) kolizja = 1;
//odworcenie sprawdzania
else if (w_prosokacie(X.x_ + X.granica_.xa, X.y_ + X.granica_.ya, *this) == 1) kolizja = 1;
else if (w_prosokacie(X.x_ + X.granica_.xa, X.y_ + X.granica_.yb, *this) == 1) kolizja = 1;
else if (w_prosokacie(X.x_ + X.granica_.xb, X.y_ + X.granica_.yb, *this) == 1) kolizja = 1;
else if (w_prosokacie(X.x_ + X.granica_.xb, X.y_ + X.granica_.ya, *this) == 1) kolizja = 1;

//obsluga kolizji
if (kolizja)
{
	//znalezienie boku od ktorego nastapi odbicie
	float alfa_n = znajdz_normalna(X);
	odbicie(alfa_n);
	float kat = (alfa_n > 0) ? alfa_n - 180 : alfa_n + 180;
	X.odbicie(kat);
}

return kolizja;
}

 

przy pomocy którego wykrywam kolizję z innymi obiektami. Napisalem na podstawie tej funkcji program arkanoid https://imgur.com/a/mAADKoa .

W tej grze pilka odbija się cały czas od obiektów. Teraz tworzę inna grę, w której potrzebuje wykonac moim elementem skok, po wcisnieciu przycisku pilka ma podskoczyc i po spadku zatrzymac sie nie odbijajac od innych elementow. Moj problem jest taki, iż nie wiem w jaki sposob zmodyfikowac funkcje kolizja, aby wykonać skok.

 

Do nadawania funkcji predkosci jest odpowiednia metoda ustaw_predkosc(double predkosc, double kat);

oraz do nadania grawitacji ustaw_fizyka(double sila_przyciagania, double kat);

 

Proszę o jakiekolwiek wskazówki.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...