Я делаю игру, которая включает в себя элементы геймплея "падающий блок". Проблема в том, что я не совсем уверен, как сделать так, чтобы блоки привязывались к какой-то сетке, другими словами, я не уверен, как он выберет ближайшую ячейку к своей позиции.
Блоки не привязываются непрерывно к сетке (т.е. они подвержены гравитации). Какие-нибудь советы?
mathematics
grid
JesseTG
источник
источник
В моем быстром исследовании, когда вы привязываете некоторую геометрию к сетке:
Пока все вершины вашего многоугольника (в его конечной позиции) совпадают с вершинами сетки (другими словами, если то, что вы пытаетесь привязать, хорошо вписывается в сетку), то
Вы можете привязать любую из вершин полигона к ближайшей вершине сетки и применить тот же перевод ко всем остальным. Вы всегда будете в конечном итоге с той же позиции в результате.
Это означает, что вы можете просто выбрать вершину и округлить ее координаты, или, если вы используете сетку со стороной, превышающей одну единицу, используйте выражение Остина:
cube.Position.XorYorZ = Math.round(cube.Position.XorYorZ / gridCubeWidth) * gridCubeWidth;
источник
Math.ceil дает правильное чувство, чтобы привязать блоки к правильным сеткам
источник