У меня с трудом обнаружено обнаружение столкновения по опыту. Я делаю коробку, à la Minecraft, и нахожусь на стадии внедрения обнаружения столкновений.C++ 3D идеальное обнаружение столкновений
Я сделал оси x и y, так как все состоит из кубов, я хотел бы сделать свой собственный детектор столкновения и сделать его максимально легким.
Есть ли способ совершать «пиксельные совершенные» столкновения, то есть когда ограничивающая коробка (или круг) игрока касается коробки, которая регистрируется как столкновение? Сейчас это то, что я сделал:
if(-TOUCH_DISTANCE-1 < yPlayer-yBox && yPlayer-yBox < TOUCH_DISTANCE-1)
{
collisionNorth = true;
}
if(-TOUCH_DISTANCE+1 < yPlayer-yBox && yPlayer-yBox < TOUCH_DISTANCE+1)
{
collisionSouth = true;
}
Это в основном обнаруживает столкновение в пределах определенного края и это означает, что ошибки, которые я не люблю :(Обратите внимание на +/- 1, которая частично компенсирует «столкновения стены. «на соответствующую сторону коробки.
Это работает на более низких скоростях, но когда есть какое-то действие (когда я взламываю переменную скорости), столкновение не может быть обнаружено больше, так как я иду слишком быстро и прохожу вправо через куб ... Есть ли способ сделать это wallhax0r доказательством?
Это особенно раздражает ось z, когда игрок падает с высокой скоростью и даже при определении респектабельного поля столкновения он в конечном счете выглядит противным (игрок наполовину похоронен).
Ну, там код на 2 дня стоит. Не только непрерывная модель является точной, но и дешевле (в данном случае). – Solenoid