0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 18
1

Коллизия с картой в SFML

30.05.2018, 15:15. Показов 1901. Ответов 7
Метки нет (Все метки)

https://pp.userapi.com/c846122... EoZUOw.jpg
Имеется набор тайлов, в тайле есть стена/несколько стен
Как сделать коллизию с этими стенами и спрайтом персонажа с помощью sfml?
Язык программирования - С++
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.05.2018, 15:15
Ответы с готовыми решениями:

Коллизия С++ SFML
Помогите. Не знаю, как в моем случае сделать коллизию. Вот код.Если не сложно, наведите пример....

SFML C++ взаимодействие с картой
Здравствуйте, возникла проблема со взаимодействием персонажа с картой, запускаю программу, персонаж...

SFML в C::B пытается что-то найти в D:\sfml-release\ которого нет
Добрый день, вторые сутки пытаюсь подключить SFML библиотеку к C::B. При подключении по мануалу с...

D:\C++ Projekts\SFML\main.cpp [Error] SFML\Graphics.hpp: No such file or directory
Пытаюсь начать кодить на библиотеке SFML но при компиляции пучтого проэкта выдает ...

7
60 / 27 / 24
Регистрация: 28.09.2017
Сообщений: 399
30.05.2018, 16:40 2
RomchK, у тебя объекты прямоугольные, так что можешь определять столкновения с помощью AABB. Знаком с таким?
0
Всегда онлайн
1077 / 781 / 295
Регистрация: 07.04.2013
Сообщений: 2,698
30.05.2018, 18:06 3
RomchK, как сказал pavel2210057 - через AABB. В sfml есть даже класс sf::FloatRect, а в нем функция intersects() которая проверяет, пересекаются ли 2 квадрата.
1
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 18
31.05.2018, 09:24  [ТС] 4
А если стен несколько, то нужно будет проверять три прямоугольника?
Где хранить эти прямоугольники?
Одновременно нужно будет проверять столкновение спрайта со всеми прямоугольниками на карте, как это сделать?
0
60 / 27 / 24
Регистрация: 28.09.2017
Сообщений: 399
31.05.2018, 10:33 5
RomchK,
Цитата Сообщение от RomchK Посмотреть сообщение
А если стен несколько, то нужно будет проверять три прямоугольника?
Если вычислять сразу все, то будет большая нагрузка на систему. Вот представь, один прямоугольник - 4 условия, 2 прямоугольника - 8, а если прямоугольников 100, то вообще 400, и это требуется измерить за 1 кадр(!!!). Поэтому можно придумать какое-нибудь простое условие, с помощью которого будет определяться, может ли хотя бы в теории столкнуться объект с прямоугольником. Я сам в данный момент пишу физический движок и там не ориентированные фигуры. Часть с определениями коллизий уже сделал. Но в нем я определяю с помощью описанных окружностей. Там нужно всего-лишь сравнивать радиусы.
Цитата Сообщение от RomchK Посмотреть сообщение
Где хранить эти прямоугольники?
Прямоугольники это не объекты, их хранить не надо. AABB - это, грубо говоря, всего лишь условие.
Цитата Сообщение от RomchK Посмотреть сообщение
Одновременно нужно будет проверять столкновение спрайта со всеми прямоугольниками на карте, как это сделать?
Логично же, что, если прямоугольник находится на другом краю карты, то столкновение с ним точно не произойдет. Придумай условие.
0
Всегда онлайн
1077 / 781 / 295
Регистрация: 07.04.2013
Сообщений: 2,698
31.05.2018, 19:57 6
Цитата Сообщение от pavel2210057 Посмотреть сообщение
то вообще 400, и это требуется измерить за 1 кадр(!!!).
думаю, об этом не стоит переживать, современные 3d игры делают намного больше вычислений за 1 кадр, так еще и в 3d пространстве. Стоит думать об производительности только когда ну очень много коллизий.
0
60 / 27 / 24
Регистрация: 28.09.2017
Сообщений: 399
31.05.2018, 20:12 7
MrOnlineCoder,
Цитата Сообщение от MrOnlineCoder Посмотреть сообщение
современные 3d игры делают намного больше вычислений за 1 кадр, так еще и в 3d пространстве
да, делают, но вы оцените системные требования. Тормоза в 3D это еще куда ни шло, а если в 2D, то по-моему разработчику стыдно должно быть.
А если автор хочет сделать, например игру, подобную "Terraria" (вроде правильно написал), там тысячи, да что там, десятки тысяч возможных коллизий с каждым блоком мира, по вашей логике надо просчитывать столкновение со всеми сразу?
0
Всегда онлайн
1077 / 781 / 295
Регистрация: 07.04.2013
Сообщений: 2,698
31.05.2018, 21:22 8
pavel2210057, конечно нет В Terraria много тайлов (тысячи их!), и конечно, стоит задуматься о быстрых и рациональных столкновениях.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2018, 21:22

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

Коллизия
Здравствуйте, форумчане. Пытаюсь реализовать 3Д лабиринт на C++/OpenGL VS 2010, генерируется...

Создание релиза exe файла SFML C++ на VS 2017 (не удается открыть входной файл "sfml-graphics-s.lib")
не могу собрать решение релиз версии, не пойму что я делаю не так постоянно выдает ошибку 1>LINK...

Коллизия окна
Здравствуйте уважаемые пользователи форума. Возникла проблема, не работает метод. Метод должен...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.