PCS Temat założony przez niniejszego użytkownika |
[Box2D & SFML 2.0] Grawitacja » 2014-03-16 23:00:26 Czołem, kolejny temat i kolejny problem, otóż tym razem wyświetlam sobie sprite'a jak i "podłogę" na którą ma spaść mój sprite, no i tutaj mam kłopot. Z niezrozumiałych mi przyczyn moje "pudło" nie leci zgodnie z grawitacją w dół, oto kod: #include <SFML\Graphics.hpp> #include <Box2D\Box2D.h>
static const float SCALE = 30.f;
void CreateGround( b2World & world, float X, float Y );
void CreateBox( b2World & world );
int main() { sf::RenderWindow window( sf::VideoMode( 800, 600, 32 ), "Test" ); window.setFramerateLimit( 60 ); b2Vec2 gravity( 5.9f, 9.8f ); bool doSleep = true; b2World world( gravity, doSleep ); CreateGround( world, 400.f, 600.f ); sf::Texture groundTexture; groundTexture.loadFromFile( "ground.png" ); sf::Texture boxTexture; boxTexture.loadFromFile( "box.png" ); while( window.isOpen() ) { CreateBox( world ); world.Step( 1 / 60.f, 8, 3 ); window.clear( sf::Color::White ); { sf::Sprite Sprite; Sprite.setTexture( boxTexture ); Sprite.setOrigin( 16.f, 16.f ); Sprite.setPosition( 40, 40 ); window.draw( Sprite ); sf::Sprite GroundSprite; GroundSprite.setTexture( groundTexture ); GroundSprite.setOrigin( 400.f, 8.f ); GroundSprite.setPosition( 200, 200 ); window.draw( GroundSprite ); } window.display(); } return 0; }
void CreateBox( b2World & world ) { b2BodyDef BodyDef; BodyDef.position = b2Vec2( 40, 40 ); BodyDef.type = b2_dynamicBody; b2Body * Body = world.CreateBody( & BodyDef ); b2PolygonShape Shape; Shape.SetAsBox(( 32.f / 2 ) / SCALE,( 32.f / 2 ) / SCALE ); b2FixtureDef FixtureDef; FixtureDef.density = 1.f; FixtureDef.friction = 0.7f; FixtureDef.shape = & Shape; Body->CreateFixture( & FixtureDef ); }
void CreateGround( b2World & world, float X, float Y ) { b2BodyDef BodyDef; BodyDef.position = b2Vec2( X / SCALE, Y / SCALE ); BodyDef.type = b2_staticBody; b2Body * Body = world.CreateBody( & BodyDef ); b2PolygonShape Shape; Shape.SetAsBox(( 800.f / 2 ) / SCALE,( 16.f / 2 ) / SCALE ); b2FixtureDef FixtureDef; FixtureDef.density = 0.f; FixtureDef.shape = & Shape; Body->CreateFixture( & FixtureDef ); }
|
|
maly |
» 2014-03-18 14:00:02 Z niezrozumiałych mi przyczyn moje "pudło" nie leci zgodnie z grawitacją w dół |
b2Vec2 gravity( 5.9f, 9.8f ); |
|
oputyk |
» 2014-03-18 15:50:56 |
|
PCS Temat założony przez niniejszego użytkownika |
» 2014-03-19 08:24:41 Nie wiem czemu, ale aplikacja mi się wiesza. |
|
maly |
» 2014-03-19 08:36:15 Brak w głównej pętli obsługi event-ów. sf::Event event; while( window.pollEvent( event ) ) { } W głównej petli CreateBox( world ); tworzy cały czas dodatkowe box-y. |
|
PCS Temat założony przez niniejszego użytkownika |
» 2014-03-19 12:30:09 Okay, działa. Aplikacja się nie wiesza, ale nawet dodanie minusa przy argumencie w grawitacji nic mi nie dała. Pudło jak stało w powietrzu tak stoi. |
|
PCS Temat założony przez niniejszego użytkownika |
» 2014-03-19 12:58:19 Okay, dzięki. Poradziłem sobie już z tym. Brakowało Sprite.setPosition( BodyIterator->GetPosition().x, BodyIterator->GetPosition().y )
|
|
« 1 » |