Berux Temat założony przez niniejszego użytkownika |
[SFML]Skok postaci » 2013-06-05 18:54:28 Witam. Piszę aktualnie platformówkę. A jak w każdej platformówce musi być możliwość skoku postacią. Postanowiłem się za to zabrać, a że nie mam żadnego pomysłu i jestem zielony w tych sprawach, postanowiłem, albo znaleźć jakiś algorytm, albo gotowy kod. I znalazłem kod Admixiora: float speed = - 2;
while( 1 ) { if( klawisz_spacja ) { skok = true; } if( skok ) { speed += 0.1f; postac.Move( 0, speed ); if( kontakt_z_podlozem ) { postac.Move( 0, y ) skok = false; } wnd.Draw( postac ) } }
Co u mnie wygląda tak: float speed = - 2;
if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Up ) skok = true;
if( skok ) { speed += 0.1f; ( bohater.grafika ).move( 0, speed ); bohater.x += 0; bohater.y += speed; if( bohater.y ==( 600 -( 50 + 100 ) ) ) { bohater.y =( 600 -( 50 + 100 ) ); ( bohater.grafika ).setPosition( bohater.x, bohater.y ); speed = - 2; skok = false; } }
Wszystko działa bardzo dobrze, tylko mam jedno pytanie: 1. Co zrobić, żeby postać skakała wyżej? Z góry dzięki :) |
|
pekfos |
» 2013-06-05 20:37:20 Zwiększ prędkość? |
|
Berux Temat założony przez niniejszego użytkownika |
» 2013-06-05 21:12:54 Jak zwiększam prędkość, to właśnie niżej mi postać skacze, a jak zmniejszam, to nie zatrzymuje się na określonej pozycji - na podłożu. |
|
Mrovqa |
» 2013-06-06 06:58:01 a jak zmniejszam, to nie zatrzymuje się na określonej pozycji - na podłożu. |
W takim razie źle wykrywasz kolizje. |
|
Berux Temat założony przez niniejszego użytkownika |
» 2013-06-06 07:35:17 @Mrovqa
Podłoże jest na mapie kafelkowej - więc kolizji nie wykrywam. Po prostu napisałem wysokość, na której jest podłoże i przed zmniejszeniem prędkości wszystko było ok - po zwiększeniu także. |
|
pekfos |
» 2013-06-06 15:19:03 Jak zwiększam prędkość, to właśnie niżej mi postać skacze, a jak zmniejszam, to nie zatrzymuje się na określonej pozycji - na podłożu. |
Miałeś zwiększyć prędkość, a nie wartość zmiennej speed. Źle wykrywasz kolizje z podłożem. Warunek jest zły i sprawia, że następna linia nie ma sensu: if( bohater.y ==( 600 -( 50 + 100 ) ) ) { bohater.y =( 600 -( 50 + 100 ) );
|
|
Berux Temat założony przez niniejszego użytkownika |
» 2013-06-06 17:05:02 Miałeś zwiększyć prędkość, a nie wartość zmiennej speed. |
Sory, że pytam ale jestem w tych sprawach zielony. Prędkość, czyli co? /edit: To jaki warunek mógłbym tam dać, skoro platforma jest kafelkami na mapie kafelkowej? |
|
pekfos |
» 2013-06-06 17:16:08 |
|
« 1 » 2 |