Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > 2D/GUI

2D/GUI Вопросы на тему 2D графики и интерфейсов

Ответ
 
Опции темы
Старый 22.09.2020, 13:26   #16
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вызов гуя, есть проблемы.

В общем несколько советов (в порядке важности):

1. Не делать такие большие методы (как например Update класса SetkaHodaMonstra), а разделять на более мелкие методы. Это повысит читабельности коду и даст кускам кода имена (наименования методов). Для повышение читабельности так же можно использовать автоформат кода в Visual Studio (сочетание клавиш Ctrl+E, D или через меню Правка-Дополнительно-Форматировать документ).

2. Выносить специфические вещи в отдельные классы, не обязательно MonoBehaviour, а просто классы, выполняющие какую-то цель. Например генерацию меша сетки. Ну а если код отвечает за работу какого-то игрового объекта, то делать отдельный скрипт (MonoBehaviour) для этого объекта. Пусть свои функции он выполняет сам, а извне им только управлять (вызывать его методы, менять значения его открытых полей).

3. Избавляться от магических чисел. В коде много чисел, которые непонятно для чего служат. Лучше создавать константы с осмысленными именами для этих чисел и в коде применять эти константы. Если число определяет состояние, то использовать enum для задания состояний. Например FightScene.SkillPanelSower присваиваются какие-то значения и потом проверяются. Это просто числа, хз что они значат. Можно было бы сделать так:

public enum SkillPanelState
{
     
Hidden,
     
SkillsPanel,
     
ActionsPanel
}

public static 
SkillPanelState SkillPanelSower SkillPanelState.Hidden;

....
// где-то в коде
switch(FightScene.SkillPanelSower)
{
     case 
SkillPanelState.Hidden
          
//Скрыть панель, если не скрыта
          
break;
     case 
SkillPanelState.SkillsPanel
          
//Отобразить панель скилов, если скрыта или отображается что-то другое
          
break;
     case 
SkillPanelState.ActionsPanel
          
//Отобразить панель действий или еще чего-то, если скрыта или отображается что-то другое
          
break;

4. Использовать массивы или списки, вместо подобного кода:

public static int SkillButton1 0// Кнопка скилла 1.
    
public static int SkillButton2 0// Кнопка скилла 2.
    
public static int SkillButton3 0// Кнопка скилла 3.
    
public static int SkillButton4 0// Кнопка скилла 4.
    
public static int SkillButton5 0// Кнопка скилла 5.
    
public static int SkillButton6 0// Кнопка скилла 5.

    
public static int SkillRange1 0// Кнопка скилла 1.
    
public static int SkillRange2 0// Кнопка скилла 2.
    
public static int SkillRange3 0// Кнопка скилла 3.
    
public static int SkillRange4 0// Кнопка скилла 4.
    
public static int SkillRange5 0// Кнопка скилла 5.
    
public static int SkillRange6 0// Кнопка скилла 5. 

5. Не искал в коде дублирование данных, но если оно есть, то этого стоит избегать. Если в сцене есть какие-то скрипты на объектах, то их всегда можно найти и получить с них данные с помощью методов FindObjectOfType<T> или FindObjectsOfType<T>. Имея ссылку на объект в виде GameObject или другого компонента этого объекта можно всегда получить другие компоненты с этого объекта с помощью методов GetComponent<T> или GetComponentInChildren<T>. Если объект имеет несколько одинаковых компонентов, то есть аналогичные методы, возвращающие массивы компонентов GetComponents<T> или GetComponentsInChildren<T>.

6. Не создавать универсальные переменные. По типу таких:
private int UniversalCounter 0//Универсальный многоразовый счётчик для разных задачь
    
private int UniversalCounter2 0//Универсальный многоразовый счётчик для разных задачь
    
private int UniversalCounter3 0//Универсальный многоразовый счётчик для разных задачь 
Лучше создавать переменные в том месте, где они используются и давать им имена в этом контексте.

7. Первый раз вижу в коде использование ZERO как нуля) Но если даже так, то это константа, тогда она должна быть объявлена так:
private const int ZERO 0// Просто ноль, по тому, что мне нужен ноль. 
В таком случае не получится случайно этой переменной присвоить значение. Но тогда правда все твои циклы будут выдавать ошибку компиляции, потому что везде ты присваиваешь этой переменной значение 0. Хочу заметить, что цикл for может не иметь какую либо часть. Т.е. можно свободно заменить
for (ZERO 0ZERO StimeStime--)
{
      
SX SX SetkaDvijScaleZconstant;

на
for (; ZERO StimeStime--)
{
    
SX SX SetkaDvijScaleZconstant;

или на более понятный вариант - цикл while
while(ZERO Stime)
{
    
SX SX SetkaDvijScaleZconstant;
    
Stime--;


Все, завязываю с советами )
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Crystal (22.09.2020), Randomize (22.09.2020)
Старый 22.09.2020, 17:34   #17
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Ответ: Вызов гуя, есть проблемы.

1. Этот метод генерирует сетку из полигонов,
так-как генерация происходит одновременно с выделением
монстра, эти обе функции вдолблены в один скрипт.
Выглядит громоздко, по тому что идёт много расчётов,
так-как сгенерировать полигоны в нужных местах с
учётом непроходимых зон не так то просто.
Скрипт громоздкий ещё и по тому, что я перевожу в нём
координатную систему в номерную, то есть буквально
точки координат в номера ячеек на сетке.

Я придумал формулу, по которой точку в двумерном графике XY
можно перевести в номер ячейки. ((X * Yмакс) - Yмакс) + Y
Расчёт по точкам графика от нуля (X=0, Y=0) до любых положительных чисел.

Мне это нужно, так как при пике лучом я получаю координаты объекта,
которые округляю, а строю сетку в циклах по номерам ячеек.

Про скрипты на монстре, далеко не всё в одном файле, даже близко нет.
Например стрельба скиллом это другой скрипт,
генерация сетки радиуса удара другой, подворачивающий
монстра на камеру другой, скрипты интерфейса тоже отдельные.
Я чисто всё в один скрипт не луплю.

2. С классами я лично осваивая юнити так и не понял нафига
их плодить, если всё прекрасно в монобехавере живёт.
Этот момент поясни.

3. Ну это со стороны непонятно, а автор этого кода знает что они значат )
Для работы в команде программистов я думаю это важно,
но когда код для себя, так сказать не опен, то собственно нет.
Насчёт свитчей мне уже указывали ранее на булке, и я эту технологию
внедрил в том моменте, про который говорили, но тем не менее наблюдая
не увидел никаких преимуществ, ни в скорости работы, ни в принципе.
По этому в основном набирая быстро код мне проще накидать ifов, чем этот список строить.

4. Снова списки и массивы. Я конечно по всякому пробовал, но опять таки
ни прироста скорости обработки, ни какой-то другой пользы не нашёл.
Массивы использую там где огромное количество чисел надо хранить,
или ещё чего, но там где их до шести например, куда нагляднее
и удобнее впихнуть шесть переменных столбиком лично мне.

5. Универсальные переменные те подразумевают то,
что ни при каких условиях одна и та же переменная
не будет использоваться в разных местах одновременно.
Смысл был сократить количество переменных в коде,
если делать отдельные по месту то их получится в разы больше.
Это тупо счётчики.

6. Что изменится? Это постоянное число. Случайное присвоение исключено,
я же знаю что это ноль, который должен быть нолём )

7. На счёт "for" все три варианта почти одно и то же,
это уже вкусовщина. Но первый вариант исключение,
так-как тут мы можем использовать любую другую переменную,
и проверять её состояние (число), "а вдруг не ноль?" )

---
Твои советы интересны, продолжай )
__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Старый 23.09.2020, 07:59   #18
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от Crystal Посмотреть сообщение
2. С классами я лично осваивая юнити так и не понял нафига
их плодить, если всё прекрасно в монобехавере живёт.
Этот момент поясни.
Ну тут много говорить можно, но вот: SOLID, а конкретно - принцип единственной ответственности.

Сообщение от Crystal Посмотреть сообщение
5. Универсальные переменные те подразумевают то,
что ни при каких условиях одна и та же переменная
не будет использоваться в разных местах одновременно.
Смысл был сократить количество переменных в коде,
если делать отдельные по месту то их получится в разы больше.
Это тупо счётчики.
Экономия на количестве переменных - странная экономия, если она добавляет неразберихи в коде. Лучше создать переменную в месте ее использования, особенно счетчики. После выхода из области действия они уничтожаются и работают на стеке процессора, что очень быстро.

Сообщение от Crystal Посмотреть сообщение
6. Что изменится? Это постоянное число. Случайное присвоение исключено,
я же знаю что это ноль, который должен быть нолём )
Подход странный, я написал как это делают обычно)

Сообщение от Crystal Посмотреть сообщение
7. На счёт "for" все три варианта почти одно и то же,
это уже вкусовщина. Но первый вариант исключение,
так-как тут мы можем использовать любую другую переменную,
и проверять её состояние (число), "а вдруг не ноль?" )
В твоем случае одинарное равно - это присвоение переменной ZERO значения. Тут никакого сравнения с нулем нет. Сравнение - двойное равно "==".
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Crystal (23.09.2020)
Старый 23.09.2020, 14:10   #19
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Ответ: Вызов гуя, есть проблемы.

вдруг не ноль?" )
В твоем случае одинарное равно - это присвоение переменной ZERO значения. Тут никакого сравнения с нулем нет. Сравнение - двойное равно "==".
________________
Действительно, в этом моменте я лохонулся.
Вместо сравнения с нулём нулю присвоил ноль )
__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Старый 23.09.2020, 22:43   #20
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от Crystal Посмотреть сообщение
3. Ну это со стороны непонятно, а автор этого кода знает что они значат )
Для работы в команде программистов я думаю это важно,
но когда код для себя, так сказать не опен, то собственно нет.
Насчёт свитчей мне уже указывали ранее на булке, и я эту технологию
внедрил в том моменте, про который говорили, но тем не менее наблюдая
не увидел никаких преимуществ, ни в скорости работы, ни в принципе.
По этому в основном набирая быстро код мне проще накидать ifов, чем этот список строить.
Это классический антипаттерн "Magic Numbers", поищи по этому запросу в Интернете, думаю, что ты найдёшь много хороших разъяснений, что это такое, и почему так делать не надо.

Если кратко, то вот что я бы лично для себя выделил:
  • Часто бывает нужно потом эти числа поменять, и удобнее, если они все будут находиться где-то в одном месте, а не искать, где они у тебя по коду раскиданы.
  • Часто бывает, что одну и ту же константу (или переменную) ты используешь потом ещё где-то, и тогда уже придётся следить, чтобы они в двух местах были одинаковы. При использовании "магических чисел" это ещё один фактор, по причине которого можно лохануться, а потом искать причину.
  • Свой код кроме тебя самого, даже если ты работаешь не в команде, будешь читать ещё и ты сам, но спустя месяц, например. Вот попробуй открой какой-нибудь старый проект, который ты как минимум уже месяц не открывал, и попытайся вспомнить, что же это число означает, и почему оно именно такое?

Конечно же, доводить до полного абсолюта эту идею тоже не надо.
Если где-то нет других вариантов, то пишем число.
Например, если надо что-то обнулить, то, понятное дело, нельзя обнулить что-то с числом 2.71. Обнуляют всегда с нулём. Поэтому и пишем просто 0, других вариантов нет, надобности заводить переменную "zero" тоже нет.

Циклы for бывают чаще всего с 0, но бывают и с 1, но там тоже обычно нет вариантов. Поэтому переменные "zero" и "one" тоже не нужны.

Бывает ещё чего-то нужно вдвое больше, например, если ты располагаешь какой-то объект по центру чего-то, и поэтому его надо сдвинуть ровно на половину его ширины. Поэтому мы умножаем её на 0.5 (ну или делим на 2, кому как больше нравится). Любое другое значение будет означать, что объект поставится криво. Поэтому пишем само число.

В качестве исключения ещё можно назвать какой-нибудь временный код, по типу for(int i=0; i<10; i++) createEnemy(); где ты, допустим, чисто для теста хочешь создать чего-нибудь 10 штук, потестить и удалить. Т.е. этот код не предполагается, что будет "жить" сколько-нибудь долго, и когда ты доделаешь функцию до конца, ты это удалишь.

В-общем, если обобщить, то идея такая: если есть (даже теоретическая) возможность подгонки числа, то хорошим тоном будет завести под него переменную или константу. Особенно если стороннему человеку не очень понятно с первого взгляда, а что это число означает. Тогда в названии переменной будет подсказка, что это число делает, что сэкономит читающему время. Помни, что читающим твой код и не понимающим, что он делает, будешь ты сам спустя долгое время.

И только если вариантов никаких других нет вообще, тогда можно написать само число (обычно это -1, 0, 1, 2, 0.5).


Всё, что-то я растёкся мыслию по древу и разумничался, за сим откланиваюсь.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Arton (24.09.2020), Crystal (24.09.2020), pax (24.09.2020), St_AnGer (24.09.2020)
Старый 24.09.2020, 11:35   #21
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от ABTOMAT Посмотреть сообщение
Это классический антипаттерн "Magic Numbers", поищи по этому запросу в Интернете, думаю, что ты найдёшь много хороших разъяснений, что это такое, и почему так делать не надо.

Если кратко, то вот что я бы лично для себя выделил:
  • Часто бывает нужно потом эти числа поменять, и удобнее, если они все будут находиться где-то в одном месте, а не искать, где они у тебя по коду раскиданы.
  • Часто бывает, что одну и ту же константу (или переменную) ты используешь потом ещё где-то, и тогда уже придётся следить, чтобы они в двух местах были одинаковы. При использовании "магических чисел" это ещё один фактор, по причине которого можно лохануться, а потом искать причину.
  • Свой код кроме тебя самого, даже если ты работаешь не в команде, будешь читать ещё и ты сам, но спустя месяц, например. Вот попробуй открой какой-нибудь старый проект, который ты как минимум уже месяц не открывал, и попытайся вспомнить, что же это число означает, и почему оно именно такое?

Конечно же, доводить до полного абсолюта эту идею тоже не надо.
Если где-то нет других вариантов, то пишем число.
Например, если надо что-то обнулить, то, понятное дело, нельзя обнулить что-то с числом 2.71. Обнуляют всегда с нулём. Поэтому и пишем просто 0, других вариантов нет, надобности заводить переменную "zero" тоже нет.

Циклы for бывают чаще всего с 0, но бывают и с 1, но там тоже обычно нет вариантов. Поэтому переменные "zero" и "one" тоже не нужны.

Бывает ещё чего-то нужно вдвое больше, например, если ты располагаешь какой-то объект по центру чего-то, и поэтому его надо сдвинуть ровно на половину его ширины. Поэтому мы умножаем её на 0.5 (ну или делим на 2, кому как больше нравится). Любое другое значение будет означать, что объект поставится криво. Поэтому пишем само число.

В качестве исключения ещё можно назвать какой-нибудь временный код, по типу for(int i=0; i<10; i++) createEnemy(); где ты, допустим, чисто для теста хочешь создать чего-нибудь 10 штук, потестить и удалить. Т.е. этот код не предполагается, что будет "жить" сколько-нибудь долго, и когда ты доделаешь функцию до конца, ты это удалишь.

В-общем, если обобщить, то идея такая: если есть (даже теоретическая) возможность подгонки числа, то хорошим тоном будет завести под него переменную или константу. Особенно если стороннему человеку не очень понятно с первого взгляда, а что это число означает. Тогда в названии переменной будет подсказка, что это число делает, что сэкономит читающему время. Помни, что читающим твой код и не понимающим, что он делает, будешь ты сам спустя долгое время.

И только если вариантов никаких других нет вообще, тогда можно написать само число (обычно это -1, 0, 1, 2, 0.5).


Всё, что-то я растёкся мыслию по древу и разумничался, за сим откланиваюсь.
Много буков.

Я открываю свои коды тринадцатилетней давности, и сразу понимаю что к чему в них.
По текущему проекту передышки по 2 месяца, возвращаюсь ничего не помня,
открываю и вижу как это работает, а важные переменные подписаны.
Для меня всё сразу очевидно, что куда как, т.к. создано мной,
и работает по моей логике, собственно мой код это то, как я мыслю.
На то как читают мой код другие мне абсолютно по барабану,
т.к. соло проект, и мне не нужно работать над тем,
чтобы кто-то понял внутряк. Проект не будет опен.

Собственно, работаю как мне удобно. Я придерживаюсь двух задач,
это быстрота работы кода, и скорость его реализации.
Красота, читаемость для других, какие-то там нормы морали
программерские меня не интересуют, правда.

Я знаю что есть некие каноны кодинга, и даже могу по канону,
но вот насрать вообще, до тех пор пока мне удобно, и пока я понимаю
что у меня там в строках происходит ))

Это ребята всё равно, что спорить о том, как правильно задницу вытирать,
сверху вниз, или снизу вверх, зевой плюс, или лопухом )

Давайте уже не будем флудить по теме, я задачу решил по своему,
на будущее висит решение пакса, к которому я в каком-либо моменте
возможно обращусь ещё.

Ну а про нормы морали программиста, и феншуй, предлагаю создать отдельную тему,
где каждый может заняться просветительством ))

Все советы были полезны, спасибо.

P.s. Я сейчас пишу анимацию хелсбара на "магических числах",
надо наверно будет прикола ради код выложить,
и посмотреть как в меня полетят ссаные тряпки )))
__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Старый 24.09.2020, 12:41   #22
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от Crystal Посмотреть сообщение
P.s. Я сейчас пишу анимацию хелсбара на "магических числах",
надо наверно будет прикола ради код выложить,
и посмотреть как в меня полетят ссаные тряпки )))
Зачем анимацию кодить? Есть же Animator/Animation.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 24.09.2020, 13:03   #23
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от pax Посмотреть сообщение
Зачем анимацию кодить? Есть же Animator/Animation.
Первая ссаная тряпка ))
За тем, что в коде помимо перемещения квадов я управляю их прозрачностью и цветом )
Аниматор то используют чтобы в нужное время нужную анимацию запускать настраивая это чем то типа нодов.
А у меня нет никакой анимации, я просто квады двигаю куда мне надо )
__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Старый 24.09.2020, 13:26   #24
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от Crystal Посмотреть сообщение
Первая ссаная тряпка ))
За тем, что в коде помимо перемещения квадов я управляю их прозрачностью и цветом )
Аниматор то используют чтобы в нужное время нужную анимацию запускать настраивая это чем то типа нодов.
А у меня нет никакой анимации, я просто квады двигаю куда мне надо )
Ну так анимации могут тоже всем этим управлять, даже спрайты тебе поменять могут в нужный момент, если потребуется. Animator да, для машины состояний, но так есть и компонент Animation. Есть например метод Sample, он устанавливает анимацию в то время, которое выставляется в состоянии добавленного клипа.

Небольшой пример:
var animation GetComponent<Animation>();
AnimationState state animation["HealthBarAnim"]; // состояние клипа HealthBarAnim
state.enabled true// включаем состояние
state.weight 1// вес клипа при смешивании
state.normalizedTime health/(float)maxHealth// здоровье, переведенное в диапазон  0..1
animation.Sample();  // установка анимации в нужное место 
Также как показал гугл, можно просто анимацию семплировать на объекте с помощью метода AnimationClip.SampleAnimation, но пишут что он не очень быстрый.

Даже рискну пример написать)
public AnimationClip healthBarClip;


void Update()
{
    
healthBarClip.SampleAnimation(gameObject, (health/(float)maxHealth) * healthBarClip.length);

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Crystal (24.09.2020)
Старый 24.09.2020, 14:13   #25
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вызов гуя, есть проблемы.

Ну и в дополнение к предыдущему посту собрал хэлсбар на аниматоре с изменением цвета бара + миганием (два слоя анимации).
Сама работа хэлсбара на аниматоре с тремя анимациями в аттаче (видео). Управляется аниматор одним параметром - нормализованным здоровьем (heathNormalized).

Хэлсбар управляется вот этим скриптом.
using UnityEngine;

public class 
HelthBar MonoBehaviour
{
    public 
int health;
    public 
int maxHealth;

    private 
Animator animator;

    private 
void Start()
    {
        
animator GetComponent<Animator>();
    }

    
void Update()
    {
        if (
health 0health 0;
        if (
health maxHealthhealth maxHealth;

        
animator.SetFloat("heathNormalized"health/(float)maxHealth);
    }

Вложения
Тип файла: mp4 bandicam 2020-09-24 13-07-03-167.mp4 (9.30 Мб, 435 просмотров)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Arton (24.09.2020), Crystal (24.09.2020)
Старый 24.09.2020, 19:08   #26
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Ответ: Вызов гуя, есть проблемы.

Не, мой хелсбар не похож ни на что, что ты видел.
Он у меня я бы сказал - дичь. Как говорят художники "я так вижу".
Когда закончу, увидите, времени мало щас, по чуть-чуть успеваю кодить.
Если есть спортивный интерес, и свободное время, потом можешь
повторить через анимации, с удовольствием погляжу этот вариант.

Видео посмотрел, нужно будет как-нибудь покурить эту тему, явно найду применение.
Видно что да, можно делать то же самое, что я пишу, скорее всего даже так проще (если уже работал с этим).
__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (24.09.2020)
Старый 25.09.2020, 09:41   #27
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от Crystal Посмотреть сообщение
Видео посмотрел, нужно будет как-нибудь покурить эту тему, явно найду применение.
Видно что да, можно делать то же самое, что я пишу, скорее всего даже так проще (если уже работал с этим).
Я больше скажу, некоторые стейтмашину аниматора используют для программирования поведения боссов в игре)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 27.09.2020, 19:33   #28
Crystal
Терабайт исходников
 
Аватар для Crystal
 
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений
(для 5,374 пользователей)
Ответ: Вызов гуя, есть проблемы.

Итак PAX, готов для тебя челлендж по хелсбару.
Всё в видео:

__________________
Проект "Deathbring World - Rangers" и его финансовая поддержка:
https://boosty.to/deathbringrangers

Я на - TWITCH
Канал на YouTube
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Crystal за это полезное сообщение:
ABTOMAT (28.09.2020), Arton (27.09.2020), pax (27.09.2020)
Старый 27.09.2020, 23:47   #29
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вызов гуя, есть проблемы.

Сообщение от Crystal Посмотреть сообщение
Итак PAX, готов для тебя челлендж по хелсбару.
Челендж я принял, но это первый и последний черелндж) Видео с готовым хелсбаром в аттаче. Управляется тем же скриптом, что я приводил выше. Вероятнее всего кодом данная штука будет работать чуть быстрее, но не уверен, но настройка цвета кодом конечно удобнее. Можно заморочиться и написать скрипт, применяющий к спрайту цвет на основе двух параметров и анимировать эти два параметра вместо цвета и прозрачности, тогда можно будет задавать цвет снаружи. А сейчас цвет баров зашит в анимациях.

В результате получилось 4 анимации (анимация движения линии вверх-вниз, анимация прозрачности, анимация для перемещения квадратиков и собственно анимация состояния хэлсбара). Анимация прозрачности используется как на линиях, так и на квадратиках. Пришлось для каждой линии сделать копию контроллера анимации и настроить немного по разному скорости воспроизведения анимаций, чтобы получилось так же как у тебя. Тоже самое сделал для квадратиков. Анимация состояния хэлсбара управляет цветом линий и квадратиков (без прозрачности), а так же их масштабом. Плюс она двигает спрайты "скобок".
Вложения
Тип файла: mp4 bandicam 2020-09-27 22-36-58-904.mp4 (9.83 Мб, 435 просмотров)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
ABTOMAT (28.09.2020), Arton (28.09.2020), Crystal (28.09.2020)
Старый 28.09.2020, 05:36   #30
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Вызов гуя, есть проблемы.

Но зачем и чтобы что, если кодом проще?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 14:15.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com