Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - superzuman

Pages: [1]
1
General / Re: SFML 2.0 and Box2d PRoblem
« on: September 24, 2015, 08:31:49 pm »
En el código , esta puesto así:
world.Step(TIMESTEP, VELITER, POSITER);
Personaje personaje(world);
personaje.run(window);
pero no hace nada, ni siquiera aparece la caja,el word.step esta en el bucle principal , he seguido varios tutoriales de Box2D y nada.
Muchas gracias por la respuesta y es todo un de talle que este en español :)
In English:
In the code, so this post:
world.Step(TIMESTEP, VELITER, POSITER);
Personaje personaje(world);
personaje.run(window);
but does nothing, not even the box appears, the word.step this in the main loop, I followed several tutorials Box2D and nothing.
Thank you very much for the answer and it is a waist that is in Spanish :)

2
General / SFML 2.0 and Box2d PRoblem
« on: September 24, 2015, 07:33:18 pm »
Hello.
Sorry for my Ingles.Estoy trying to integrate Box2d in SFML 2.3, and I'm having trouble adding physical my character, which in this case would be a box.
The character appears and Showing the position by the command console does not fall by gravity, which could not be the error.
Personaje.h
#pragma once
#include <Box2D/Box2D.h>
#include <SFML/Graphics.hpp>


class Personaje
{
public:
        Personaje(b2World& World);
        Personaje();
        void run(sf::RenderWindow& window);
private:
        sf::Vector2f m_Size;
        b2Body *m_pBody;
        b2PolygonShape polyShape;
        b2FixtureDef fixtureDef;
        b2BodyDef bodyDef;
};

 
Personaje.cpp
#include "Personaje.h"
#include "config.h"
#include <stdio.h>

#define PPM 64.0f               //PIXELS POR METRO
#define MPP (1.0f/PPM)          //METROS POR PIXEL


Personaje::Personaje(b2World& world)
{
        m_Size = sf::Vector2f(50.0f, 50.0f);
       
        bodyDef.type = b2_dynamicBody;
        bodyDef.position.Set(50.0f, 50.0f);
        m_pBody = world.CreateBody(&bodyDef);

        polyShape.SetAsBox(50.0f/2*MPP, 50.0f/2*MPP);

        fixtureDef.shape = &polyShape;
        fixtureDef.friction = 0.2f;
        fixtureDef.restitution = 0.3f;
        fixtureDef.density = 0.7f;

        m_pBody->CreateFixture(&fixtureDef);

       
}

void Personaje::run(sf::RenderWindow& window)
{
       
        sf::RectangleShape person(m_Size);
        person.setOrigin(m_Size.x / 2, m_Size.y / 2);
        person.setFillColor(sf::Color::Green);

        float angle = m_pBody->GetAngle();
        b2Vec2 pos = m_pBody->GetPosition();

        person.setPosition(pos.x * PPM, pos.y * PPM);
        person.setRotation((angle * 180) / PPM);
        window.draw(person);

}
EscenarioPrueba.h
#pragma once
#include <SFML\Graphics.hpp>
#include <SFML\Audio.hpp>
#include "Box2D\Box2D.h"
#include "Personaje.h"
class EscenarioPrueba
{
public:
        EscenarioPrueba();
        void run();
private:
        sf::RenderWindow window;
        sf::Clock clock;
        sf::Time time;
       
       

};

 
EscenarioPrueba.cpp
#include "EscenarioPrueba.h"
#include "config.h"
#include "Box2D\Box2D.h"

#define TIMESTEP 1.0f/60.0f     //TIEMPO DE REFRESCO
#define VELITER 10              //NUMERO DE ITERACION POR TICK PARA CALCULAR LA VELOCIDAD
#define POSITER 10              //NUMERO DE ITERACIONES POR TICK PARA CALCULAR LA POSICION

#define PPM 64.0f               //PIXELS POR METRO
#define MPP (1.0f/PPM)          //METROS POR PIXEL

EscenarioPrueba::EscenarioPrueba()
{
       

       
}

void EscenarioPrueba::run()
{
        //Definir Mundo Box2D (El parametro es la gravedad)
        b2World world(b2Vec2(0.0f, 10.0f));

        //Definir Suelo Box2D
        b2BodyDef sueloBodyDef;
        sueloBodyDef.position.Set(400.0f*MPP, 550.0f*MPP);
        b2Body* sueloBody = world.CreateBody(&sueloBodyDef);
        b2PolygonShape sueloBox;
        sueloBox.SetAsBox(800.0f / 2 * MPP, 100.0f / 2 * MPP);
        sueloBody->CreateFixture(&sueloBox, 0.0f);
        // Crear ventana
    sf::RenderWindow window(sf::VideoMode(800, 600), "Prueba Box2D");
        window.setFramerateLimit(60); //Hacer que los tiempos de refresco casen con los tiempos de Box2D

       
        // Bucle del juego
    while (window.isOpen())
    {
        // Bucle de Eventos de ventana
        sf::Event event;
        while (window.pollEvent(event))
        {
            // Cerrar la ventana cuando se pulsa en el boton de cerrar ventana
            if (event.type == sf::Event::Closed)
                window.close();
        }
 
        // Limpiar ventana con el color negro
        window.clear(sf::Color::Black);
 
                //Actulizar mundo Box2D
                world.Step(TIMESTEP, VELITER, POSITER);

                //Dibujamos a nuestro perosnaje principal
                Personaje personaje(world);
                personaje.run(window);

                // Dibujamos un rectangulo que actuara de suelo mas adelante
                sf::RectangleShape rectSuelo(sf::Vector2f(800, 100));
                rectSuelo.setOrigin(800 / 2, 100 / 2);
                rectSuelo.setPosition(sf::Vector2f(sueloBody->GetPosition().x*PPM, sueloBody->GetPosition().y*PPM));
                rectSuelo.setFillColor(sf::Color::Red);
                window.draw(rectSuelo); //Dibujamos el elemento en el buffer

                // Mostrar el buffer en pantalla
                window.display();
    }
}

 
main.cpp
#include "EscenarioPrueba.h"

int main()
{
        EscenarioPrueba escenarioPrueba;
        escenarioPrueba.run();

        return 0;
}
Thank you very much in advance for your help.

Pages: [1]
anything