|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
||||||||||||||||
Попытка написать машину состояний(персонажа,врагов и прочее) - RPG17.02.2018, 01:47. Показов 2837. Ответов 8
Метки нет (Все метки)
Всем привет, начал заниматься в последнее время рефакторингом свое кода. И понял, что без GameManager'ов никак не обойтись. Пока написал свой небольшой менеджер по вводу, он вообще не блещет ничем примечательным, поэтому хочется показать и спросить, а как лучше сделать, если не так? Так же начал писать основной класс для состояний - от которого будут наследоваться такие классы как PlaeyrStates, EnemyStates и прочее. Основа выглядит так:
Добавлено через 5 минут А теперь более менее, но все равно хочется довести до ума это дело. Основная задача - получить доступ к вводу игрока в любом скрипте без проблема и так же быть с состояниями, но там можно и через getComponent<>(); Мне допустим для аниматора удобно использовать состояния, просто запросил булеву переменную по имени состояния - и поставил ее в аниматор. Так же и для различных функции это мне нужно. Вот InputManager - сразу говорю, что он почти, что нет. Но им я пользуюсь так - ищу его по имени Find("InputManager") - можно сделать как-то по-другому? Потому что инпут мне везде нужен, допустим в том же PlayerStates я булевые переменные считаю через InputManager - то есть придется создавать переменную и getcomponent<>() делать... В общем много сейчас проблема с этой машиной состояния. Хотелось бы сюда выкладывать наработки и улучшать)
0
|
||||||||||||||||
| 17.02.2018, 01:47 | |
|
Ответы с готовыми решениями:
8
Pool Врагов в зависимости от положения персонажа
Как реализовать машину состояний (FSM) |
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
||||||||||||||||
| 17.02.2018, 09:19 | ||||||||||||||||
Добавлено через 4 минуты Для стейта лучше енум, а не стринг. Сделай тогда уже класс
Добавлено через 8 минут Енумы всегда надо делать со значениямм
0
|
||||||||||||||||
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 17.02.2018, 11:42 [ТС] | |
|
Спасибо, а сам класс инпут менеджера, нормально вышел, то есть остальной код? И вот как со стейтами быть не знаю, ведь допустим каждый стейтами зависит от другого и каждому надо присвоить функцию булеву, я хоть что то нормальное сделал в своём коде? Да, а массив делать уже стоит из стейтов в скрипте для игрока? Спасибо вам за ответ)
0
|
|
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
| 17.02.2018, 14:24 | |
|
Я не знаю что там хотелось получить. Но я иначе бы делал. Более обощенно.
0
|
|
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 17.02.2018, 14:49 [ТС] | |
|
Хотел инпут сделать синглтоном, чтобы доступ из любого скрипта без GetComponent () получить. А стейты хотел сделать для аниматора и для передвижения персонажа. Тоже самое и для врагов. Общий стейт я понял как написать, а вот не подскажете как лучше поступить: у меня много стейтов будет, то есть мне их лучше присвоить? Я же массив создам потом Object State и буду туда заносить стейты с их значениями, а вот значений ведь зависят от функций, то есть где-то эти функции придётся прописать... Вот не пойму где лучше и как сделать так, чтобы любой стейт новый можно было без проблем добавить. А так же хотелось бы иметь переменную, которая отвечала бы за текущий стейт, но как его получить не очень понимаю) или же стоит заранее определиться с количеством стейтов и все прописать?
0
|
|
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
|
| 17.02.2018, 15:05 | |
|
Без блендинга - заранее определится. И в инпуте всё равно ручками каждый раз писать, это не сильно унифицируется, это надо специально считать. Например, класс с осью (string), триггером (bool), направлением (bool) и делегатом (delegate Control(float value)) для вызова или ивентом, чтобы в инспекторе настроить. Заполняешь данные, кодом задаешь делегаты - и вот тебе более-менее универсальный контроллер ваода.
0
|
|
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 17.02.2018, 15:11 [ТС] | |
|
Класс для осей создать? Не очень понял... А про делегаты первый раз слышу... Надо бы почитать... То есть в инпут нужно ещё несколько классов добавить?
0
|
|
|
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
|
||||||||||||||||
| 17.02.2018, 16:16 | ||||||||||||||||
Добавлено через 23 минуты В реализации делаешь по методу на каждую ось типа
0
|
||||||||||||||||
|
4 / 4 / 0
Регистрация: 13.12.2016
Сообщений: 246
|
|
| 17.02.2018, 20:48 [ТС] | |
|
Спасибо) Более менее понятно стало)
0
|
|
| 17.02.2018, 20:48 | |
|
Помогаю со студенческими работами здесь
9
Попытка написать простенькую БД System.AccessViolationException: Попытка чтения или записи в защищенную память - попытка 2 System.AccessViolationException: Попытка чтения или записи в защищенную память - попытка 3 Написать программу, которая принимает решение о действии персонажа на игровом поле. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|