Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   hittest и жизни (http://www.flasher.ru/forum/showthread.php?t=208739)

neonoviiwolf 22.08.2014 05:12

hittest и жизни
 
Решил в игрушку добавить жизни корабликам, но возник вопрос, как это сделать правильно, с учётом того, что кораблики у меня в динамическом массиве и жизней больше одной (с одной я вполне представляю как справится). Как запомнить какому кораблику сколько жизней осталось? Есть небольшой момент, кораблик например имеет 9 жизней, а разные снаряды отнимают различное количество хп, так что ещё по аналогии нужно ввести и для снарядов (если разобраться с кораблями, думаю сам смогу).
Как вариант вижу либо создание ещё одного динамического массива, куда влепить жизни, либо одного многомерного массива. Есть вариант ещё проще?

Второе это хиттест. Не уверен, что мне подойдёт стандартный хиттест. Первое, мне нужен хиттест на различные фигуры: прямоугольник, точка, треугольник, шар. При этом нужен просчёт между кадров, что бы не было проскальзываний, второе нужно ввести параметр для разных типов столкновений, где-то отнимание жизней, где-то физика столкновения (ну физику я сам напишу). То, что для сложных формой объектов нужно подцепить невидимые простые фигурки я знаю. Ещё момент, у меня все объекты имеют параметр scaleX, scaleY, это может как-то отразиться? Все объекты свободно изменяют свой rotation.

Уверен, что кто-то это уже делал, скиньте отрывки кода с небольшими комментариями, попробую разобраться

caseyryan 22.08.2014 09:40

Есть вариант и проще и правильнее одновременно. Нужно создать класс кораблика, создать их экземпляры и хранить данные о каждом кораблике внутри
Привел бы пример, но с телефона не удобно

По второму вопросу, есть способ, который называется теорема о разделяющец оси. Вот он и используется для таких вещей

delphic 22.08.2014 10:29

hitTestPoint позволяет задать точное вычисление соприкосновений, если не ошибаюсь...

neonoviiwolf 22.08.2014 12:40

delphic на сколько я помню, он позоляет расчитать соприкосновение в каждом кадре, но если объект движется слишком быстро, то он появляется в следующем кадре за объектом и столкновения не фиксируется. Я как-то находил урок как этого избежать

Добавлено через 1 минуту
caseyryan спасибо, поищу как это сделать

GrafMine 22.08.2014 15:58

Цитата:

Сообщение от neonoviiwolf (Сообщение 1170992)
delphicто он появляется в следующем кадре за объектом и столкновения не фиксируется.

объект не может двигаться быстрее кадров т.к. только при переходе на след кадр идет след движение.

samana 22.08.2014 16:47

Цитата:

Сообщение от GrafMine (Сообщение 1171008)
объект не может двигаться быстрее кадров т.к. только при переходе на след кадр идет след движение.

Тут дело не в скорости быстрее кадров, ведь если например у объекта скорость 50 пикселей в кадр, то он очень легко может пропустить обнаружение пересечения со стеной. Поэтому при больших скоростях можно попробовать разбивать будущий пройденый путь на части, например на 10 пикселей и проверять столкновения постепенно в цикле.

neonoviiwolf 23.08.2014 02:04

samana а мож мне не стоит по куче вычислений загоняться, а воспользоваться вашей идеей и использовать стандартный хиттест, только разбивать движение на более мелкие отрезки и просчитывать столкновение наперёд?

ZackMercury 23.08.2014 05:48

Насчёт разбиения пути на части не уверен, но я рисовал линию от предыдущей точки до следующей и хиттестил её. Кажется, всё более-менее работало, хоть и немного криво, ибо на самом деле хиттестилась не линия, а прямоугольник, который она занимала.
(Сейчас умные дяди придут и наругают меня за глупую идею)

neonoviiwolf 23.08.2014 13:02

Добавлено через 2 часа 22 минуты
Цитата:

Сообщение от caseyryan (Сообщение 1170983)
Есть вариант и проще и правильнее одновременно. Нужно создать класс кораблика, создать их экземпляры и хранить данные о каждом кораблике внутри
Привел бы пример, но с телефона не удобно

приведите пример по возможности, что-то гугл мне пока не помог, наверное не так ищу

delphic 26.08.2014 11:08

Цитата:

Сообщение от neonoviiwolf (Сообщение 1171051)
Добавлено через 2 часа 22 минуты


приведите пример по возможности, что-то гугл мне пока не помог, наверное не так ищу

как вариант, если скорость большая, мне кажется лучше в enter frame прописать код слежение координат корабля и снаряда и если они равны то буууум... как то так....?

хотя, наверное нет, это будет почти как хиттест.....


Часовой пояс GMT +4, время: 16:16.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.