Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.08.2011, 14:17
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 1  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Выбор технологии для игры

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



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

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

Старый 30.08.2011, 15:43
Flashrunner вне форума Посмотреть профиль Отправить личное сообщение для Flashrunner Найти все сообщения от Flashrunner
  № 2  
Ответить с цитированием
Flashrunner

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

Старый 30.08.2011, 17:45
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 3  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
Шарик выглядит неестественно, плоский какой-то
Это графический макет.

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

Старый 30.08.2011, 17:51
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 4  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
вычислять положение шарика по его углу относительно центра + расстояние от центра
Это, на мой взгляд, лучшее решение. И да, вероятнее всего, это будет менее ресурсоемко.

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

Старый 30.08.2011, 18:45
Silicium вне форума Посмотреть профиль Отправить личное сообщение для Silicium Найти все сообщения от Silicium
  № 5  
Ответить с цитированием
Silicium
 
Аватар для Silicium

Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
Цитата:
Я бы описывал сектора примерно так:
- начальный угол
- конечный угол
- внутренний радиус
- внешний радиус
это не примерно, это довольно точно, и достаточно для описания сектора. А
Цитата:
вычислять положение шарика по его углу относительно центра + расстояние от центра
самое верное решение.

Старый 30.08.2011, 18:49
Genzo вне форума Посмотреть профиль Отправить личное сообщение для Genzo Посетить домашнюю страницу Genzo Найти все сообщения от Genzo
  № 6  
Ответить с цитированием
Genzo
 
Аватар для Genzo

блогер
Регистрация: Feb 2010
Адрес: MSK
Сообщений: 859
Записей в блоге: 3
Отправить сообщение для Genzo с помощью ICQ Отправить сообщение для Genzo с помощью Skype™
Еще вариант сделать масками или так сказать картами высот)) Это даст возможность делать не только круги , а произвольные области
__________________
Gamedev != Gaming (http://twitter.com/#!/GenzoDev). Don't forget to [+] if it works.

Старый 30.08.2011, 19:59
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 7  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Карта высот в виде картинки. Чтобы определить в какой области просто берём getPixel из под центра шарика. Цвет например по каналу RED указывает на номер области, по каналу блю на количество зарабатываемых очков.

Старый 31.08.2011, 23:09
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 8  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Помыкался я с этими масками и секторами и понял, что на перспективу не стоит с этим заморачиваться, т. к. планирую несколько режимов с разными объектами. Вот сейчас это 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 секторов.

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

Старый 01.09.2011, 00:02
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Применить else if
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 01.09.2011, 00:49
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 10  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Спасибо. Помогло

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:06.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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