Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.0] Skok. Jak to zrobić?

Ostatnio zmodyfikowano 2012-12-20 19:42
Autor Wiadomość
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ć?
P-70993
SeaMonster131
» 2012-12-14 18:20:35
Robisz to np na zasadzie:
C/C++
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 :)
P-71000
Savail
» 2012-12-14 18:25:47
Ja robię skok w ten sposób dla każdej postaci/obiektu:
C/C++
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.
P-71003
kubawal
Temat założony przez niniejszego użytkownika
» 2012-12-14 18:30:02
A
jump_v
?
P-71005
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ą
P-71006
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?
P-71497
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).
P-71507
« 1 »
  Strona 1 z 1