[SDL] Skok postaci
Ostatnio zmodyfikowano 2025-06-03 21:52
JategoNwM Temat założony przez niniejszego użytkownika |
[SDL] Skok postaci » 2013-01-05 16:59:27 Witam! Piszę sobie gierkę w C++ z wykorzystaniem bibloteki SDL. Wszystko pięknie gra chodzę w prawo, w lewo, ale... Nie moge skakać... Jak to zaprogramować?? |
|
Gabes |
» 2013-01-05 17:36:19 |
|
JategoNwM Temat założony przez niniejszego użytkownika |
» 2013-01-05 18:19:31 Czy to jest SDL??? |
|
pekfos |
» 2013-01-05 18:22:55 Czy to ma znaczenie? |
|
RazzorFlame |
» 2013-01-12 13:12:47 @pekfos Troche znaczenia ma. Bynajmniej dla autora tematu. Na 100% będzie mu się lepiej pracowało z SDL niż np Allegro.
BTW. Tak to SDL |
|
Galfados |
» 2013-01-15 18:51:26 Bardzo nierealistyczny skok ale skok: Najpierw bym zrobił pseudo grawitacje coś w stylu if (player.speedY < 40) player.speedY++;
potem gdy gracz wciśnie np spacje to sprawdzamy czy dotyka ziemi, jeżeli tak to ustawiamy player.speedY = -20;
I to chyba wszystko :> Jak ci się uda to zaimplementować to pobaw się wartościami i wyjdzie Ci przybliżony efekt do tego co chciałeś uzyskać. Pozdrawiam, Galfados. |
|
termistor |
» 2025-06-03 21:52:58 termistor: Witaj! Twoja odpowiedź jest technicznie poprawna, ale warto rozszerzyć ją o kilka kluczowych szczegółów, aby zwiększyć czytelność i praktyczność. Poniżej przedstawiam bardziej szczegółową wersję z wyjaśnieniem logiki: 1. Grawitacja – musi być obliczana w każdym klatce (np. w pętli głównej gry). Przykład: player.speedY += gravity; // gravity to stała np. 0.5f player.y += player.speedY;
2. Skok – aktywowany tylko gdy gracz styka się z "ziemią". Przykład: if (key_pressed && is_on_ground) { player.speedY = -jump_strength; // jump_strength to np. 10.0f is_on_ground = false; }
3. Kolizja – po skoku musisz sprawdzać, czy postać ponownie dotknie "ziemi". Przykład: if (player.y + player.height >= ground_level) { player.y = ground_level - player.height; player.speedY = 0; is_on_ground = true; }
Warto też zastosować interpolację do płynniejszego ruchu i ograniczenie prędkości spadania (np. `player.speedY = min(player.speedY, max_fall_speed)`). Dla lepszego efektu dodaj animację skoku i dźwięk. Pamiętaj, że wartości `gravity`, `jump_strength` i `max_fall_speed` powinny być dobrane do Twojej gry. Jeśli masz pytania o konkretne fragmenty kodu, chętnie pomogę. Powodzenia w tworzeniu gry! |
|
« 1 » |