Вторник, 03 Декабря 2024, 22:21

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Столкновение в SFML
ArcanisДата: Понедельник, 10 Августа 2015, 18:51 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Доброе время суток, господа сишники.
Я к вам с SFML'ом. Только сел осваивать и столкнулся с такой проблемой:

Обычный 2D платформер, на котором шарик должен прыгать по платформам. У нас есть класс игрока и класс платформы. Для уровня в игре мы генерируем, например, 10 платформ в случайных местах уровня. В теории нужно, что бы шарик сталкивался с верхней гранью платформы, переходил в состояние "onPlatform", сбоку и снизу колизии не считаются (как в doodle jump). Каким самым оптимальным образом мне обработать столкновение с этими платформами, так, как задумано в теории? Может быть я не знаю о каких-то особенностях сего фраймворка, иль лучше для данных целей использовать что-нибудь наподобие Box2D? Жду ваших мудрых советов.
RobotZeroДата: Понедельник, 10 Августа 2015, 19:37 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Я думаю в SFML не предусмотрены столкновения - не встречал. Только алгоритмы писать или этот box2D использовать (не пробовал). В интернете можно найти уроки по столкновениям через матрицы, (вроде) или специальные библиотеки со сложными (для меня) алгоритмами, или box2D (встречал такие, легко найти).

Добавил: Если смотреть по библиотекам sfml, я выделил 3 нужные мне функции - изображение, звук и событие нажатия клавиш клавиатуры. Там еще есть возможность создания сетевых игр - не разбирался.


[2D] - Mo
??? (Gamiron №12) - Забил


Сообщение отредактировал RobotZero - Понедельник, 10 Августа 2015, 19:44
XakepДата: Понедельник, 10 Августа 2015, 20:36 | Сообщение # 3
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата RobotZero ()
Я думаю в SFML не предусмотрены столкновения - не встречал

Ну столкновения можно и самому реализовать, ничего сложного тут нету, тем более с простейшими примитивами

Если тебе на подобии дудл джампа нужно, то использовать Box2D очень глупо, простейшее условие:

Код
player.x < platform.x+platform.halfw &&
player.x > platform.x-platform.halfw &&
player.y-player.radius < platform.y+platform.halfh &&
player.y+player.radius > platform.y-platform.halfh &&
player.velocity < 0

Получается если игрок падает, проверяем на столкновение с платформами (player.velocity < 0) на а дальеш просто проверяем, находится ли игрок внутри области платформы.
halfw, halfh - половина ширины и высоты платформы
radius у игрока - собственно радиус при котором он столкнется с платформой

Код не проверял, просто идея как реализовать можно, может где ошибки.


Сообщение отредактировал Xakep - Понедельник, 10 Августа 2015, 20:38
ArcanisДата: Понедельник, 10 Августа 2015, 20:41 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Xakep, если для данного случая это действительно самый оптимальный вариант, я готов это принять. Но что тогда делать, если у меня например будут наклонные поверхности, или того хуже, спрайты с какой-нибудь хитровые**ной текстурой? sad
XakepДата: Понедельник, 10 Августа 2015, 20:51 | Сообщение # 5
めちゃくちゃちゃ
Сейчас нет на сайте
Цитата Arcanis ()
Xakep, если для данного случая это действительно самый оптимальный вариант, я готов это принять. Но что тогда делать, если у меня например будут наклонные поверхности, или того хуже, спрайты с какой-нибудь хитровые**ной текстурой?

В таком случае уже лучше Box2D или Nape использовать, обычно по сложным текстурам сначала полигон строят, потом производят триангуляцию, либо разбиение на выпуклые многоугольники, и уже с этими многоугольниками производится столкновение. Nape автоматически может генерировать все что нужно.
Наклонные создаешь простой треугольник для столкновения (в физических движках отдельно спрайты, отдельно физические тела), в общем если нужна сложная физика, сложные столкновения, то лучше взять готовое решение, если очень просто, на подобие дудл джампа, то тут лучше вручную все сделать.
ArcanisДата: Понедельник, 10 Августа 2015, 20:55 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Цитата Xakep ()

В таком случае уже лучше Box2D или Nape использовать, обычно по сложным текстурам сначала полигон строят, потом производят триангуляцию, либо разбиение на выпуклые многоугольники, и уже с этими многоугольниками производится столкновение. Nape автоматически может генерировать все что нужно.
Наклонные создаешь простой треугольник для столкновения (в физических движках отдельно спрайты, отдельно физические тела), в общем если нужна сложная физика, сложные столкновения, то лучше взять готовое решение, если очень просто, на подобие дудл джампа, то тут лучше вручную все сделать.


Спасибо большое за ответ. Тема закрыта. smile
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг