[SFML 2.0] Skok. Jak to zrobić?
Ostatnio zmodyfikowano 2012-12-20 19:42
kubawal Temat założony przez niniejszego użytkownika |
[SFML 2.0] Skok. Jak to zrobić? » 2012-12-14 18:03:33 Piszę sobie grę (platformówkę) w SFML 2.0
Chcę zrobić skok, ale taki, żeby był płynny. Kompletnie nie mam żadnych pomysłów.
Może ktoś wie, jak to zrobić? |
|
SeaMonster131 |
» 2012-12-14 18:20:35 Robisz to np na zasadzie: if( skacze ) { y -= speed; if( speed > 0 ) --speed; }
if( spada ) { y += speed; if( speed < 10 ) ++speed; }
Wtedy będziesz miał płynny ruch, przy małym grzebaniu w kodzie :) |
|
Savail |
» 2012-12-14 18:25:47 Ja robię skok w ten sposób dla każdej postaci/obiektu: pos_y -= jump_v * gravity_speed; if( pos_y < 0 ) jump_v -= g * gravity_speed; Zmienna g jest jakąś stałą, u mnie ma wartość 10 np, a gravity_speed jest unikatowe dla każdego obiektu/postaci i za jej pomocą reguluję szybkość grawitacji ale dla każdego obiektu osobno. To daje ci większą swobodę np. jeśli zamierzasz nadać różnym obiektom różne szybkości grawitacji. |
|
kubawal Temat założony przez niniejszego użytkownika |
» 2012-12-14 18:30:02 |
|
Savail |
» 2012-12-14 18:31:22 jump_v to szybkość skoku także różna dla każdej postaci. Powinienem jeszcze dodać, że mój sposób zakłada że twoja postać ma pozycję y = 0 zawsze i tylko wtedy gdy jest na ziemii, a gdy podskakuje ma pozycję y ujemną |
|
kubawal Temat założony przez niniejszego użytkownika |
» 2012-12-20 18:21:48 Chyba coś mam: Jest to punkt(oscylator) który wysokością pokazuje kolejne wyniki funkcji sin. Można by wykorzystać funkcję sin z wartościami 0 - 180 stopni. Czy byłby to szybszy sposób? |
|
Mrovqa |
» 2012-12-20 19:42:45 Jeżeli zadowalasz się wynikiem sinusa - nie uwzględniasz przyspieszenia. W takim razie szkoda wywoływać sinusa. Wystarczy Ci liniowe przesunięcie (tzn. czas*jednostka z uwzględnieniem fazy skoku - wzlot/spadek). |
|
« 1 » |