|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
hittest и жизни
Решил в игрушку добавить жизни корабликам, но возник вопрос, как это сделать правильно, с учётом того, что кораблики у меня в динамическом массиве и жизней больше одной (с одной я вполне представляю как справится). Как запомнить какому кораблику сколько жизней осталось? Есть небольшой момент, кораблик например имеет 9 жизней, а разные снаряды отнимают различное количество хп, так что ещё по аналогии нужно ввести и для снарядов (если разобраться с кораблями, думаю сам смогу).
Как вариант вижу либо создание ещё одного динамического массива, куда влепить жизни, либо одного многомерного массива. Есть вариант ещё проще? Второе это хиттест. Не уверен, что мне подойдёт стандартный хиттест. Первое, мне нужен хиттест на различные фигуры: прямоугольник, точка, треугольник, шар. При этом нужен просчёт между кадров, что бы не было проскальзываний, второе нужно ввести параметр для разных типов столкновений, где-то отнимание жизней, где-то физика столкновения (ну физику я сам напишу). То, что для сложных формой объектов нужно подцепить невидимые простые фигурки я знаю. Ещё момент, у меня все объекты имеют параметр scaleX, scaleY, это может как-то отразиться? Все объекты свободно изменяют свой rotation. Уверен, что кто-то это уже делал, скиньте отрывки кода с небольшими комментариями, попробую разобраться Последний раз редактировалось neonoviiwolf; 22.08.2014 в 05:25. |
|
|||||
Есть вариант и проще и правильнее одновременно. Нужно создать класс кораблика, создать их экземпляры и хранить данные о каждом кораблике внутри
Привел бы пример, но с телефона не удобно По второму вопросу, есть способ, который называется теорема о разделяющец оси. Вот он и используется для таких вещей
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Apr 2014
Сообщений: 215
|
hitTestPoint позволяет задать точное вычисление соприкосновений, если не ошибаюсь...
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
delphic на сколько я помню, он позоляет расчитать соприкосновение в каждом кадре, но если объект движется слишком быстро, то он появляется в следующем кадре за объектом и столкновения не фиксируется. Я как-то находил урок как этого избежать
Добавлено через 1 минуту caseyryan спасибо, поищу как это сделать |
|
|||||
Регистрация: Jan 2011
Сообщений: 247
|
объект не может двигаться быстрее кадров т.к. только при переходе на след кадр идет след движение.
|
|
|||||
Тут дело не в скорости быстрее кадров, ведь если например у объекта скорость 50 пикселей в кадр, то он очень легко может пропустить обнаружение пересечения со стеной. Поэтому при больших скоростях можно попробовать разбивать будущий пройденый путь на части, например на 10 пикселей и проверять столкновения постепенно в цикле.
|
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
samana а мож мне не стоит по куче вычислений загоняться, а воспользоваться вашей идеей и использовать стандартный хиттест, только разбивать движение на более мелкие отрезки и просчитывать столкновение наперёд?
Последний раз редактировалось neonoviiwolf; 23.08.2014 в 13:02. |
|
|||||
Насчёт разбиения пути на части не уверен, но я рисовал линию от предыдущей точки до следующей и хиттестил её. Кажется, всё более-менее работало, хоть и немного криво, ибо на самом деле хиттестилась не линия, а прямоугольник, который она занимала.
(Сейчас умные дяди придут и наругают меня за глупую идею)
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Jun 2014
Сообщений: 558
|
Добавлено через 2 часа 22 минуты
приведите пример по возможности, что-то гугл мне пока не помог, наверное не так ищу |
|
|||||
Регистрация: Apr 2014
Сообщений: 215
|
Цитата:
хотя, наверное нет, это будет почти как хиттест..... Последний раз редактировалось delphic; 26.08.2014 в 15:53. |
Часовой пояс GMT +4, время: 04:21. |
|
« Предыдущая тема | Следующая тема » |
|
|