Это продолжение второго отчёта. прошлый отчёт закончился тем, что нужен алгоритм столкновения персонажа с блоками. И тут всё достаточно просто. Персонаж должен знать по какому направлению он должен двигаться. К счастью для нас этих направлений всего четыре и нам не нужно будет использовать косинусы и синусы для перемещений в вольном направлении. Поэтому рисунок слева демонстрирует следующее отношение между персонажем и бетонным блоком. Персонаж двигается по главной оси (относительно выбранного направления, ось X в данном случае выступает - главной), а переменная h - скажет персонажу на сколько ему нужно будет сдвинуться по перпендикулярной оси (в данном случае это ось Y).
Ну если проще говоря, то персонаж из за этой формулы преобретает сталкивающуюся поверхность - круг. Конечно можно использовать и ромб (линейное перемещение по второстепенной оси), но я усложнил себе жизнь и сделал круг. На этом этапе персонаж получил адекватное столкновение с миром и следующий ролик демонстрирует это.
Синий кубик показывает, то как персонажа видит матрица игрового мира. Тоесть ей всё равно какими средствами перемещается персонаж.
Затем я не много отвлёкся от програмирования и занялся концептартом. Со сценарием конечно будет очень туго. Так как для проработки вселенной в которой будет происходить игровой процесс, нужно много времени. Но идейка всё же есть и я пострараюсь её воплотить. Поэтому ролик-интрига к вашему вниманию. Коментов к нему не ждите, ибо спойлер сейчас может только навредить.
Ну если проще говоря, то персонаж из за этой формулы преобретает сталкивающуюся поверхность - круг. Конечно можно использовать и ромб (линейное перемещение по второстепенной оси), но я усложнил себе жизнь и сделал круг. На этом этапе персонаж получил адекватное столкновение с миром и следующий ролик демонстрирует это.
Синий кубик показывает, то как персонажа видит матрица игрового мира. Тоесть ей всё равно какими средствами перемещается персонаж.
Затем я не много отвлёкся от програмирования и занялся концептартом. Со сценарием конечно будет очень туго. Так как для проработки вселенной в которой будет происходить игровой процесс, нужно много времени. Но идейка всё же есть и я пострараюсь её воплотить. Поэтому ролик-интрига к вашему вниманию. Коментов к нему не ждите, ибо спойлер сейчас может только навредить.

классная система! сам придумал?
ОтветитьУдалитьхочется все же увидеть побольше кода, чтобы понять, как определяется, что то место, куда ты пытаешься сдвинуть круг, не занят еще одним блоком?
Ну я мухлёвщик немного =). Я знал, что блоки не будут стоять ближе чем одна условная единица мира, или блоки будут стоять в притык. Поэтому радиус круга тоже единица. А это гарантирут одновременную работу только с одним каким то блоком. При этом не важно как двигался персонаж.
ОтветитьУдалитьА система это рузельтат цепочки мыслей.
1. Нужно както попасть ме;ду двух блоков.
2. Значит нада насильно перса запихивать между блоков.
3. Если запихивать, то по какому алгоритму?
4. Линейный показался слишком простым, так как сталкивающаяся поверхность - ромб получится.
5. Значит круг, а как? И я нашёл уравнение круга: R*R = X*X + Y*Y