Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Выбор технологии для игры (http://www.flasher.ru/forum/showthread.php?t=166128)

Astraport 30.08.2011 14:17

Выбор технологии для игры
 
Вложений: 1
Задумал простенькую физическую игрушку, но полный профан в играх, а хочется попробовать. Шарик будет кататься по кругу.

http://www.flasher.ru/forum/attachme...1&d=1314695537

Попадая на одну из 12 зон начисляются баллы.
Как лучше слушать реакцию соприкосновения шарика и областей? Пока только hitTestObject использую, но может есть что получше?

Графика будет растровая, т. к. не использую Flash IDE.

Flashrunner 30.08.2011 15:43

Почитайте про сектора, сегменты. Уверен найдете какую-нибудь интересную формулу.
Например, можно вычислять положение шарика по его углу относительно центра + расстояние от центра. Так же и сектора описывать, т.е занимаемый ими угол (например, верхний красный сектор - это от -PI/2 до PI/2) и верхний и нижний радиус.
P.S. Шарик выглядит неестественно, плоский какой-то

Astraport 30.08.2011 17:45

Цитата:

Шарик выглядит неестественно, плоский какой-то
Это графический макет.

Все же все эти вычисления не будут ли более ресурсоемкими, чем hitTest?

gloomyBrain 30.08.2011 17:51

Цитата:

вычислять положение шарика по его углу относительно центра + расстояние от центра
Это, на мой взгляд, лучшее решение. И да, вероятнее всего, это будет менее ресурсоемко.

PS
Я бы описывал сектора примерно так:
- начальный угол
- конечный угол
- внутренний радиус
- внешний радиус

Silicium 30.08.2011 18:45

Цитата:

Я бы описывал сектора примерно так:
- начальный угол
- конечный угол
- внутренний радиус
- внешний радиус
это не примерно, это довольно точно, и достаточно для описания сектора. А
Цитата:

вычислять положение шарика по его углу относительно центра + расстояние от центра
самое верное решение.

Genzo 30.08.2011 18:49

Еще вариант сделать масками или так сказать картами высот)) Это даст возможность делать не только круги , а произвольные области

Rzer 30.08.2011 19:59

Карта высот в виде картинки. Чтобы определить в какой области просто берём getPixel из под центра шарика. Цвет например по каналу RED указывает на номер области, по каналу блю на количество зарабатываемых очков.

Astraport 31.08.2011 23:09

Помыкался я с этими масками и секторами и понял, что на перспективу не стоит с этим заморачиваться, т. к. планирую несколько режимов с разными объектами. Вот сейчас это 12 секторов, а может быть 24 или 4. И таких вариантов почти десяток.

Т. к. работаю в Flex, то мне удобнее насоздавать десять состояний с разными картинками PNG и проверять коллизии с помощью hitTestObject. Вот так например я сделал для данной картинки:
Код AS3:

if(pend.hitTestObject (bl1)||pend.hitTestObject (br1)){
                                        count -= 1;
                                }
                                if(pend.hitTestObject (bl2)||pend.hitTestObject (br2)){
                                        count -= 2;
                                }
                                if(pend.hitTestObject (bl3)||pend.hitTestObject (br3)){
                                        count -= 3;
                                }
                                if(pend.hitTestObject (rl1)||pend.hitTestObject (rr1)){
                                        count += 1;
                                }
                                if(pend.hitTestObject (rl2)||pend.hitTestObject (rr2)){
                                        count += 2;
                                }
                                if(pend.hitTestObject (rl3)||pend.hitTestObject (rr3)){
                                        count += 3;
                                }

Где pend - это шарик, а bl1, bl2 и т. д. это id всех моих 12 секторов.

Результат устраивает, но как выполнять такую проверку в общем случае, когда картинок сотня и разбиты они по состояниям? Что-то ничего в голову не приходит...

dimarik 01.09.2011 00:02

Применить else if

Astraport 01.09.2011 00:49

Спасибо. Помогло:)

Меня интересует как лучше обращаться к PNG прописанным в разных состояниях.


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

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