Дело не в камере, а как раз в высокой скорости, из-за которой персонаж пролетает все блоки, «не успев» проверить коллизию с ними. И тут, да, либо ограничивать скорость, либо проверять столкновения иными способами, учитывающими скорость.
Еще один баг нашел, можно бесконечное количество кубиков ставить, если стать в двух (вроде) блоках от поставленного блока, то можно на его место ставить еще блоки сколько угодно
Было интересно посмотреть как на js делают подобные вещи и наткнулся на проект: https://github.com/dissimulate/Clarity. Небольшой объем исходников и их простота позволяет за пару часов понять 99% кода.
Разработка 2D песочницы на JavaScript с нуля