Select в RTS
|
|
LetsOffBrains | Дата: Четверг, 07 Июня 2012, 20:10 | Сообщение # 1 |
Project SoRDeLKa
Сейчас нет на сайте
| Вот, сам помучился и решил спросить. Как сделать выбор нескольких объектов по типу RTS? Объясню, но это читать не обязательно, если понятно. Зажимается левая кнопка мыши, в точке начала будет 1-ый угол "прямоугольника выбора" (SelectionBox), ведется в произвольную сторону, при этом противоположный угол тянется за мышью, при отпускании мыши выполняется действие: записываются массив по Y1 OID, по Y2 UID объектов попавших в этот прямоугольник. Позже можно правой кнопкой мыши приказать всем выбранным объектам перейти к позиции мыши с помощью поведения RTS.
Проблема в том, чтобы правильно записывать данные в массив, а потом их оттуда грамотно доставать, для передвижения. Есть кто умный или проинформированный?
P.S. Может что лишнего написано.
|
|
| |
ArmaggeDroid | Дата: Четверг, 07 Июня 2012, 20:19 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Объедини всех юнитов в семью, и по X-у записывай UID объекта (в цикле, по моему, нужно использовать .Count для определения их кол-ва). Доставай их оттуда тоже циклом, есстессно, предварительно записав куда-нибудь число объектов. И не забудь массив расширять, а то может всё не поместиться. Опыта у меня в создании RTS немного, но должно получиться.
QuaDreams Team
Сообщение отредактировал ArmaggeDroid - Четверг, 07 Июня 2012, 20:19 |
|
| |
allxumuk | Дата: Четверг, 07 Июня 2012, 20:24 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Вот исходник без применения массива, может этого хватит? Могу ещё и с массивом сделать.
Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.
|
|
| |
Vovik123 | Дата: Четверг, 07 Июня 2012, 20:33 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Я не в первый раз слышу про семью, но так и не понял. Семья - это Глобальная переменная?
|
|
| |
LetsOffBrains | Дата: Четверг, 07 Июня 2012, 20:34 | Сообщение # 5 |
Project SoRDeLKa
Сейчас нет на сайте
| А если будут взаимоисключаемые типы юнитов? Например здание нельзя выбрать вместе с солдатами.)
Семьи - это объекты, объединенные в одну группу "Семью". Типа можно сделать 2 типа врагов и отдельно для каждого делать действие попадания в него пули или же можно добавить их в семью и попадание пули соотносить с группой, что уменьшает объем "кода".
Сообщение отредактировал LetsOffBrains - Четверг, 07 Июня 2012, 20:36 |
|
| |
allxumuk | Дата: Четверг, 07 Июня 2012, 20:38 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| Quote (Vovik123) Семья - это Глобальная переменная? Нет, семья - это группа разных объектов, к которым можно обращаться одновременно не уточняя к какому именно. Допустим есть у тебя Sprite1 и Sprite2, они в семействе Family, к ним можно применить общее событие, например: Family.On collision with another object - будет проверять не столкнулся ли Sprite1 или Sprite2 с чем-то.
LetsOffBrains, вот с массивом что-то геморройно получается. В принципе и без него работает, так ли он необходим?
----------------------
Quote (LetsOffBrains) А если будут взаимоисключаемые типы юнитов? Например здание нельзя выбрать вместе с солдатами.) Но эта проблема остаётся и с массивом, нужно как-то дополнительно проверять или выбирать строения только по клику.
Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.
|
|
| |
LetsOffBrains | Дата: Четверг, 07 Июня 2012, 20:40 | Сообщение # 7 |
Project SoRDeLKa
Сейчас нет на сайте
| Массив не нужен, раз уж без него можно обойтись, просто думал, что именно так нужно это решать.
|
|
| |
Vovik123 | Дата: Четверг, 07 Июня 2012, 21:47 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| А как объединять в семьи? Так мне на будущие...
|
|
| |
allxumuk | Дата: Четверг, 07 Июня 2012, 22:09 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Vovik123, в свойствах объекта (слева), пункт Groups, в нём пункт Families. Жмёшь Add и выбираешь существующую семью или создаёшь новую.
Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.
|
|
| |