Совместный проект Silver Soft и Andrushka’s Software.
Irrlicht - что это такое и с чем его едят.
Урок 4. Столкновения.
Господа, если хоть кто-нибудь читает мою писанину, то дайте знать, написав на мыло пару строк. Ведь не хочется писать в пустоту…
А теперь плохая новость. Сайт прикрыли и теперь мне попросту негде выкладывать исходники. Я временно выложу код сегодняшнего урока на h15, так что если кто-нибудь готов предоставить хостинг и/или заниматься сайтом буду рад услышать предложения.
Теперь по сути урока. В нынешнем состоянии игрок просто летает, ничего не собирает. Этакий Pacman привидение. ;) Будем исправлять это упущение. Этот урок будет довольно маленьким по объёму, но очень важный по качеству информации. Вам будет необходимо осмыслить и проникнуться философией collision detection в Irrlicht. :-D
Следующий урок, может быть, будет чуть-чуть побольше. Я долго думал и решил, что всё-таки пусть уроки будут поменьше. Так лучше усвоится.
А как собсна?
С помощью всё тех же аниматоров. Для определения столкновения Irrlicht использует как Bounding Box’es так и набор треугольников. Это как мы захотим. А захотим мы конечно треугольники, потому что проверка столкновений на их основе даёт более точный результат. В движке есть класс ITriangleSelector, который содержит набор треугольников, которые будут использоваться при проверке столкновений.
Алгоритм прост.
1. Создать ITriangleSelector. Того объекта, с которым наша камера будет контактировать.
2. Добавить специальный аниматор к камере, который будет дополнительно воздействовать на камеру силой гравитации.
Как обычно полный код я приводить не буду. Скачивайте и смотрите сами. Всё что я добавил находиться в конце конструктора CPlayer и CLevel. Также кое-что внёс в CGame. Я сделал его синглтоном ( singleton )
А чё это?
Если говорить без умных слов, то синглтон это объект который сам себя создаёт и сам себя уничтожает. Объект, доступ к которому можно получить из любого места программы.
А сделал я это, чтобы корректно добраться до глобального селектора.