Skip to content

Conversation

Sergwest585
Copy link
Contributor

Исправлена и оптимизирована проверка коллизии:

  • В blocks_agent.hpp добавлен новый метод is_obstacle_with, который проверяет пересечение чанков не с точкой, а с коробкой (путём расширения всех хитбоксов чанка на размеры коробки). Это позволило снизить количество проверок коллизии с 512 до 1-8 на одну коробку 1на1на1

  • В связи с этим в PhysicsSolver.cpp все проверки перенесены на новый метод. Так же код был отрефакторен для большей читаемости. После проверки и сравнения старого и нового методов новых багов не нашёл.

  • Соответственно исправлен баг, когда игрок мог проходить сквозь тонкую преграду, если её хитбокс меньше 1/8 хитбокса игрока; Исправленны неточные вычисления краёв блоков, когда игрок проваливался сквозь при ходьбе на корточках по краям; Убранны неточности связанные с преобладанием +x+z координат при определение границ; Ходьба на корточках имеет теперь чёткий отступ от края блока

  • Желательно закончить PhysicsSolver и с помощью рейкаста находить точку пересечения игрока и мира, чтобы первый не проходил в глубь при низком fps.

@Sergwest585
Copy link
Contributor Author

приближаю логику движка к quake-like.
Надеюсь эти провалы у краёв не были фитчей, а то из-за них по сути и начал делать это

@MihailRis
Copy link
Owner

Отлично. Только не работает механика высоты шага (stepHeight). В базовом паке можно тестировать на base:lightbulb.

@Sergwest585
Copy link
Contributor Author

заметил, сейчас переписываю

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants