Исходник [ImGUI + SFML] Шаблон простой игры, с использованием SFML

Участник
Статус
Оффлайн
Регистрация
4 Авг 2017
Сообщения
463
Реакции[?]
212
Поинты[?]
0
Приветствую, выкладываю исходник с реализацией простой анимации персонажа и его передвижения по карте. Использовал высокоуровневую мультимедийную библиотеку SFML, а также ImGUI, как средство отладки. Не видел полноценно настроенного проекта SFML + ImGUI на форуме, поэтому такой хайд. Если нужно могу выложить исходник без ImGUI, но имейте ввиду, с ним гораздо удобнее.

Пожалуйста, авторизуйтесь для просмотра ссылки.



Личные не даю, буду игнорить. Не обижайтесь.
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
31 Мар 2018
Сообщения
62
Реакции[?]
13
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ss?
 
Участник
Статус
Оффлайн
Регистрация
23 Фев 2017
Сообщения
613
Реакции[?]
507
Поинты[?]
0
Тема очень интересная, аж решил глянуть. Реализация через ImGui крайне простая, но работает быстро.
Теперь про косяки. Советую изменить немного класс Player:
Код:
#pragma once
#include <SFML/Graphics/RenderWindow.hpp>
#include <SFML/System/Clock.hpp>
#include <SFML/Window/Event.hpp>
#include <SFML/Graphics.hpp>
using namespace sf;
class Player
{
public:
float dx, dy;
FloatRect rect;
Sprite sprite;
float currentFrame;
float animation_speed = 1;
float hero_speed = 1.5;
//bool is_alive = true; // test
Player(Texture &image)
{
sprite.setTexture(image);
IntRect rect = IntRect(46, 140, 46, 50);
sprite.setTextureRect(rect);
dx = 0, dy = 0;
currentFrame = 0;
}
Player(Texture &image, float c_x, float c_y)
{
sprite.setTexture(image);
IntRect rect = IntRect(46, 140, 46, 50);
sprite.setTextureRect(rect);
dx = c_x, dy = c_y;
currentFrame = 0;
}
void update(float time)
{
rect.left += dx * time;
rect.top += dy*time;
currentFrame += time * 0.07;
if (currentFrame > 3)
currentFrame -= 3;
if (dx >= 0)
sprite.setTextureRect(IntRect(46 * int(currentFrame), 80, 46, 56));
else
sprite.setTextureRect(IntRect(46 * int(currentFrame), 200, 46, 56));
if (dy >= 0)
sprite.setTextureRect(IntRect(46 * int(currentFrame), 135, 46, 60));
else
sprite.setTextureRect(IntRect(46 * int(currentFrame), 0, 46, 65));
sprite.setPosition(rect.left, rect.top);
dx = 0, dy = 0;
}
};
Для просмотра содержимого вам необходимо авторизоваться.
 
Сверху Снизу