• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

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

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

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



Личные не даю, буду игнорить. Не обижайтесь.
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ss?
 
Тема очень интересная, аж решил глянуть. Реализация через ImGui крайне простая, но работает быстро.
Теперь про косяки. Советую изменить немного класс Player:
Код:
Expand Collapse Copy
#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;
}
};

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Назад
Сверху Снизу