Вторник, 19 Марта 2024, 11:34

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Форум игроделов » Записи участника » killing002 [99]
Результаты поиска
killing002Дата: Понедельник, 05 Февраля 2024, 00:24 | Сообщение # 1 | Тема: Смена префаба выстрела при смене оружия
почетный гость
Сейчас нет на сайте
Как вариант - разделить дату предметов на статическую и динамическую. Все статические данные закинуть в scriptableObject'ы и настраивать эти ассеты в редакторе. Для разных префабов проджектайлов просто создать разные ассеты.

123
killing002Дата: Понедельник, 05 Февраля 2024, 00:19 | Сообщение # 2 | Тема: Как сместить поворот камеры?
почетный гость
Сейчас нет на сайте
С Cinemachine ознакомься. Он покрывает твою проблему и никакого кода писать не надо. Ютуб в помощь.

123
killing002Дата: Понедельник, 05 Февраля 2024, 00:17 | Сообщение # 3 | Тема: Unity: триггер и запуск анимации по времени
почетный гость
Сейчас нет на сайте
Цитата Ovad ()
animator.Play("OpenDoors");

Самое простое это корутины. Запихни эту строчку в корутину и вызывай ее в своих Триггерах. В ютубе 1кк видосов про это.


123
killing002Дата: Суббота, 03 Июня 2023, 20:27 | Сообщение # 4 | Тема: Zenject не инжектит Construct
почетный гость
Сейчас нет на сайте
Цитата ArtemS ()
Короче. инъекция не работает в инстанциированном префабе..тема закрыта)

Если использовать Gameobject.Instantiate то да. Нужно использовать фабрики внутри zenjecta для этого.


123
killing002Дата: Суббота, 03 Июня 2023, 13:14 | Сообщение # 5 | Тема: Как сделать так чтобы частицы обтекали объект при сталкивани
почетный гость
Сейчас нет на сайте
1) С помощью старой системы частиц - наверно лучше и не пытаться это делать. С новой системой все получится: Огонь с помощью VFX Graph
2) Ну а вообще, такой эффект лучше с помощью шейдеров делать. Огонь с помощью шейдера


123
killing002Дата: Суббота, 03 Июня 2023, 12:12 | Сообщение # 6 | Тема: Проблема с 3д анимацией в юнити
почетный гость
Сейчас нет на сайте
Добрый день.
Имеется следующая анимация:
.gif
В юнити специально замедлил анимацию, чтобы можно было увидеть дергание правой ноги. А точнее она делает поворот в 360 градусов вокруг оси. И что самое странное, это все происходит на 34 кадре. Как такое возможно?
Если проверить анимацию по кадрово в самом юнити(окно <animation>), то этот эффект не проявляется. Но если в этом же окне <animation> нажать плей, то дергание проявится на 34 кадре.

Как я понял, что всё происходит в одном кадре? -> в превью анимации можно увидеть, что нога дергается в течении 34 кадра (снизу гифки информация об текущем кадре и проценты длительности анимации)
.gif

Есть у кого варианты, что это такое?

Настройки анимации:
.png

(я не умею загружать картинки и гифки :(


123

Сообщение отредактировал killing002 - Суббота, 03 Июня 2023, 13:23
killing002Дата: Вторник, 23 Марта 2021, 17:58 | Сообщение # 7 | Тема: Что то не так с системой корутин..
почетный гость
Сейчас нет на сайте
Цитата BOOM ()
Подожди, а где у тебя прерывания корунтина командой yield?
Короче, как я понял, у тебя просто функция корунтина заканчивается и он, естественно, сборщиком тупо удаляется.

То есть ты считаешь, что у меня в корутинах нет yield.. Ты же понимаешь, что мне фреймворк не даст не прописать yield в Ienumerator.

Цитата BOOM ()
Советую сделать цикл в функции корунтина:

Не понял причем тут циклы..

Цитата BOOM ()
Лучше познакомься с корунтинами. И вообще, думаю, тебе они в твоём случае не нужны

А как ты предлагаешь еще реализовать выполнение последовательных действий нпс, если не брать в счет корутины и UniRx?

Цитата BOOM ()
И функции передвижения запрятал бы в простом FixedUpdate - рассмотри этот вариант.

Дело то не в самих методах..) А в выполнении последовательности методов .. Ты видимо не дочитал мои "объяснения, которые я запостил отдельными кусками"..))


123

Сообщение отредактировал killing002 - Вторник, 23 Марта 2021, 17:58
killing002Дата: Воскресенье, 21 Марта 2021, 15:35 | Сообщение # 8 | Тема: Что то не так с системой корутин..
почетный гость
Сейчас нет на сайте
Цитата maker-rus ()
Если у вас скрипты по 1к строк

Это гипербола, товарищ рэббит. Если вы не заметили диалог завелся в общем ключе, извольте не проецировать это на определенную душу.

По поводу новостей, прошу вас, оставьте их при себе).

Цитата maker-rus ()
что решением было не смена структуры хранения

И какая же "структура хранения данных" должна быть, позвольте узнать.

Цитата maker-rus ()
Могли бы просто процитировать сюда свое решение.

Поступать просто - мое табу


123

Сообщение отредактировал killing002 - Воскресенье, 21 Марта 2021, 15:43
killing002Дата: Среда, 17 Марта 2021, 18:02 | Сообщение # 9 | Тема: Что то не так с системой корутин..
почетный гость
Сейчас нет на сайте
А что, люди любят ковыраться в целых скриптах в 1к строк?

123
killing002Дата: Среда, 17 Марта 2021, 13:07 | Сообщение # 10 | Тема: Оптимизация графики. Прорисовка объектов на расстоянии. Свет
почетный гость
Сейчас нет на сайте
Хм, да ты прав. У меня почему с понятием "динамические объекты" ассоциируется все то, что управляется скриптами.

123
killing002Дата: Среда, 17 Марта 2021, 11:58 | Сообщение # 11 | Тема: Оптимизация графики. Прорисовка объектов на расстоянии. Свет
почетный гость
Сейчас нет на сайте
Цитата drcrack ()
юнити и так не будет рисовать обьекты за его пределами

Отрисовываться не будут, это верно. Но скрипты то просчитываться продолжат.


123
killing002Дата: Вторник, 16 Марта 2021, 17:29 | Сообщение # 12 | Тема: Оптимизация графики. Прорисовка объектов на расстоянии. Свет
почетный гость
Сейчас нет на сайте
Уменьшать уровень детализации объектов можно при помощи LOD'ов.
Скрывай динамические объекты скриптом, проверяя находится ли объект в пределах камеры или нет.

Юнити скорее всего работает с треугольниками и поэтому тебе кажется, что полигоны увеличились. Полигонов столько же, просто юнити считает треугольники.
С запеканием света давно не работал, но там все должно быть нормально, потыкай тщательнее. Если не помогает качай новую версию юнити


123
killing002Дата: Вторник, 16 Марта 2021, 15:22 | Сообщение # 13 | Тема: Что то не так с системой корутин..
почетный гость
Сейчас нет на сайте
Приветствую всех.

Написал микро менеджер последовательных действий, через корутины. Хотя это даже менеджером нельзя назвать, но суть не в этом.
Ситуация такая -
Нпс при старте заполняет лист ienumerator'ов действиями которые он хочет последовательно производить(это как бы его цикл действий по уровню) и вызывает StartCoroutine (Это обертка на обычный запуск корутин, но перед этим он делает кое-что)
Код

countOfPoints = targets.Length;

        for (int i = 0; i < countOfPoints; i++)
        {
            nativeQueueEnumerators.Add(goToPoint(aipath, setter, targets[i]));
            nativeQueueEnumerators.Add(rotateToTarget(setter, targets[i]));
            nativeQueueEnumerators.Add(waitAFewMoment(setter, _waitingTime));
        }

        StartCoroutine(setter); // вызов функции

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

Код

   protected List<IEnumerator> nativeQueueEnumerators = new List<IEnumerator>();
   protected Queue<IEnumerator> queueEnumerators = new Queue<IEnumerator>();

queueEnumerators является очередью, с которым взаимодействую все действия. nativeQueueEnumerators это лист, который хранит все действия на которые подписался нпс изначально(при старте). Нужен он затем, что вызов происходит следующим образом:
Код


StartCoroutine(queueEnumerators.Dequeue());


То есть вызывается корутина, но при этом удаляется это действие из очереди, и в итоге при проходе одного цикла, то есть когда нпс пройдет все точки сделает все повороты и т.д, ему нужно вернуться в первую точку и начать все с начало, и для этого и нужен nativeQueueEnumerators, в очередь queueEnumerators, опять можно засунуть все те действия и опять начать цикл без нашего вмешательства. Надеюсь понятно объяснил, теперь к проблеме, а она заключается в следующем ->
Проблема в том, что первый цикл работает нормально, нпс проходит все точки и т.д, и когда приходит время возвращаться в начало, то есть происходит добавление всех начальных действий в queueEnumerators из nativeQueueEnumerators .
Код

   protected void MoveNext(AIDestinationSetter setter)
    {
        if (queueEnumerators.Count == 0) // произошел глобальный цикл
        {
            SetStartsValues();
        }

        Coroutine cor = setter.StartCoroutine(queueEnumerators.Dequeue());

        if (cor == null)
            Debug.Log("2 цикл не начинается по причине, что не запускается корутина ");
        
    }


Эта функция и запускает следующую корутину из очереди . Setter нужен, так как класс не наследует monobehavior, Условие cor == null, я вставил, что отследить, что происходит, и это условие активируется как после того, как queueEnumerators.Count станет равным нулю(условие выше), после чего произойдет SetStartsValues(),
Код

private void SetStartsValues()
    {
        for (int i = 0; i < nativeQueueEnumerators.Count; i++)
        {
            queueEnumerators.Enqueue(nativeQueueEnumerators[i]);
           
        }
    }


Дальше корутина не вызовется, не понятно почему, то есть cor будет равен null, в консоль выдаст это сообщение и выйдет из функции и нпс просто остановится и все. Фуу, надеюсь вам понятно. Так вот в чем вопрос, почему корутина не вызывается, он просто проходит по ней и выдает null и все.

Добавлено (17 Марта 2021, 11:26)
---------------------------------------------
Что то форум погибает по-моему, либо все знающие заняты делами. В общем решение предложили на другом ресурсе и оно работает. Кому интересно почему корутины не вызываются дважды, то вам сюда: cyberforum.ru


123

Сообщение отредактировал killing002 - Вторник, 16 Марта 2021, 15:26
killing002Дата: Воскресенье, 14 Марта 2021, 12:04 | Сообщение # 14 | Тема: CustomRange в SpriteMask и аналог оператора в Lua
почетный гость
Сейчас нет на сайте
Цитата alexsilent ()
1) можно ли кодом менять CustomRange в SpriteMask (скрипт спрайтовой маски)?
Я нашёл в документации только isCustomRangeActive - как бы проверять активна ли эта опция,
но как кодом сделать её активной не могу найти...


isCustomRangeActive является свойством и у него public set, через него и можно выставить в true Custom Range.
Код

IsCustomRangeActive = true;


Цитата alexsilent ()
2) В Lua на Tic-80 был удобный оператор floor деления с float составляющей "//", есть ли аналог в юнити?
Это записывалось так в Tic-80 на Lua:


Не понял, что значит деление с флоат составляющей.. Просто используй явное преобразование - (float). Если у тебя возникла ситуация под типу этой ..
Код

int a = 5;

void Awake()
{
float c = a / 2;
// c = 2
}


Но тебе нужен float на выходе..
Код

int a = 5;

void Awake()
{
float c = a / 2.0f;
// c = 2.5
}


Каких то специальных операторов в юнити нет. Не знаю помог ли или нет..


123

Сообщение отредактировал killing002 - Воскресенье, 14 Марта 2021, 16:51
killing002Дата: Воскресенье, 14 Марта 2021, 11:42 | Сообщение # 15 | Тема: Автоматическая инициализация спрайтов в Unity
почетный гость
Сейчас нет на сайте
Как вариант юзать атласы.
Код

public SpriteAtlas atlas;
Sprite[] sprites = atlas.GetSprites();

Но тут придется drag n drop'ать атлас, но это лучше чем делать это со всем массивом спрайтов


123

Сообщение отредактировал killing002 - Воскресенье, 14 Марта 2021, 12:12
killing002Дата: Суббота, 13 Марта 2021, 19:36 | Сообщение # 16 | Тема: Проблема при рисовании изометрии
почетный гость
Сейчас нет на сайте
В любой непонятной ситуации качай другую версию юнити.

123
killing002Дата: Суббота, 13 Марта 2021, 11:43 | Сообщение # 17 | Тема: UniRx и Job system, дайте советов..
почетный гость
Сейчас нет на сайте
Цитата drcrack ()
Нет смысла делать многопоточность просто ради многопоточности, когда ты еще не знаешь, что именно будет тормозить игру

Это многопоточность ради оптимизации. То, что будет тормозить очевидно - > всякие рейкасты и проверки и логика нпс.

Вот, что по поводу JobSystem.. Я тут некоторые тесты проводил над игрой, игрался с профайлером и т.д. И заметил, что без моего собственного вмешательства , а именно добавления Job'ов и тд. Некоторые процессы сами распараллеливаются.


Тут можно наблюдать во вкладке Job, что уже существуют worker'ы. То есть Job System уже потихоньку внедряется в Unity. Как видно из скрина или нет, но там распараллеливаются процессы аниматоров, канвасов , в общем не очень понятно ..

Начитался документации по UniRx, в общем нужен для асинхронных действий какого либо характера. Как понял, на треды тоже можно распределить определенный код, но все это окутано пока тайной для меня.. И что интересно UniRx и Job System друг с другом не совместимы.


123

Сообщение отредактировал killing002 - Суббота, 13 Марта 2021, 11:54
killing002Дата: Суббота, 13 Марта 2021, 11:14 | Сообщение # 18 | Тема: Оптимизация скрипта. Update. Как правильно скриптовать?
почетный гость
Сейчас нет на сайте
Столько проверок в Update и еще такой скрипт в нескольких экземплярах в 1 кадре, да еще и на мобилки -> ну фпс 20-25 если не меньше обеспеченно. Для теста, просто заспавни штук 10 на сцене таких GO и запусти на мобилке своей и делай выводы, есть ли смысл существования этого скрипта или нет.. Если мобилки, то это сразу событийное программирование, чтобы избавиться от этих проверок в update, чем меньше проверок , да и в принципе кода в Update , тем лучше. Читай там про ивенты , делегаты..

123
killing002Дата: Четверг, 11 Марта 2021, 15:05 | Сообщение # 19 | Тема: UniRx и Job system, дайте советов..
почетный гость
Сейчас нет на сайте
Всех приветствую!
При разработке проекта возникла ситуация.. Нужно, чтобы в кадре было много нпс, например возьмем толпы зомби. Очевидно, что все это будет тормозить, и я сразу подумал о многопоточности. Много статей перечитал, часто видел такие фразы как: "юнити не потокобезопасный", "все игры на юнити тормозят" и все в этом духе. Но тем не менее я наткнулся на такие термины как UniRx и Job system. Как я понял, система заданий все же позволяет разделить код на потоки, не весь код конечно, но все же. Читая о реактивном программировании, а именно о UniRx, я так понял, что оно тоже предполагает деление на потоки. И я теряюсь в том аспекте, - что же использовать, на что способен UniRx и тд. Документацию по UniRx пока не читал, хотелось бы узнать с начало об общих положениях. Заранее спасибо за ответ.


123
killing002Дата: Вторник, 08 Сентября 2020, 14:05 | Сообщение # 20 | Тема: iTextSharp и юнити...
почетный гость
Сейчас нет на сайте
Да, вы правы. На ином ресурсе предложили один рабочий вариант. Если кому интересно, то вот, что в итоге получилось
Код
path = System.IO.Path.Combine(Application.streamingAssetsPath, "test.pdf");

  IEnumerator request()
    {
        UnityWebRequest www = UnityWebRequest.Get(path);
        yield return www.SendWebRequest();
        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            print(www.downloadHandler.data.Length);
            mm = new MemoryStream(www.downloadHandler.data);
            PdfReader reader = new PdfReader(mm);
            ITextExtractionStrategy strategy;
            testText.text = "IN";

            Rectangle rect = new Rectangle(45, 0, 135, 150);
            RenderFilter filter = new RegionTextRenderFilter(rect);
            int q;
            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                strategy = new FilteredTextRenderListener(new SimpleTextExtractionStrategy(), filter);
                print(PdfTextExtractor.GetTextFromPage(reader, i, strategy));
                testText.text = PdfTextExtractor.GetTextFromPage(reader, 1, strategy);

            }
            mm.Close();
        }
    }


123
Форум игроделов » Записи участника » killing002 [99]
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг