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

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

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

Регистрация: Feb 2012
Сообщений: 212
По умолчанию Выборка объектов для проверки столкновения

Здравствуйте, имеется массив объектов состоящий из пуль и игроков. Нужно проверять пули на столкновение с игроками, но не пули с пулями.
Можно проверять тип объектов в каждой паре. Скажем, Игрок-Пуля, Пуля-Стена будут проверяться, а Пуля-Пуля нет. Но на выяснение типа объекта будет тратится драгоценное процессорное время, да и большом количестве типов объектов условия быстро разрастутся.
Хотелось бы узнать как решается подобная проблема в других играх.

Старый 08.06.2014, 17:16
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 2  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Может я чего-то недопонял, но ответ же очевиден - создать два массива...

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

Регистрация: Feb 2012
Сообщений: 212
LifeIsRhythm а если у нас будет не две группы объектов а несколько? Скажем, две команды игроков - красная, синяя и ландшафт, тогда пары для проверки будут выглядеть как:
пули красной команды - игроки зеленой команды
пули зеленой команды - игроки красной команды
все игроки - детали ландшафта
Пожалуй вы правы и это единственный нормальный способ.

Старый 10.06.2014, 21:36
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 4  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Судя по словам о двух командах, Вы делаете онлайн игру, которых я ещё не делал и посоветовать ни чего не могу. Это Вам нужно у опытных спрашивать, как проверять столкновение с пулями.
И я вспоминаю игры-шутеры в которые играл и пули я там не помню... Пуль наверное вообще быть не должно.
Есть дуло, которое имеет изменяемый наклон, есть конец сцены или конец уровня, то есть расстояние и есть сила... пробивная сила и скорость. И вот этих данных должно хватить, чтобы при выстреле рассчитать вектор-прямую и проверить по известным координатам всех объектов с чем пересекается.
Вектор этот пересекся и сразу измеряем длину и создаем вектор этой длины и по нему расчитываем анимацию, какого-нибудь искажения пространства-волны и как эта анимация доиграет до конца, включаем анимацию у объекта с чем пересекся вектор, брызги мозгов, крови и кишок.

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

Регистрация: Mar 2013
Адрес: Вне пространства.
Сообщений: 566
Отправить сообщение для Bletraut с помощью ICQ Отправить сообщение для Bletraut с помощью Skype™
Цитата:
Но на выяснение типа объекта будет тратится драгоценное процессорное время,
Думаю от этого фпс не сильно упадет.

Цитата:
объектов условия быстро разрастутся.
А как ты хотел? В любом случае придётся писать кучу условий, ведь реакция пули об стену и реакция пули об персонажа разная. Как вариант, можешь добавить интерфейс, например, IToucheable, но смысла делать подобное я не вижу. Либо второй вариант: все объекты наследуются от определенного класса GameObject, в котором есть свойство toucheable, которое отвечает за возможность сталкиваться с другими объектами. Ну и еще как вариант можно добавить список исключений в этот же класс GameObject, когда объект будет проверять другой объект на его наличие в списке исключений и дальше будет делать выводы сталкиваться с ним или нет.
__________________
Я заклинаю вас действовать иначе.

Старый 11.06.2014, 11:41
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 6  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Используйте Nape, там есть возможность задавать типы объектам и обрабатывать взаимодействие только между нужными типами. Вообще там очень широкий функционал в этом плане. Есть поддержка и для быстро движущихся объектов.

Делать вручную не советую, много времени потратите.
__________________
Дети не должны знать о своих родителях

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
и обрабатывать взаимодействие только между нужными типами
Не совсем. Там не по типам столкновения проверяются, и по фильтрам. Одинаковые объекты могу не сталкиваться друг с другом, если это указано в их фильтрах.
А так да, лучше использовать Nape. Он наиболее прост в освоении, по сравнению с box2d, к примеру, и довольно шустрый.
Цитата:
как решается подобная проблема в других играх.
Никто не используется стандартный флешевский hitTestObject, так как он проверяет только баундинг боксы на пересечения. Ни о какой точности там речи идти не может. Используют SAT (separating axis theoreme), теорему о разделяющей оси, либо о разделяющей плоскости, если речь о 3D
__________________
Ко мне можно и нужно обращаться на ты)

Старый 11.06.2014, 12:27
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 8  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Цитата:
Используют SAT (separating axis theoreme)
А это название теоремы или фреймворка?

Старый 11.06.2014, 13:59
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 9  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
LifeIsRhythm, вы под чем?)
__________________
There is no thing in this world that is not simple.

Старый 11.06.2014, 14:23
LifeIsRhythm вне форума Посмотреть профиль Отправить личное сообщение для LifeIsRhythm Найти все сообщения от LifeIsRhythm
  № 10  
Ответить с цитированием
LifeIsRhythm
[+1 22.07.14]
[+4 12.08.14]
[+1 09.02.15]

Регистрация: May 2014
Сообщений: 182
Цитата:
LifeIsRhythm, вы под чем?)
В смысле под чем?

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

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

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


 


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


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