Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/35: Рейтинг темы: голосов - 35, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 04.07.2020
Сообщений: 63

SFML платформер

23.08.2021, 12:13. Показов 6600. Ответов 2

Студворк — интернет-сервис помощи студентам
проблема с физикой и коллизией
1) Персонаж может бежать по воздуху после прыжка бесконечно, а не снижается вниз.
2) Не срабатывает верхняя коллизия, персонаж пролетает платформы насквозь, иногда срабатывает и его сбивает чуть в сторону.
https://gist.github.com/Mihrus... e4f9525238
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.08.2021, 12:13
Ответы с готовыми решениями:

Анимация в SFML
Помогите пожалуйста,я не знаю как расчитать анимацию(из SpriteDecomposer)кол-во кадров за сек так,что бы анимация прыжка из 14 спрайтов...

Ошибка: CMake Error at deps/SFML/src/SFML/Window/CMakeLists.txt:106 (message): Xrandr library not found
Собсна, решил собрать библиотеку , столкнулся с непонятками, но потом дошло что не так, начал собирать, и в итоге получил ошибку, как...

Платформер
Здравствуйте, начал изучать SFML библиотеки по вот этому уроку ----> http://www.youtube.com/watch?v=T6o5OlgsCew Но при первой проверки...

2
Just Do It!
 Аватар для XLAT
4188 / 2642 / 654
Регистрация: 23.09.2014
Сообщений: 8,848
Записей в блоге: 3
13.09.2021, 10:23
Цитата Сообщение от Mihrusha Посмотреть сообщение
Персонаж может бежать по воздуху после прыжка бесконечно, а не снижается вниз.
очевидно, надо уменьшать его y позицию по некоторому событию, а именно, когда он в прыжке.

C++
1
2
3
if(есть_ли_пpыжок)
{   персонаж.позиция.y = физика.рассчитать_y(персонаж);
}
Цитата Сообщение от Mihrusha Посмотреть сообщение
персонаж пролетает платформы насквозь
коллизия должна строиться по наличию пересечения отрезка траектории между двумя временными точками положение в игровом пространстве
и того объекта с которым ожидается столкновение.
1
0 / 0 / 0
Регистрация: 04.07.2020
Сообщений: 63
26.09.2021, 12:19  [ТС]
Как правильно прописать Сеттеры?
Переношу функции с класса Player в класс Game, что бы большинство взаимодействий было в этом классе переношу функцию коллизии вот например строка в классе Игрока:

C++
1
this->pBody.left = j * BoxSize - this->pBody.width;
где Pbody - это FloatRect; так я пробую сделать в классе Игра this->player->setPBodyLeft(this->player->getPBody().left) = j * BoxSize - this->player->getPBody().width; пишет expression must have mudifiable lvalue так у меня прописан setter и getter и сама функция

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
void Player::setPBodyLeft(float x)
{
    this->pBody.left = x;
}
 
const sf::FloatRect Player::getPBody() const
{
    return this->pBody;
}
 
 
void Game::PlayerMapCollision(float dir)
{
    
    for (int i = this->player->getPBody().top / BoxSize; i < (this->player->getPBody().top + this->player->getPBody().height) / BoxSize; i++)
        for (int j = this->player->getPBody().left / BoxSize; j < (this->player->getPBody().left + this->player->getPBody().width) / BoxSize; j++)
        {
            if (TileMap[i][j] == 'A')
            {
                if (dx > 0 && dir == 0)
                    this->player->setPBodyLeft(this->player->getPBody().left) = j * BoxSize -this->player->getPBody().width;
                this->player->getPBody().left = j * BoxSize - this->player->getPBody().width;
                if (dx < 0 && dir == 0)
                    this->player->getPBody().left = j * BoxSize + BoxSize;
                if (dy > 0 && dir == 1)
                {
                    this->player->getPBody().top = i * BoxSize - this->player->getPBody().height;
                    dy = 0;
                    OnGround = true;
                }
                if (dy < 0 && dir == 1)
                {
                    this->player->getPBody().top = i * BoxSize + BoxSize;
                    dy = 0;
                }
            }
 
            if (TileMap[i][j] == 'o')
            {
                TileMap[i][j] = ' ';
                this->health += 10;
                this->helthbar.setSize(sf::Vector2f(health + 10, 20));
            std:cout << health;
            }
 
        }
  
}[
Добавлено через 1 час 32 минуты
решил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.09.2021, 12:19
Помогаю со студенческими работами здесь

Время на платформер
Всем доброго времени суток! Думаю начать учить с++. Вот думаю если сделать платформер, сколько примерно времени уйдет на его создание, если...

Игра платформер
Привет всем! Я программирую в Visual Studio C++ 2010. Я задался вопросом о том, как сделать игру платформер. Для начала я запрограммировал...

Игра-платформер на C++. Разобраться в причинах ошибок
Привет всем! Пишу продолжение Марио по 2 видео из youtube. Столкнулся с ошибкой, далее коды игры и спрайт с волком: main #include...

Переключение на sfml C++
Ребят, такой вопрос, на скриншоте есть переключатесь окон, в случае нажатия на него меняется фон и кнопки... Как можно это реализовать на...

Подключение SFML
Собрал библиотеку, но появляются ошибки


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru