Логика игры стенка на стенку

Программирование на Юнити.

Логика игры стенка на стенку

Сообщение vave 21 мар 2017, 15:09

очень нужен совет по логике ... задолбался переписывать ((
механизм игры из левого замка бегут мобв убивать правый - с правого мобы в левый есть башни итд...

вкрацце:
как было - на моба повешено 2 класса
Класс1 статы + методы (атака() получение_урона() смерть())
Класс2 логика (если я жив то найти живого врага -> подойти и заюзать его метод: получение_урона() и повторять пока я и он живы... )

оба класса кидал и на левых и на правых мобов (просто делал чтобы левые друг друга не видеи а видели только правых и наоборот)
все приекрасно работало до тех пор .. пока не появился новы тип башни и замок...

Замок может получать_урон() но не может атаковать();
Башня может атаковать() но не может получать_урон();

писать 3 разных класса на моба башню и замок я не хочу да и не могу - ибо в логике моба есть пункт - вызвать метод получать_урон() а у башни его нет...

я думал как - сделать базовый класс(ну или структуру(всеравно придется делать класс чтобы наследоваться а структуру привентит к нему)) например БазовыйДлВсехКласс() только со статами (статус, тип, скорость, здоровье (вообщем все что есть у всех 3х типов))
сделать 3 интерфейса Iатака, Iполучение_Урона, IСмерть, Iразрушение();
и наштопать 3 потомка наследуясь от базового класса
Моб: БазовыйДлВсехКласс, Iатака, Iполучение_Урона, IСмерть
Башня: БазовыйДлВсехКласс, Iатака, Iразрушение();
Замок: БазовыйДлВсехКласс, Iполучение_Урона, Iразрушение();

как тогда написать универсальную логику поведения а не писать 3 новых класса (подкласса)
мол если я Моб - и враг моб или замок - то вызвать у врага Iполучение_Урона();
ели я моб а враг башня игнорировать;
если я моб а враг замок бить в свое удовольствие пока не найду моба(приоритет);
--— придется писать 9 вариантов поведения.... а если я хочу добавит скажем моба который умеет убивать башни? или героя или башню которую можно атаковать?
этож ахренеть...

по этому наверо логичнее будет реализовать так - у каждого объекта (моб башня замок и тд - есть все наборы методов: БазовыйДлВсехКласс, Iатака, Iполучение_Урона, IСмерть, Iразрушение(); )
в класс добавить переменную тип и пасти ее в Класс2 логика....

тогда проблема с классом Класс2 логика - так как всеравно куча вариантов ....

мб сделать не 2мя а одним классом для удобства скажем partial, разнести логику и статы и действия на разные файлы и работать только с амому с собой самому себя бить и умирать и тд

но вот опять как реализовать кучу поведени?
сори что так много букофф - просто в тупике - 4й раз переписываю)
vave
UNец
 
Сообщения: 17
Зарегистрирован: 13 мар 2017, 06:00

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15