вторник, 20 декабря 2011 г.

Отчёт № 2,5 =)

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

2 комментария:

  1. классная система! сам придумал?
    хочется все же увидеть побольше кода, чтобы понять, как определяется, что то место, куда ты пытаешься сдвинуть круг, не занят еще одним блоком?

    ОтветитьУдалить
  2. Ну я мухлёвщик немного =). Я знал, что блоки не будут стоять ближе чем одна условная единица мира, или блоки будут стоять в притык. Поэтому радиус круга тоже единица. А это гарантирут одновременную работу только с одним каким то блоком. При этом не важно как двигался персонаж.

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

    ОтветитьУдалить