viernes, 20 de marzo de 2015

GroundBox Box2D


#include <SFML\Graphics.hpp>
#include <Box2D\Box2D.h>

int main()
{
 //Creo mi ventana
 sf::RenderWindow window(sf::VideoMode(800, 600), "Hola Box2D");
 window.setFramerateLimit( 60 );
 
 //para empezar la simulacion del mundo con esto simula la fisica
 float32 timeStep = 1.0f / 60.f;
 int32 velocityIterations = 8;
 int32 positionIterations = 3;

 //defino mi vector de gravedad
 b2Vec2 gravity( 0.f , -10.f );

 //creo mi mundo
 b2World world( gravity );

 //para crear un body se necesita de 4 pasos

 //primer paso creamos el groundbody para ello necesitamos su definicion
 b2BodyDef groundBodyDef;
 groundBodyDef.position.Set( 0.f , -10.f );

 //paso 2 : la definicion es pasada al objeto mundo de ground body
 b2Body *groundBody = world.CreateBody( &groundBodyDef );

 //paso 3 :  creamos el polygono de ground y le damos setatbox para centrar en el origen
 b2PolygonShape groundBox;
 groundBox.SetAsBox( 50.f , 10.f );

 //paso 4 creando la fixture
 groundBody->CreateFixture( &groundBox , 0.f );

 //Creo mi textura
 sf::Texture textura;
 textura.loadFromFile("box1.png");
 
 //creo mi gameloop
 while (window.isOpen())
 { 

  //lo inicio en el gameloop.
  world.Step(timeStep, velocityIterations, positionIterations);

  //limpio la ventana
  window.clear(sf::Color::White);

  //Creo mi Sprite
  sf::Sprite sprite;
  sprite.setTexture( textura );
  sprite.setOrigin(16.f, 16.f);
  sprite.setPosition(groundBody->GetPosition().x, groundBody->GetPosition().y);
  window.draw( sprite );

  //mostrar en pantalla
  window.display();

  sf::Event event;

  while (window.pollEvent(event))
  {
   if (event.type == sf::Event::Closed)
    window.close();
  }
 }

 return 0;
}

No hay comentarios:

Publicar un comentario