tomek5321 Temat założony przez niniejszego użytkownika |
[SFML] Kolizja » 2012-01-18 12:24:22 Zarejestrowałem się na tym forum, bo od jakiegoś czasu ciągle męczę się z tymi kolizjami. Większość tematów jest z kolizjami z Allegro. Mógłby mi ktoś podać przykład takiej kolizji obiektów bez tła w SFMLu? W jaki sposób podać współrzędne obiektu? Wystarczy to? sf::Image obohater, owrog, otlo; sf::Sprite bohater, wrog, tlo;
obohater.LoadFromFile( "Obiekty/bohater.png" ); owrog.LoadFromFile( "Obiekty/bohater.png" ); otlo.LoadFromFile( "Obiekty/tlo.jpg" );
tlo.SetImage( otlo ); bohater.SetPosition( 0, 0 );
bohater.SetImage( obohater ); bohater.SetPosition( 500, 300 ); bohater.SetScale( 0.5, 0.5 );
wrog.SetImage( owrog ); wrog.SetPosition( 300, 500 ); wrog.SetScale( 0.5, 0.5 );
|
|
Dark |
» 2012-01-18 16:33:12 zachęcam do skorzystania z kursu sfml znajdującego się na stronie. współrzędne odczytuje się np. obiekt.GetPosition().x |
|
hincu |
» 2012-01-18 16:39:35 po 1 fizyka kolizji jest taka sama czy to sdl allegro ogl sfml wiec nie rozumiem w czym problem po 2 na stronie sfml wejdz w wiki source codes i tam masz przykladowy kod kolizji aabb per pixel i jeszcze jakis :P tyle w temacie |
|
tomek5321 Temat założony przez niniejszego użytkownika |
» 2012-01-18 17:24:16 I jeszcze jedna rzecz. Dlaczego mój ludek wychodzi za ekran? const sf::Input & sterowanie = oknoAplikacji.GetInput();
if( sterowanie.IsKeyDown( sf::Key::Left ) ) if( b_x >= 0 ) bohater.Move( - 0.2, 0 );
if( sterowanie.IsKeyDown( sf::Key::Right ) ) if( b_x <= 690 ) bohater.Move( + 0.2, 0 );
if( sterowanie.IsKeyDown( sf::Key::Up ) ) if( b_y >= 0 ) bohater.Move( 0, - 0.2 );
if( sterowanie.IsKeyDown( sf::Key::Down ) ) if( b_y <= 490 ) bohater.Move( 0, + 0.2 );
|
|
SeaMonster131 |
» 2012-01-18 17:27:36 Ja bym zamienił >= na > oraz <= na <. |
|
tomek5321 Temat założony przez niniejszego użytkownika |
» 2012-01-18 17:33:04 Nadal to samo, a no i jeszcze to: int b_x, b_y, w_y, w_x; b_x = 680; b_y = 480; w_y = 0; w_x = 0;
bohater.SetImage( obohater ); bohater.SetPosition( b_x, b_y ); bohater.SetScale( 0.2, 0.2 );
|
|
hincu |
» 2012-01-18 17:39:58 zrob sobie dodatkowa zmienna sf::Vector2f i tam zapisuj pozycje postaci przed kolizja jesli kolizja wystepuje to cofaj sie to tej pozycji sf::Vector2f SPos; sf::Vector2f EPos;
od start oraz end :P |
|
tomek5321 Temat założony przez niniejszego użytkownika |
» 2012-01-18 17:51:27 Dzięki :) @hincu Znalazłem taką stronie po wpisaniu frazy source codes collision sfml: http://www.sfml-dev.org/wiki/en/sources/simple_collision_detection Czy wystarczy, że utworze 2 pliki Colision.cpp i Collision.h, a następnie do głównej części programu dodam dyrektywę #include "Colision.h" i wsadzę kod: Collision::PixelPerfectTest( const sf::Sprite & Object1, const sf::Sprite & Object2, sf::Uint8 AlphaLimit ) to kolizja powinna zadziałać? |
|
« 1 » 2 3 4 5 6 |