Добавлен Meddin
Всем привет! Столкнулся со следующей проблемой: багует способность логова орков Склад. Задумка была в следующем: забрать возможность атаковать у башен до тех пор, пока в них не будет заведен гарнизон. Для этого я набросал систему, которая устроена следующим образом:
Башням даны способности, сделанные на основе способностей дирижабля гоблинов Пассажир и Взять на борт. При старте карты выбираются все башни, которые расположены на карте, им дается способность на основе способности логова орков Склад, чтобы они не могли атаковать. При этом создается группа стрелков для каждой башни, сохраняется в хеш-таблицу по handleId, взятому от башни. Так же отлавливается строительство башен, я так же даю им способность склад, создаю и записываю в хэш группу. При взятии на борт(в башню) стрелка, способность склад удаляется, с хеш-таблицы загружается группа, в неё добавляется стрелок, группа перезаписывается в хеш. После этого отрабатывает функция, которая по количеству стрелков в группе определяет, какие способности у башни удалить, а какие дать. Если стрелок пока единственный в башне, башня получает возможность вести огонь(удаляется Склад), если берется на борт еще один стрелок, дается способность на основе ракет, которая позволяет атаковать сразу 2 цели, если еще один, то ракеты на 3 цели. Так вот проблемы начинаются, когда в башню заходит первый стрелок. При удалении способности склад, стрелок пропадает и башня становится пустой, но при этом она может атаковать, поскольку способность Склад была удалена. На этом проблемы не заканчиваются, если башню разрушить, она воспроизводит анимацию смерти, после чего воскресает, становясь не выделяемой и, как я предполагаю, неуязвимой! Потому что она продолжает вести огонь по противникам, но они на неё уже не реагируют. Я пробую удалять башню после смерти, перед этим очистив группу и затерев запись в хэше по handleId разрушенной башни, однако если попытаться завершить игру после этого, то она вылетает с fatal error. Если башню не удалять, то фатала не будет, но будет бессмертная невыделяемая башня. Так же я пока не придумал, как обойти этот момент с исчезновением первого стрелка, который заходит в башню.
Жду ваших советов, что можно придумать в сложившейся ситуации.
Башням даны способности, сделанные на основе способностей дирижабля гоблинов Пассажир и Взять на борт. При старте карты выбираются все башни, которые расположены на карте, им дается способность на основе способности логова орков Склад, чтобы они не могли атаковать. При этом создается группа стрелков для каждой башни, сохраняется в хеш-таблицу по handleId, взятому от башни. Так же отлавливается строительство башен, я так же даю им способность склад, создаю и записываю в хэш группу. При взятии на борт(в башню) стрелка, способность склад удаляется, с хеш-таблицы загружается группа, в неё добавляется стрелок, группа перезаписывается в хеш. После этого отрабатывает функция, которая по количеству стрелков в группе определяет, какие способности у башни удалить, а какие дать. Если стрелок пока единственный в башне, башня получает возможность вести огонь(удаляется Склад), если берется на борт еще один стрелок, дается способность на основе ракет, которая позволяет атаковать сразу 2 цели, если еще один, то ракеты на 3 цели. Так вот проблемы начинаются, когда в башню заходит первый стрелок. При удалении способности склад, стрелок пропадает и башня становится пустой, но при этом она может атаковать, поскольку способность Склад была удалена. На этом проблемы не заканчиваются, если башню разрушить, она воспроизводит анимацию смерти, после чего воскресает, становясь не выделяемой и, как я предполагаю, неуязвимой! Потому что она продолжает вести огонь по противникам, но они на неё уже не реагируют. Я пробую удалять башню после смерти, перед этим очистив группу и затерев запись в хэше по handleId разрушенной башни, однако если попытаться завершить игру после этого, то она вылетает с fatal error. Если башню не удалять, то фатала не будет, но будет бессмертная невыделяемая башня. Так же я пока не придумал, как обойти этот момент с исчезновением первого стрелка, который заходит в башню.
Жду ваших советов, что можно придумать в сложившейся ситуации.
P.S. Упомяну так же, почему, собственно, используются способности на основе дирижабля, а не Боевая тревога, которая бы замечательно работала в паре со Складом, потому что есть много разных стрелков, а у Боевой тревоги можно указать лишь один вид боевой единицы.
Принятый ответ
Покопался еще и выяснил следующее: юнит, который пропадает, после удаления спобности Склад не мертв и не равен null => он жив и не удален из игры, хоть его и нельзя выделить на забинженную цифру отряда. Когда нажимаешь на цифру, камера переносится на башню, что логично, ведь он там, хоть его и не видно. Окей, я прописал в коде, чтобы после смерти башни моего тестового юнита показывало и мгновенно перемещало в позицию умирающей башни, а так же снимало с него паузу. Он становится видим и его даже можно выделить, однако выделение тут же сбрасывается. После того как я его показал, башня перестала "воскресать". Очень странно.
Случайно обнаружил следующее: просто-напросто не нужно удалять способность склад, когда юниты заходят в башню. Каким то образом Склад связана со способностью Взять на борт(По всей видимости механика у неё схожа с Боевой тревогой, раз обе способности берут юнитов внутрь юнита-обладателя способности). Теперь все работает корректно: Если юнит заходит в башню, то так как Склад на месте, юнит не пропадает, атака башне дается, если юнит выходит из башни, атака снова пропадает. Если башня разрушена - юнит появляется на её месте, никаких ошибок. Причем даже способность Пассажир не нужна, поскольку Склад тоже предоставляет места.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Сходу тяжело сказать что не так а создавать с нуля ее мало кто будет.
(если не хочешь скидывать свой проект, перенеси наработку на пустую карту)
Отредактирован nazarpunk