Dark Temat założony przez niniejszego użytkownika |
» 2011-08-08 14:28:41 Aby zrobić maksymalną siłę skoku to co dokładnie trzeba określić? |
|
DejaVu |
» 2011-08-08 14:29:59 1) Poczytaj książkę ze szkoły od fizyki...
2) Poczytaj tematy na forum, np. allegro platformówka |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-08-08 14:34:25 Wiem, że wtedy jest ruch jednostajnie opóźniony, znam się na fizyce, tylko nie potrafię tego zorganizować w kodzie. @edit Już zrobiłem na sztywno poruszanie się w dół obrazka. @edit2 Czemu podczas poruszania się sprite'a dopóki nie wyląduje na powierzchni za nim jest powielony sprite? #include "head.h" #include <iostream>
bool Kolizja( Poz * A, Poz * B ) { if( A->x >=( B->x + B->w ) ) return false; if(( A->x + A->w ) <= B->x ) return false; if( A->y >=( B->y + B->h ) ) return false; if(( A->y + A->h ) <= B->y ) return false; return true; }
int main() { sf::RenderWindow oA( sf::VideoMode( 800, 600, 32 ), "Crion" ); sf::Image obrazek, mapa; mapa.LoadFromFile( "mapa.bmp" ); obrazek.LoadFromFile( "ludek.bmp" ); double y = 1.0; Poz pozycja; Poz pozycja1; sf::Shape prostokat = sf::Shape::Rectangle( 100, 400, 500, 500, sf::Color::Green, 2, sf::Color::Blue ); sf::Sprite boh, mapasp; mapasp.SetImage( mapa ); boh.SetImage( obrazek ); boh.SetPosition( 300, 200 ); boh.SetScale( 2, 2 ); obrazek.CreateMaskFromColor( sf::Color( 255, 255, 255 ), 0 ); pozycja1.x = 100; pozycja1.y = 400; pozycja1.w = 400.0f; pozycja1.h = 100.0f; double dt = 0; while( oA.IsOpened() ) { dt = oA.GetFrameTime(); sf::Event zdarzenie; while( oA.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == sf::Event::Closed ) oA.Close(); if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape ) oA.Close(); } const sf::Input & ruch = oA.GetInput(); pozycja.x = boh.GetPosition().x; pozycja.y = boh.GetPosition().y; pozycja.w =( obrazek.GetWidth() * 2 ); pozycja.h =( obrazek.GetHeight() * 2 ); if( ruch.IsKeyDown( sf::Key::W ) ) boh.Move( 0, - 1.5 ); if( ruch.IsKeyDown( sf::Key::A ) ) boh.Move( - 1, 0 ); if( ruch.IsKeyDown( sf::Key::D ) ) boh.Move( 1, 0 ); if( !Kolizja( & pozycja, & pozycja1 ) ) { boh.Move( 0, y ); } if( Kolizja( & pozycja, & pozycja1 ) ) oA.Draw( mapasp ); oA.Draw( prostokat ); oA.Draw( boh ); oA.Display(); } return 0; }
} |
|
DejaVu |
» 2011-08-08 16:44:14 A czyścisz ekran co klatkę? :) |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-08-08 16:56:37 Nie, robi się to metodą Okno.Clear() ?
@edit Wnioskuję, że nie tylko tym bo mi plansza znika na chwilę dopóki się nie załaduje. |
|
DejaVu |
» 2011-08-08 17:03:07 |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-08-08 17:07:07 Ok, już nie znika @edit Dalej grawitację to chyba trzeba poprawić już mając gdzieś umieszczone jakieś właściwości to mam użyć kontenera na dane i umieszczać dane gdzieś w pliku, czy sam kontener wystarczy?
|
|
DejaVu |
» 2011-08-08 17:17:38 Gry za Ciebie pisać nie będziemy. Czego użyjesz to Twoja sprawa. Błąd, który podałeś nie nawiązuje do tematu. U nas panuje zasada: 1 problem = 1 temat. |
|
1 2 « 3 » 4 |