![]() |
Работа в классе со своими же экземплярами
Вопрос, как в классе задать функцию которая заставляла бы объекты данного класса и всех подклассов избегать встречи друг с другом на сцене, например при сокращении дистанции друг с другом ближе чем на 30 пикселей 1 объект отдалялся бы от другого. (что бы враги друг в друге не стояли) Не представляю как обратится к самим себе во множественном виде.
|
Единственный вариант, который приходит в голову, использовать статический вектор в который добавлять элементы при добавлении на stage и удалять при удалении со stage. Соответственно нужны статическая функция и статический таймер.
Но я рекомендовал бы пересмотреть архитектуру и повесить внешний контроллер, так как этот подход ужасен. |
Вообще не понятно, я походу дела далек от этого еще) Надеялся что есть вариант обратится ко всем внутренним экземплярам и дать команду через условие сближения.
|
Исходники я свои к сожалению потерял, но скажу как бы делал сам:
1. Ищете в просторах сети демку где какой либо объект движется за курсором мыши, таких думаю полно демок и изучаете код 2. Добавляете все ваши объекты в массив и на сцену 3. Пробегаете по массиву и определяете дистанцию между каждыми 2 объектами(что то подобное должно быть в демке из пункта 1) 4. Если расстояние меньше 30 пикселей, то опять же обращаетесь к коду демки из пункта 1(и делаете удаление объектов друг от друга) |
По началу я добавлял все эти объекты в массив давая им Instance Name, но когда я понял что если не давать им имена и просто вытаскивать на сцену то можно ими управлять не добавляя в массив.. этот вариант я оставил т.к. он меньше грузит комп. Вот почему я хочу узнать как обратится к своим экземплярам прямо в классе... у них нет имен, они просто стоят на сцене, так я не смогу добавить их в массив.
|
Статичный массив делайте в классе, и уже в него добавляйте экземпляр
Если не прав пусть кто нибудь поправит! сам такого не делал |
Статичный массив. Я бы разбил поле на квадраты равные примерно минимальному расстоянию между объектами, ну или что-то вроде того. Далее при перемещении или добавлении объекта сверялся с занятостью этих квадратов, а там уже можно и развести объекты по свободным к примеру соседним.
|
есть такой ответ.
|
| Часовой пояс GMT +4, время: 17:12. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.