Box2d и SFML на Visual Studio 2022. Пришлите пожалуйста сюда уроки и туториалы

Box2d и SFML. Создаю игру в vs 2022 (Super mario bros). Sfml уже изучил и хочу понять Box2D и как с ним работать. На ютубе видел ролики исключительно только для Box2d где они использовали какой то demo для реализации кода. А я бы хотел в чистую создать с нуля проект и не могу для этого найти хороший ролик и документацию для изучения. В плане изучения я имею в виду чтобы там было например что значит строка b2World World; то есть рассказать про b2World подробно. зачем она нужна и тд. Вот мой код проекта:

#include <iostream>
#include <SFML/Graphics.hpp>
#include <box2d/box2d.h>
using namespace sf;
using namespace std;
int main()
{

    bool isNol = false;
    bool isSpacePress = false;
    Font font;
    Text text;
    font.loadFromFile("C:/Users/Матвей/source/repos/Project2/x64/Debug/Textures/Font/Super Mario Bros. NES.ttf");
    text.setFont(font);
    text.setCharacterSize(6);
    text.setFillColor(Color::Black);
    Texture Map;
    Map.loadFromFile("C:/Users/Матвей/source/repos/Project2/x64/Debug/Textures/SuperMarioBrosMap1-1-export.png");
    Sprite textureMap;
    textureMap.setTexture(Map);
    Texture texturePlayer;
    texturePlayer.loadFromFile("C:/Users/Матвей/source/repos/Project2/x64/Debug/Textures/goomba.png");
    Sprite player;
    player.setTexture(texturePlayer);
    
    RenderWindow window(VideoMode(1920, 1080), "Super Mario Bros Style");
    window.setFramerateLimit(60);
    CircleShape circle(50.f);
    circle.setPosition(100, 100);
    circle.setFillColor(Color::Green);
    circle.setOutlineColor(Color::Black);
    window.draw(textureMap);
    window.draw(player);
    window.display();
    textureMap.setPosition(0,0);
    player.setPosition(40,192);
    View camera(Vector2f(0, 0), Vector2f(200,200));
    camera.setCenter(100,145);
    int moveY = player.getPosition().y;
    bool isJump = false;

    b2Vec2 gravity(0.f, 9.8f);
    b2World World(gravity);
    
    while (window.isOpen()) 
    {
        //класс события
        Event event;
        //обработка очереди событий
        while (window.pollEvent(event))
        {

            
            if (event.type == Event::Closed)
            {
                //закрываем окно
                window.close();
            }
            if (event.type == Event::KeyReleased)
            {
                if (event.key.code == Keyboard::Space)
                {
                    isSpacePress = false;
                }
            }
        }

        if (player.getPosition().y >= 192.f - 1.f && player.getPosition().y <= 192.f + 1.f)
        {
            isSpacePress = true;
        }
        if (player.getPosition().x >= 0.f - 1.f && player.getPosition().x <= 0.f + 1.f)
        {
            isNol = true;
        }
        if (player.getPosition().y >= 127.f - 1.f && player.getPosition().y <= 127.f + 1.f)
        {
            //player.setPosition().y = 127.f;
            isSpacePress = false;
        }
        if (Keyboard::isKeyPressed(Keyboard::Space)) //  isKeyReleased
        {
            if (isSpacePress == true)
            {


                if (player.getPosition().y > moveY - 65)
                {
                    isJump = true;
                    player.move(0.f, -1.5f);
                }
            }
        }
        if (Keyboard::isKeyPressed(Keyboard::D))
        {
            
                player.move(0.8f, 0.f);
            
        }
        if (Keyboard::isKeyPressed(Keyboard::A))
        {
            if (isNol == false)
            {
                player.move(-0.8f, 0.f);
            }
        }
        window.setView(camera);
        if (player.getPosition().x > 100.0f)
        {
            camera.setCenter(player.getPosition().x, camera.getCenter().y);
        }
        if(isJump == false)
        {
            if (player.getPosition().y < 192)
            {
                player.move(0.f, 0.8f);
            }
        }
        isNol = false;
        isJump = false;
        text.setPosition(camera.getCenter().x -90, camera.getCenter().y -95);
        text.setString("MoveCharacterX: " + to_string(player.getPosition().x) + "\nMoveCharacterY: " + to_string(player.getPosition().y));
        window.clear();
        window.draw(textureMap);
        window.draw(player);
        window.draw(text);
        window.display();
    }
}

Знаю, что в моем коде проблемы. Что все записано в main и не пытаюсь создавать методы, много if и тд. Но поймите меня правильно я просто недавно стал изучать c++.

Хух надеюсь понятно все рассказал. Надеюсь на понимание, спасибо! Как выглядит запущенный проект


Ответы (0 шт):