Задать вопрос
  • Instance по логике Bootstrap?

    @DrRen7
    Ну я б сделал машину состояний и сделал её инстансом а лучше бы используя какой di
    в BootstrapState я б все зарегистрировал и передал бы дальше по di
    потом бы какой то LoadLevelState потому как при загрузке уровня тож надо делать одни и вещи на входе и выходе
    Ответ написан
    Комментировать
  • Как правильно оформить логику Bootstrap для Player.cs в Initialize()?

    @DrRen7
    Подход к архитектуре у всех разный, ну если вы хотите использовать Bootstrap.
    Для начала Update() это метод цикла юнити он взаимосвязан со start и awake, тк у MonoBehaviour нет конструктора тут на нужен какой то Initialize(). Что бы все это работало есть хорошая практика это создавать объект на сцене.
    Получается в Bootstrap мы регистрируем сервисы и инфраструктуру, потом инстанциируем игрока и через Initialize() сразу прокидываем что надо. Выносим создание и настройку игрока в отдельный метод, ну и по сути у нас получилось фабрика)
    Возможно для реализации вам понадобится какие то скрипты загружать раньше https://docs.unity3d.com/6000.0/Documentation/Scri... ,но на практике если все делать верно оно не надо , Bootstrap по сути и нужен что бы все загружать последовательно
    Ответ написан
    Комментировать
  • Как в Unity реализовать автоматическое подпрыгивание физического объекта при движении?

    @DrRen7
    Это делается через анимацию надо сделать условную анимацию и залупить её и сделать анимацию для покоя.
    https://learn.unity.com/tutorial/66fc681fedbc2a00e...
    потом все добавить в animation controller а переходом будет Rigidbody.velocity.x
    https://learn.unity.com/tutorial/animator-controll...
    Ответ написан
    Комментировать
  • Как развивать логику в программировании?

    @DrRen7
    Я бы посоветовал начинать что то делать с UML диаграмм. По сути там есть все что надо и то как пользователь взаимодействует с программой, внутренний функционал и то из чего это будет состоять. А вот с кодом нужно больше практики как вариант можно записаться на бесплатные уроки stepik на любой язык, а в решении пихать свой, посмотрел go там есть.
    Ответ написан
  • Как называется паттерн, который добавляет объекту новый функционал?

    @DrRen7
    Модификация объекта через сам объект это Fluent Interface, а вот добавление нового функционала что декоратор.
    Разница в том при Fluent Interface AddSomeComponen(I) должна быть, а при декораторе как вы заметили просто обертка
    Ответ написан
    Комментировать
  • Запечь вместе с ProBuilder несколькими текстурами?

    @DrRen7
    надо переписать вот это блок
    uvs.Add(new Vector2(0, 0));  // нижний левый
        uvs.Add(new Vector2(0, 1));  // верхний левый
        uvs.Add(new Vector2(1, 0));  // нижний правый
        uvs.Add(new Vector2(1, 1));  // верхний правый

    1 meshrenderer это 1 материал
    смысл в том что б тектура имела все материла
    ну делаешь материал 2х2 потом передашь id материала и допустим если 1 мариал то
    uvs.Add(new Vector2(0, 0));  // нижний левый
        uvs.Add(new Vector2(0, 0.5));  // верхний левый
        uvs.Add(new Vector2(0.5, 0));  // нижний правый
        uvs.Add(new Vector2(0.5, 0.5));  // верхний правый

    если материал 4
    uvs.Add(new Vector2(0.5, 0.5));  // нижний левый
        uvs.Add(new Vector2(0.5, 1));  // верхний левый
        uvs.Add(new Vector2(1, 0.5));  // нижний правый
        uvs.Add(new Vector2(1, 1));  // верхний правый

    материал ну как чекер и каждая клетка это другой материал надо будет добавить офсет что бы при тайлинге не было видно швов
    Ответ написан
  • Почему после запекания и объединения мешей остается еще 1 грань?

    @DrRen7
    а если в RemakeBlock() сработал Raycast не надо пересчитать мэш в который он попал ?
    Но лучше отказаться от RemakeBlock(), сделать трехмерный массив(размером чанка с типами блоков) добавлять блоки в массив а в RemakeBlock() делать проверку на типо
    if (_сhunks(this.x,this.y,this.z+1)==BlockType.empty) GenerateFrontSide();

    плюс в том чанк легко сгенерировать, и можно можно хранить различные типы блоков

    По сути надо отказать от создания конкретного блока и перейти в создание массива блоков, надо что бы где то массив чанков заполнился потом отправить его в этот скрипт и пробежаться for'ом по массиву и генерировать так если this.x,thiz.z,this.z == BlockType.empty &&this.x,thiz.z,this.z+1 != BlockType.empty => GenerateFrontSide() а в метод ещё и тип поверхности можно передать
    Ответ написан
  • Текст урона/лечения в Unity не появляется в режиме Game, но есть в Scene. Почему?

    @DrRen7
    Ну так если у вас новый canvas там трансформ а вы преобразуете (Camera.main.WorldToScreenPoint(textSpawnPoint.position)) в RectTransform вот и получаете позицию x и y в пикселях
    Попробуйте создать объект на сцене(без Instantiate) и просто сменяйте его трансформ по позиции в Game, после уже работаете с Instantiate
    Ответ написан
    Комментировать
  • Как называется направление в 3D по созданию персонажей, различных предметов по готовым концепт-артам?

    @DrRen7
    Подразделение идет не много не так, все кроме концепт художника работают с рефами.
    Условно все можно разделить на то что делается, есть hard surface - это условно 3д макс, потом есть органика(скульптинг) - это zbrush, далее есть environment - это что то среднее, но тут надо уметь материалы делать.
    Разбиение достаточно условное и понятно все uv и текстуры должны уметь делать все, да и программы тож могут делать и то и то, просто разный подход и разные цели.
    Если смотреть на прям переноса концепт арта в 3д это hard surface, там и работа с блу принтами и работа с проекционными видами
    Ответ написан
    5 комментариев
  • Как открыть меню ProBuilder в Unity?

    @DrRen7
    Теперь окно интегрировано в scene, через Overlay Menu должно быть активно Tool и Tool Settings
    68157f06c9065027787615.png
    Создание объектов это tool, в нем можно активировать билдер и получить доступ к составным частям меша а правой кнопкой активируя инструмент
    681580c111748408945291.png
    Меню как раньше больше нет, ну для быстрого прототипирования удобно
    Ответ написан
    Комментировать
  • Как запретить персонажу заходить в коллайдеры?

    @DrRen7
    Обычно что бы rb не залетал в коллайдеры у rb есть интерполяция https://docs.unity3d.com/ru/current/ScriptReferenc...
    Ответ написан
    Комментировать
  • Как применить модификатор insert в Blender?

    @DrRen7
    шоркат не помню но это все зависит от этой настройки
    6804cc645de33730885299.png
    Ответ написан
  • Почему 3д персонаж не прыгает?

    @DrRen7
    _controller.isGrounded плохо срабатывает там подобрать Skin width
    лучше использовать свое решение, ну как пример
    private void GroundCheker()
        {
            Vector3 chechSpherePos = new Vector3(transform.position.x, transform.position.y + _sphereOffSet, transform.position.z);
            _isGround = Physics.CheckSphere(chechSpherePos, _sphereCheckRad, _groundMask);
        }
        //private void OnDrawGizmos() //visDebug
        //{
        //    Gizmos.color = Color.red;
        //    Gizmos.DrawSphere(transform.position + Vector3.up * _sphereOffSet, _sphereCheckRad);
        //}
    Ответ написан
    Комментировать
  • Unity есть проблема в аниматоре?

    @DrRen7
    Вероятно нет выхода из анимации
    Надо тестить вот пару вариантов
    67f4f2a81600a273234141.png
    67f4f2b284ebc040641125.png
    Ответ написан
    Комментировать
  • Как можно наложить 1 материал поверх других?

    @DrRen7
    67f4eeb949ee5165934445.png
    Ну все работает как перемножение в фотошопе
    Потом есть Decal Projector - создает зону, которая накладывает материалы
    Ответ написан
  • Как в 3D-моделях можно сделать кости для анимации?

    @DrRen7
    Ну по сути кости это привязки это сделать можно, есть даже их физическое представление это component->physics и там есть joint. НО вот с весами костей к полигонам проблема, вроде есть APi для скрининга, но я не пробовал мне проще все в maya сделать
    Ответ написан
    Комментировать
  • Можно ли исполнять функции вне скриптов?

    @DrRen7
    Ну нужна будет база со всеми "триггерами" и действиями, что б первые и вторые реализовывали интерфейсы. Ну и скрипт, что все это проинициализирует.
    Есть паттерн стратегия и фабричный метод , из этого думаю слепить получится
    Ответ написан
    Комментировать
  • Как сделать чтобы screen space ambient occlusion был только для определенных элементов и не всем он задавался, а другим другой отдельный?

    @DrRen7
    Ну как вариант через 2 камеры.
    В Asset_Renderer добавить две Renderer Data одну с SSAO другую без. Потому сделать стек из камер main и overlay добавить разные разбить объекты по разным cullingMask и добавить камерам разные Renderer Data (rendering.renderer).
    По идеи должно работать, но обычно мне хватало на 1 камере юзать пп а на другой нет
    upd
    да попробовал работает
    67e684d9af90f052372442.png
    67e684e52c95b736853592.png
    есть только проблема с тенями, потому как каждая камера делает свои, но это решаемо
    Ответ написан
  • Unity вид от 1 лица и вид игроков на другого игрока?

    @DrRen7
    Для 1 лица мы используем полную модель только для создания тени а сам мэш выключаем.
    Если же это там надо для мп, то делаем так при инициализации игрока и только у владельца условно
    using Unity.Netcode;
    using UnityEngine;
    
    public class Owner : NetworkBehaviour
    {
        [SerializeField]MeshRenderer _mR;
    
        private void Start()
        {
            if (IsOwner) HideModel();
        }
    
        void HideModel() 
        {
            _mR = GetComponent<MeshRenderer>();
            _mR.shadowCastingMode = UnityEngine.Rendering.ShadowCastingMode.ShadowsOnly;
        }
    }
    Ответ написан
    Комментировать