miércoles, 25 de marzo de 2015

Estableciendo propiedades a body


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

#define RAD 0.0174532925199432957f

int main()
{
 //Creo mi ventana
 sf::RenderWindow window(sf::VideoMode(800, 600), "Dynamic Body");
 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 );

 //definimos un bodydef
 b2BodyDef bodyDef;
 bodyDef.type = b2_dynamicBody;
 bodyDef.position.Set( 100.f , 200.f );
 bodyDef.angle = 0;

 b2Body *body = world.CreateBody( &bodyDef );

 //esto cambia la posicion y el angulo del body
 body->SetTransform(b2Vec2(200, 300), 1);

 //Cambiamos la velocidad lineal y la velocidad del angulo
 body->SetLinearVelocity( b2Vec2( -5 , -5 ) );
 body->SetAngularVelocity( -90 * RAD );

 //se crea un box shape
 b2PolygonShape dynamicBox;
 dynamicBox.SetAsBox( 1.f , 1.f );

 //Creamos un fixture para darle mas dinamismo
 b2FixtureDef fixtureDef;
 fixtureDef.shape = &dynamicBox;
 fixtureDef.density = 1.f;

 //Creamos la fixture
 body->CreateFixture(&fixtureDef);

 //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(body->GetPosition().x, body->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