|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.06.2015, 09:11 | #1 |
Пользователь
Регистрация: 26.09.2009
Сообщений: 22
|
Сталкивание объектов (много)
Пишу игру, и мне нужно узнать наложился ли shape1 на shape2, если быть точным, то наложился ли shape1 на любой другой shape, а их у меня порядка 10тысяч.
10 тысяч шейпов = 9МБ памяти оперативы, в принципе мало. но вот так обработать столкновение? в частности, мне нужно "игроком" поглотить "бусинки". Помимо этого игроков может быть несколько. есть у кого нибудь какие нибудь соображения на этот счет? может есть такой метод "задел", а дальше уже по формулам площадей посчитать процент покрытия "съел или не съел". Спрашиваю, потому что помню когда то давно в логомирах был такой метод. заранее спасибо, если есть какие-то дельные соображения, пожалуйста напишите в скайпе dolgushinlev или вичате, вичат такой же. |
28.06.2015, 13:03 | #2 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Можно столкновение по областям объектов проверять
Проверка пересечений 2х областей объектов если true то объекты столкнулись эту функцию в любом месте проверки в игре применяешь. Это самый простой способ, с областями надеюсь знакомы. Каждый объект имеет область или же состоит из множества областей, вот их то и задаешь для объекта. Я этот код для своей игре применял. Код:
Код:
Код:
Последний раз редактировалось Aliens_wolfs; 28.06.2015 в 21:25. |
28.06.2015, 14:20 | #3 |
Пользователь
Регистрация: 26.09.2009
Сообщений: 22
|
т.е. по факту все равно перебор по всем возможным объектам выходит. придется делить карту на сектора дабы уменьшить количество переборов.
спасибо за совет, если сработает ClientRect то будет гораздо проще чем сверять по координатам. А вот интересно, метод ClientRect работает быстрее чем сверить по 4 точкам? дабы ускорить процесс, и не загружать клиент, можно с начало сверить так, а при "столкновении" проверять на % поглощения. |
28.06.2015, 14:55 | #4 |
Форумчанин
Регистрация: 16.12.2009
Сообщений: 902
|
Вернее пробуй BoundsRect это и есть 4 точки региона объекта это квадрат, а ClipRect это помойму к общему региону привязка. Если у тебя сложные объекты тогда нужно систему координат применять но это сложнее.
По типу объекта можно проверять на % поглощение, тип объекта можно в Tag объекта хранить, но это простой способ. Например Задаем в начале тип объектов Код:
Код:
Код:
Либо в Tag можно хранить указатель на нужный буфер с нужными значениями например Код:
Код:
Код:
Код:
Последний раз редактировалось Aliens_wolfs; 28.06.2015 в 21:20. |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C# сталкивание объектов | MyXa | C# (си шарп) | 2 | 03.11.2012 00:05 |
Сталкивание Image | SnJon | Общие вопросы Delphi | 4 | 29.12.2011 11:29 |
DelphiX не сталкивание объектов | Virus191288 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 16 | 04.02.2010 16:29 |
Много объектов. | Манжосов Денис :) | Общие вопросы Delphi | 5 | 04.09.2008 22:34 |