Мне трудно учиться обнаружению столкновений на собственном опыте. Я делаю коробочную игру, как Minecraft, и нахожусь на стадии реализации обнаружения столкновений.
Я сделал оси 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, когда игрок падает с большой скоростью и даже при определении приемлемого запаса столкновения это в конечном итоге будет выглядеть отвратительно (игрок наполовину похоронен).