Всем привет! Столкнулся со следующей проблемой: багует способность логова орков Склад. Задумка была в следующем: забрать возможность атаковать у башен до тех пор, пока в них не будет заведен гарнизон. Для этого я набросал систему, которая устроена следующим образом:
Башням даны способности, сделанные на основе способностей дирижабля гоблинов Пассажир и Взять на борт. При старте карты выбираются все башни, которые расположены на карте, им дается способность на основе способности логова орков Склад, чтобы они не могли атаковать. При этом создается группа стрелков для каждой башни, сохраняется в хеш-таблицу по handleId, взятому от башни. Так же отлавливается строительство башен, я так же даю им способность склад, создаю и записываю в хэш группу. При взятии на борт(в башню) стрелка, способность склад удаляется, с хеш-таблицы загружается группа, в неё добавляется стрелок, группа перезаписывается в хеш. После этого отрабатывает функция, которая по количеству стрелков в группе определяет, какие способности у башни удалить, а какие дать. Если стрелок пока единственный в башне, башня получает возможность вести огонь(удаляется Склад), если берется на борт еще один стрелок, дается способность на основе ракет, которая позволяет атаковать сразу 2 цели, если еще один, то ракеты на 3 цели. Так вот проблемы начинаются, когда в башню заходит первый стрелок. При удалении способности склад, стрелок пропадает и башня становится пустой, но при этом она может атаковать, поскольку способность Склад была удалена. На этом проблемы не заканчиваются, если башню разрушить, она воспроизводит анимацию смерти, после чего воскресает, становясь не выделяемой и, как я предполагаю, неуязвимой! Потому что она продолжает вести огонь по противникам, но они на неё уже не реагируют. Я пробую удалять башню после смерти, перед этим очистив группу и затерев запись в хэше по handleId разрушенной башни, однако если попытаться завершить игру после этого, то она вылетает с fatal error. Если башню не удалять, то фатала не будет, но будет бессмертная невыделяемая башня. Так же я пока не придумал, как обойти этот момент с исчезновением первого стрелка, который заходит в башню.
Жду ваших советов, что можно придумать в сложившейся ситуации.
P.S. Упомяну так же, почему, собственно, используются способности на основе дирижабля, а не Боевая тревога, которая бы замечательно работала в паре со Складом, потому что есть много разных стрелков, а у Боевой тревоги можно указать лишь один вид боевой единицы.

Принятый ответ

Покопался еще и выяснил следующее: юнит, который пропадает, после удаления спобности Склад не мертв и не равен null => он жив и не удален из игры, хоть его и нельзя выделить на забинженную цифру отряда. Когда нажимаешь на цифру, камера переносится на башню, что логично, ведь он там, хоть его и не видно. Окей, я прописал в коде, чтобы после смерти башни моего тестового юнита показывало и мгновенно перемещало в позицию умирающей башни, а так же снимало с него паузу. Он становится видим и его даже можно выделить, однако выделение тут же сбрасывается. После того как я его показал, башня перестала "воскресать". Очень странно.

Случайно обнаружил следующее: просто-напросто не нужно удалять способность склад, когда юниты заходят в башню. Каким то образом Склад связана со способностью Взять на борт(По всей видимости механика у неё схожа с Боевой тревогой, раз обе способности берут юнитов внутрь юнита-обладателя способности). Теперь все работает корректно: Если юнит заходит в башню, то так как Склад на месте, юнит не пропадает, атака башне дается, если юнит выходит из башни, атака снова пропадает. Если башня разрушена - юнит появляется на её месте, никаких ошибок. Причем даже способность Пассажир не нужна, поскольку Склад тоже предоставляет места.
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
23
1 месяц назад
0
Лучше скинь наработку с такой системой, где можно будет ее потыкать :D
Сходу тяжело сказать что не так а создавать с нуля ее мало кто будет.
(если не хочешь скидывать свой проект, перенеси наработку на пустую карту)
Ответы (1)
0
29
1 месяц назад
Отредактирован nazarpunk
0
konvan5, лучше не всю наработку, а минимально воспроизводимый пример. Тобишь простой тригор - юнит заходит/выходит из башни: дать/забрать склад.
0
13
1 месяц назад
0
Или попробуй давать орб, который включит атаку 2, а в атаке 1 снять все цели для атаки
2
15
1 месяц назад
2
Покопался еще и выяснил следующее: юнит, который пропадает, после удаления спобности Склад не мертв и не равен null => он жив и не удален из игры, хоть его и нельзя выделить на забинженную цифру отряда. Когда нажимаешь на цифру, камера переносится на башню, что логично, ведь он там, хоть его и не видно. Окей, я прописал в коде, чтобы после смерти башни моего тестового юнита показывало и мгновенно перемещало в позицию умирающей башни, а так же снимало с него паузу. Он становится видим и его даже можно выделить, однако выделение тут же сбрасывается. После того как я его показал, башня перестала "воскресать". Очень странно.

Случайно обнаружил следующее: просто-напросто не нужно удалять способность склад, когда юниты заходят в башню. Каким то образом Склад связана со способностью Взять на борт(По всей видимости механика у неё схожа с Боевой тревогой, раз обе способности берут юнитов внутрь юнита-обладателя способности). Теперь все работает корректно: Если юнит заходит в башню, то так как Склад на месте, юнит не пропадает, атака башне дается, если юнит выходит из башни, атака снова пропадает. Если башня разрушена - юнит появляется на её месте, никаких ошибок. Причем даже способность Пассажир не нужна, поскольку Склад тоже предоставляет места.
Принятый ответ
Ответы (3)
0
23
1 месяц назад
0
Meddin, почитай комменты, как нам это понять что сделано и как сделано, ни кода, ни триггеров, ни карты нет чтобы потестить. Из головы не каждый поймет твою проблему. Скинь минимальную наработку, и тогда хотя бы посмотреть будет что.
1
15
1 месяц назад
1
konvan5, именно в ходе переноса в другую карту я и обнаружил кстати этот момент, о котором написал выше.
0
23
1 месяц назад
0
Meddin, как все легко и просто решилось :D
Чтобы оставить комментарий, пожалуйста, войдите на сайт.