EntityCollided, при движущихся навстречу друг другу объектах
В игре физ-двиг полностью основан на блитц-коллизиях. Меня они полностью устраивают - удобные, не тормозят, а по возможностям как-раз то что необходимо для моего сромненького проекта.
Единственное пока я не могу замутить на них, это определять столкновение, когда объекты движутся НАВСТРЕЧУ ДРУГ ДРУГУ! Ну а надо делать движущиеся препятствия, двигающиеся колючки, враги в конце концов. Как-то можно обойтись кончено и entitydistance`ом. Но это очень ограничивает меня! А если припятствие вытянутое, или вообще форма какая-нибудь непростая + с отверстиями. А блитц-коллизии глючат лично у меня в выше описанном случае. Наверно надо как-нибудь выдумывать искусственный метод обхода такой четровщины. Хотелось бы узнать если кто с этим встречался, то что получилось изобрести на этот счет. Или просто мнение каждого из вас что может быть полезнам в этом случае?.. Использовать сторонние ДЛЛ крайне не желательно. Ведь такая казалось ерунда осталось, а так весь физ-двиг уже готов. :( |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
1) В 1-м кадре перемещай врагов, во втором угрока - в итоге получаем коллизию со статичными обьектами.
2) На сильновытянутых обьектах можно расставить виртуальные точки (если лень перещитывать координаты, или в уровне мало энтити, то можно использовать пивоты), и измерять дистанцию между ними и игроком. 3) Чтото пока больше ниче в голову не приходит |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Не получилось ничего(((
Вот семпл-код Код:
Graphics3D 800, 600, 16, 2 куб-враг, он должен просчитываться в коллизиях по полигонам. существует три основных ситуации: 1) враг стоит, игрок движется на него. 2) враг движется на игрока, игрок стоит. 3) враг и игрок движутся навстречу друг другу. Ну и надо чтобы в любом из этих случаев безошибочно определялся момент когда игрок и враг сколлизились. В дангом семпле нужно чтобы высвечивались соотвествующие надписи. В этом семпле, странно, вообще чего то не получилось...((( А в игре у меня коллизии определяются в 1 и 3 случаях, а вот во 2, если игрок стоит - то враг проходит сквозь игрока - и ничего:((( Ну вообщем, прошу поправить код таким образом, чтобы все три случая определялись. Пользоваться внешними длл - нельзя, только блитц коллижн. Заранее спасибо! |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Код:
Graphics3D 800, 600, 16, 2 |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
tormoz, спасибо, но мне нужно чтобы враг по полигонам просчитывался... это ту простой пример - а на деле будут враги не совсем правильной формы + в большей части это даже будет использоваться для различных колючек - ну а они уж будут совсем разнообразной формы и при этом ещё будут двигаться.
Так что условие враг должен просчитываться в коллизиях по полигонам очень важно Ещё могут быть варианты, или при таком раскладе это уже выходит за границы блитца??? Мне кстати понравилась идея ЧерногоДракона про 1) В 1-м кадре перемещай врагов, во втором угрока - в итоге получаем коллизию со статичными обьектами. Но у меня не получилось сделать такое, к примеру этот же самый код, как бы я реализовывал идею ЧерногоДракона: Код:
Graphics3D 800, 600, 16, 2 |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Коллизии для движущегося объекта в блитце всегда должны проверяться по сфере.
Если уж очень надо используй MeshesIntersect и упрощенные меши для своих моделей. А то тормозить будет. |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Код:
Collisions 1,2,2,3 UPD: Вообщем фигня какаято получается, подумай сам. |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Спасибо, BlackDragon, а я совсем не так понимал раньше коллизии... я думал что они как раз и проверяют пересечение 3-х мерных фигур, теперь все ясно - теперь понятно почему код не работает...Именно из-за взаимного проникновения мешей... Да и невнимательность, особенно с копи-пастом - часто подводит:)))
MiXaeL, спасибо, за эту штуковину, я раньше и не знал о такой команде!!! MeshIntersect - вот мое спасение!!! В этом коде получилось все устроить как нужно, сейчас буду с игрой заниматься - посмотрим на сколько производительность упадет... надеюсь несильно. а насчет упрощенных мешей - это само собой понятно, ещё с моддерства на gta vice city это знаю и активно использую в игре - все что можно упрощаю:))) Кстати вопрос...В блитце коллизиях вместо "сфера" говорится "эллипсоид" - ну а я так понял что сферу вытянуть в нем нельзя, хотя очень бы хотелось... |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Сферу коллизии можно вытягивать в блитце (с версии 1.69, если не ошибаюсь) но только по одной оси - Y. Почитай хелп к EntityRadius.
|
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Точно! спасибо, михаил!
|
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
хмм... а чегоэто тока по У?
EntityRadius entity,x_radius#,y_radius# вытягивай хоть по х хоть по у или я не прав О_О |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Цитата:
Т.е. вытянуть в сторону не получится |
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
ну если вытянуть по конкретно оси Х или З то получился коечно похожее на Х...
|
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Оу, люди... Если вы не против... То у меня проблема аналогичного плана. Как сделать так чтобы один объект мог толкать другой? Ну например, как лифт поднимает игрока вверх. Вариант с проверкой коллизии и последующим движением игрока со скоростью лифта в соответствующем направлении не катит, так как возможно использование параллельно других типов объектов, типа каких нибудь поинтов висящих в воздухе. Да и вообще имхо маразм прицепиться к лифту сбоку и взмыть на небеса =^)
|
Ответ: EntityCollided, при движущихся навстречу друг другу объектах
Используйте физикс и не парьтесь зря)
Но если физикс совсем не хочется юзать, и круче лифтов ничего не надо, то можно посмотреть сюда - http://forum.boolean.name/showthread.php?t=38 УПД. Ссылка там битая, у Импера в личку попросите, если надо. |
Часовой пояс GMT +4, время: 21:11. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot