![]() |
|
||||||||||
|
|
|
|||||
|
Задумал простенькую физическую игрушку, но полный профан в играх, а хочется попробовать. Шарик будет кататься по кругу.
Попадая на одну из 12 зон начисляются баллы. Как лучше слушать реакцию соприкосновения шарика и областей? Пока только hitTestObject использую, но может есть что получше? Графика будет растровая, т. к. не использую Flash IDE. |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 47
|
Почитайте про сектора, сегменты. Уверен найдете какую-нибудь интересную формулу.
Например, можно вычислять положение шарика по его углу относительно центра + расстояние от центра. Так же и сектора описывать, т.е занимаемый ими угол (например, верхний красный сектор - это от -PI/2 до PI/2) и верхний и нижний радиус. P.S. Шарик выглядит неестественно, плоский какой-то |
|
|||||
|
Цитата:
PS Я бы описывал сектора примерно так: - начальный угол - конечный угол - внутренний радиус - внешний радиус
__________________
...вселенская грусть |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Цитата:
Цитата:
|
|
|||||
|
Еще вариант сделать масками или так сказать картами высот)) Это даст возможность делать не только круги , а произвольные области
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works. |
|
|||||
|
Карта высот в виде картинки. Чтобы определить в какой области просто берём getPixel из под центра шарика. Цвет например по каналу RED указывает на номер области, по каналу блю на количество зарабатываемых очков.
__________________
if (love is true) break my.heart; |
|
|||||
|
Помыкался я с этими масками и секторами и понял, что на перспективу не стоит с этим заморачиваться, т. к. планирую несколько режимов с разными объектами. Вот сейчас это 12 секторов, а может быть 24 или 4. И таких вариантов почти десяток.
Т. к. работаю в Flex, то мне удобнее насоздавать десять состояний с разными картинками PNG и проверять коллизии с помощью hitTestObject. Вот так например я сделал для данной картинки: 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; } Результат устраивает, но как выполнять такую проверку в общем случае, когда картинок сотня и разбиты они по состояниям? Что-то ничего в голову не приходит... |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|