![]() |
Столкновение
Есть хорошая такая платформа, умеет летать, и катать всех подряд. Бежим ей в след и упираемся, бежим со сторон и тоже упираемся, а вот когда бежим ей в лоб, то она пролетает сквозь нас как призрак...
Как я понял проколизить куб со сферой нельзя, а значит и всякую ерунду типа CollisionNX и подобное применить не удасться. Можно конечно выписать LinePick на платформе с 3-х этажным условием, но хотелось бы этого избежать... Может кто-то сталкивался с подобным? Посоветуйте чего нибудт. |
Ответ: Столкновение
Либо слишком быстро двигаются оба объекта друг на друга, либо слишком редко вызывается UpdateWorld.
|
Ответ: Столкновение
Можно подключить стороннюю библиотеку Nuclear Glory Collision (http://www.nuclearglory.com), в примерах можно двигаться, находясь на платформе, сталкиваться с "крышей" (известно, что в блице когда обьект движется вверх, он проходит сквозь любую модель, даже если включена коллизия).
Но это на случай, если вас устраивает отказ от стандартных блицевских коллизий. |
Ответ: Столкновение
Ну собсно потому-то я и не юзаю блицовую коллизию.. .и вам не советую...
|
Ответ: Столкновение
Ну коллизии меня в принцыпе устраивают, за исключением того что из маловато. UpdateWorld() вызываеться в каждом цикле(чаще вроде и не надо). Проблема в том, что при столкновениях типа сфера-куб, сфера-поли всё хорошо, но нету возможности проколизить куб-сфера или поли-сфера...
В тоерии есть уже два решенияЮ но они не удовлетворяют потребностям. 1. Лепить на каждый борт платформы по сферическому коллизийному бамперу и проверять обьект на колличию с бампером передавая ускорение платформу, если она движеться на обьект, но это муторно и ёмко, особенно если платформ будет много.... 2. на кажкой платформе производиться LinePick проверки по 4 сторонам света, и в зависимости от вектора движения передавать ускорение обьекту на пути... Но как уже говорилось подобные решения не подходят. Библы, Либлы и прочее стороннее барахло не предлагать(я учусь а не варю солянку) Может есть какие-то идей? |
Ответ: Столкновение
Идея только одна: пиши код
я это делал, но объяснять на пальцах в 2-ух словах 2 сотни строк кода раскиданых по разным функциям не умею плеер - сфера, платформа - пологинальная колизия остальное пиками и условиями Самый лучший способ избежать проблем с лифтами: лифт сразу опускается если на нем нет игрока и опускается быстрее чем он падает так ты избежишь проблемы когда игрок попадает под платформу |
Ответ: Столкновение
В блитце коллизия работает вот как: Проверяется не только коллизия со сферой и полигоном, а еще и луч с полигоном, то есть если у нас сфера будет неподвижна внутри полигональной модели, с которой мы проверяем столконвение, то ничего не провериться. нужно обязательно, чтобы луч пересек полигон (ну или куб/сфера). Что это за луч? это луч от начала, до конца перемещения сферы. При установке EntityType объекту куда-то в блитц записываются координаты объекта. Это будет начало луча, а конец собстно проследнее положение сферы перед вызовом UpdateWorld(). Так вот, чтобы сделать проверку с движущимся полигональным объектом, нужно сделать такую конструкцию:
translateEntity platform, mx, my, mz Entitytype player, 0 curX = EntityX(player,1) curY = EntityY(player,1) curZ = EntityZ(player,1) PositionEntity player, curX+mx, curY+my, curZ+mz Entitytype player, playerCol PositionEntity player, curX, curY, curZ При условии, что изначально player и platform не коллизионируют (не перекрывают) друг друга. Давно как-то приходилось разбираться с этим. Вот здесь тред был http://forum.likosoft.ru/showthread.php?t=259 |
Ответ: Столкновение
В блитце взаимно движущиеся энтати не колизются, потому что их движение происходит синхронно. Попробуйте вызывать CaptureWorld() перед проверкой коллизий.
|
Часовой пояс GMT +4, время: 16:09. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot