![]() |
Проблемы с коллизией
Добрый день всем!
Недавно начал программить на блице. Я зык хороший, но у меня возникла проблема с коллизией. В общем, я, как обычно, вношу мяч и окружающий мир в коллизию группу. Затем идет проверка, нет ли коллизии, и если коллизии нет, мяч падает вниз(увеличивается скорость падения). Если коллизия есть, скорость падения умножается на -0.75. Затем позиция мяча по y уменьшается на величину скорость падения. Теперь сделаем под мячом, например, кубик. Компилируем. Мяч падает и отскакивает. Все работает. Автор радуется. Но если придать кубику двивежие по оси y, мяч просто просачивается сквозь кубик. Что не так? Еще реализовано, что при нажатии пробела и присутствии коллизии мяч подпрыгивает (скорость падения=-1). Но он будет прыгать даже если коснуться вертикальной стены. Эдакий спайдермен =( Как определить, когда коллизия происходит с полом, а когда со стеной? Ответьте пожалуйста на вопросы. С уважением, PassCall |
Ответ: Проблемы с коллизией
Коллизии взаимно движущихся предметов не считаются.
Но с этим можно бороться. Например есть группа объектов входящих в группу коллизий А и есть группа коллизий Б. Тогда передвигаем только объекты группы А, вызываем CaptureWorld для фиксации их положения для физ. движка. Двигаем объекты группы Б, вызываем UpdateWorld. Должно работать. И да незабыть назначить взаимные коллизии. А -> Б и Б -> А Т.к. коллизии однонаправленные. |
Ответ: Проблемы с коллизией
Цитата:
Решения!
|
Ответ: Проблемы с коллизией
Фишка в том, что если ПОДНИМАТЬ кубик, то коллизия работает нормально, но если ОПУСКАТЬ, то мяч сразу же просачивается.
|
Ответ: Проблемы с коллизией
Часть кода моей разработки "3D Platformer"
![]() видео демонстрация правильней будет: запретить управлять перемещением, когда игрок в воздухе Цитата:
В моём коде я приделал перемещение туда-сюда по Y одному кубу.. Когда игрок спускается вместе с кубиком - всё норм. Когда кубик поднимается (против гравитации игрока) - игрок падает ("просачивается сквозь кубик") В стандартном примере "Dynamic Collision Lib.bb" с этим всё впорядке. (там "соединяют парами" взаимно двигающиеся объекты. Function DCO_SetPair) |
Ответ: Проблемы с коллизией
CollisionNY( entity, collision_number )
|
Часовой пояс GMT +4, время: 21:31. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot