Задать вопрос
  • Как в блендере найти окно аутлайнера?

    @DrRen7
    6766a5a8e54c4700182336.png
    идешь в любой угол пока курсов не станет прицелом, зажимаешь в вытягиваешь новое окно
    потом жмешь на кнопку и изменяешь окно на что то нужное
    6766a6145f12a508556500.png
    Ответ написан
    Комментировать
  • Как в Unity зафиксировать ориентацию системы частиц относительно глобальных координат?

    @DrRen7
    В partical system делаешь start speed = 0, далее идешь в Velocity Over Lifetime там направление line y и space world
    Так же в partical system есть simulation space это отвечает признана ли частица к месту создания, частица может крутится при Local режиме но всегда будет подниматься вверх
    Ответ написан
    Комментировать
  • Не работает OnCollisionCollider с дочерними объектами в Unity, что делать?

    @DrRen7
    Скинь хоть посмотреть что есть и примерно что там с коллайдерами
    А так по сути ИИ и не должен хоть как то взаимодействовать с оружием, это оружие взаимодействует с ИИ. Те оружие должно находить ИИ (точнее скрипт а лучше интерфейс) и вызывать метод с получением урона.
    Вопрос как получить оружию скрипт с дамагой, можно и через коллизию но тогда стоит проверить что есть все компоненты типа коллайдера в и риджедбоди. Другой вариант это использовать физические касты, тут есть несколько вариантов это использовать 1 каст сферы и сделать ограничение по градусам от лица игрока. Другой вариант это нацепить на оружие касты и вызывать их. Это будет как то так 6752e4882f369424392742.png
    по реализации https://docs.unity3d.com/ru/current/ScriptReferenc... для первого
    для второго https://docs.unity3d.com/ru/current/ScriptReferenc...
    Ответ написан
  • Как сделать так что бы заиграла анимация допустим в специальном месте на карте?

    @DrRen7
    Советую пройти https://learn.unity.com/mission/programming-basics лучше получить хоть какие то фундаментальные знания о коде и движке
    Нужно сделать триггер сделать и какие методы есть все есть тут
    https://docs.unity3d.com/Manual/collider-interacti...

    как пример
    public class Player:MonoBehaviour  //скрипт игрока
    {
        public void Something() //метод в игроке который что то делает 
        {
            
        }
    }

    public class TriggerZone : MonoBehaviour // скрипт на зоне 
    {
        private void OnTriggerEnter(Collider other) // стандартный метод для триггера на вход объекта 
        {
            if(other.TryGetComponent(out Player player)) //проверка что обьект содержит скрипт 
            {
                player.Something(); //вызов метода из скрипта 
            }
        }
    }

    Оно просто так работать не будет, должны быть определенные компоненты такие как коллайдер и Rigidbody, все есть в мануале https://docs.unity3d.com/Manual/collision-section.html
    Ответ написан
  • Почему изменяется спрайт в Unity при переходе на окно game?

    @DrRen7
    scale в game больше 1, вот все и распадается, 3д графика на х3 становится похоже на пс1
    Ответ написан
  • Как включить отображение костей в unity?

    @DrRen7
    Надо скачать ассет Animation Rigging, там есть компонент Bone Renderer
    Закидываешь в трансформ нужные кости и они будут отображаться
    673f4224a2dae912153173.png
    про редактирования не понятно, можно сделать анимацию и Ik или просто изменить трансформ но вот что бы кость отвечала за другую обрасти это надо делать скиннинг и это лучше делать в редакторе графики
    Ответ написан
  • Как в URP игнорировать свет на камере?

    @DrRen7
    6739ee4c30235387577379.png
    6739ee57c7779378270462.png
    ну вероятно можно и совсем без источника света обойтись через шейдеры
    Ответ написан
    3 комментария
  • Как сделать так что бы после анимации был переход в другую сцену?

    @DrRen7
    Ну начнем с простого это переход на другую сцену лучше почитать тут
    using UnityEngine.SceneManagement;
    
    static public class SceneWalker   //как пример что бы не создавать обьект со скриптом 
    {
        static public void SceneChanger(string sceneName,int sceneNumber =-1) // создаем метод перехода по имени или номеру сцены 
        {
            if (sceneNumber>=0) SceneManager.LoadScene(sceneName);
            else SceneManager.LoadScene(sceneName);      
        }
    }

    в первой сцене создаем объект со скриптом

    using UnityEngine;
    
    public class SceneSelect : MonoBehaviour
    {
        void Start()
        {
            Invoke(nameof(LoadNewScene), 2f); // через 2 секунды запуск метода LoadNewScene()
        }
    
        void LoadNewScene()
        {
            Debug.Log("Loding");
            SceneWalker.SceneChanger("Scene2",1);  // обращаетмя к реализации SceneWalker для загрузки новой сцены тут или имя или порядок
        }
    }

    далее надо обязательно добавить сцены в билд
    67367661082c3525607411.png
    ну а если нужно плавное затемнение, то перед LoadNewScene() можно вызвать другой метод который потом вызовет LoadNewScene()
    Ну думаю с переходам с переходом понятен, просто надо почитать документацию. Теперь вопрос как через анимацию запустить LoadNewScene() подхода есть 2
    создаю простую анимацию
    1) модифицируем 2 скрипт
    [SerializeField]GameObject box;   //обьект с анимацией 
        Animator _animator;  // аниматор что содержит анимацию
        void Start()
        {
            _animator = box.GetComponent<Animator>(); // получаем с обьекта компонент 
            float animTime = _animator.GetCurrentAnimatorStateInfo(0).length; // получаем время воспроизведения анимации 
            Invoke(nameof(LoadNewScene), animTime+0.1f); // запускам переход метод перехода на другую сцену через время анимации +0.1 сек 
        }

    2) модифицируем 2 скрипт
    using UnityEngine;
    
    public class SceneSelect : MonoBehaviour
    {
        public void LoadNewScene()
        {
            Debug.Log("Loading");
            SceneWalker.SceneChanger("Scene2",1);
        }
    }

    Прикрепляем его к объекту с анимацией выбираем. Выбираем анимацию и добавляем Event в конец анимации
    673681c5bb905951609807.png
    Ответ написан
    1 комментарий
  • Почему не могу создать файл c# в проекте Unity 6?

    @DrRen7
    67366a583c2f4954732896.png
    Ответ написан
    Комментировать
  • Поддерживает ли Windows 10 анимацию кликов мыши?

    @DrRen7
    Если не ошибаюсь то по умолчанию нет паттерна на анимацию клика, есть условные стили на разные действия(там обычная стрелка или ссылка, текст загрузка и тд). Да и если у вас демонстрация лучше скачать то что будет показывать кнопки, обычно там есть и анимация клика и обводка мыши и тд. Пользовался Keyviz где то год назад, там были клики и кнопки и если не надо то все выключалось
    Ответ написан
    Комментировать
  • Почему не меняются переменные в цикле (С++)?

    @DrRen7
    if (A = 0) {}; тут идет присвоение если надо сравнение то вероятно стоит if (A == 0) {}; )
    Ответ написан
    1 комментарий
  • Unity конфликт функций Move и Velocity?

    @DrRen7
    у вас 2 раза вызывает _characterController.Move
    в Velocity() сделайте расчет float verticalMover(это будет velocity.y)
    private void Movement() ....
    _characterController.Move(move * _speed * Time.deltaTime+transform.up*verticalMover*Time.deltaTime );
    ....
    Ответ написан
    Комментировать
  • Как выполнять определенные действия персонажа в Blender, перенесенные из игрового движка (UE5, Unity)?

    @DrRen7
    Ну чисто теоретически я возьму для примера Unity
    1) надо снизить частоту кадров до 30
    2) по кадрово сохранить положения и вращения всех костей в гейммоде
    3) полученное положение конвертировать в анимейшен курф и создать крип
    4) клип перенести в блендер через fbx exporter

    Проблема в том какую информацию сохранять допустим у нас риг персонажа и там root и нам нужен transform те глобальные rotation и position а вот след кости уже идут только локальные вращения. Надо смотреть на риг и уже исходя из этого смотреть что стоит записывать.
    Скорее всего будут проблемы с тангентами ключей, что то починится авто и удалением избыточных. Будут примерно те же проблемы что при мокапе , хотя если так подумать это и будет диджитал мокап
    Ответ написан
    Комментировать
  • Как сделать размытие image в юнити как в cs go?

    @DrRen7
    motion blur?
    Это делает через прост процессинг 671521f1c4c92173667192.png
    к примеру такое будет если сменить рендер на URP
    Ответ написан
    Комментировать
  • Как сделать простую дверь в юнити для мобильных устройств и что бы она открывалась и закрывалась по кнопке?

    @DrRen7
    Ну есть функция Debug.log("Ошибка"); так что смотри что после raycast"a не сработало
    примерно должно быть так
    GameObject _screenbuttor; //элемент UI с подсказкой для открытия двери
     LayerMask _doorMask;//маска двери 
     private void Update()
     {
        
         Transform cam = Camera.main.transform; // откуда пускаем луч будет просто камера 
         RaycastHit hitInfo; //информация о попадание луча
         if (Physics.Raycast(cam.position,cam.forward,out hitInfo, 10f,_doorMask)) 
         {
             Debug.Log("hit work"); //проверка что все работает 
             _screenbuttor.SetActive(true); // подсказку активной 
         }
         else
         {
             _screenbuttor.SetActive(false);
         }
    
         if (_screenbuttor.activeSelf && Input.GetKeyDown(KeyCode.E)) //если подсказка активна и нажата кнопка E 
         {
             Debug.Log("Door Interactive"); // проверяем что все сработало 
             hitInfo.collider.GetComponent<Door>().InteractingDoor(); // вызываем метод для работы с дверью
         }

    На двери
    using UnityEngine;
    
    public class Door : MonoBehaviour
    {
        [SerializeField] bool _isOpen; 
       // public bool isOpen=> _isOpen;
    
        public void InteractingDoor()
        {
            Debug.Log("Use Door Interact"); // проверяем что перешли в другой скрипт 
            if (_isOpen) CloseDoor();
            else OpenDoor();
        }
    
        void CloseDoor()
        {
            Debug.Log("Close Door"); //проверяем что включился метод для закрытия двери
            //Ну тут действия для закрытия
        }
        void OpenDoor()
        {
            Debug.Log("Open Door"); //проверяем что включился метод для открытия двери
            //Тут действия для открытия
        }
    }

    Ну и смотри в консоле что не сработало значит там и ошибка, если все работает значит что то не так с методом для открытия двери, проверить анимационный контроллер или как там отрывается
    Ответ написан
  • Как сделать обход препятствий в 2.5d Unity-игре?

    @DrRen7
    как вариант просто один навмешь
    67080aa7b00d2608603939.jpeg
    я вот не знаю как с мостом быть наверно вот там и будет нужен линк
    Ответ написан
  • Как перенести модель с несколькими материалами из блендера в unity?

    @DrRen7
    Если все правильно сделано то нажимаешь на модель и там все есть
    6706b2f8d1f6b508359439.png
    Но лучше будет сделать uv развертку и текстуры а потом создать материал в unity или marmoset toolbag
    Ответ написан
    Комментировать
  • Что делать если префаб врага не находит кординаты игрока?

    @DrRen7
    Префаб не сохранит ссылку на трансформ объекта что не входит в префаб.
    Нужно добавить метод на Transform player
    Добавь в enemy
    public void SetTarget(Transform target)
     {
         player = target;
     }

    В скрипт что будет делать инстанс надо добавить ссылку на игрока
    GameObject newEnemy = Instantiate(_enemy.gameObject);
     newEnemy.GetComponent<Enemy>().SetTarget(_player.transform);

    Ну и так по скрипту пройдись
    Transform player == (Player)pl.gameObject.transform
    Transform enemy ==this.transform == enemyObject.transform

    по сути тебе надо во врага передать ссылку на скрипт игрока потому как есть методы что с ним взаимодействуют а имея скрип можно получить и transform
    Ответ написан
  • Как запретить мобам спауниться друг в друга?

    @DrRen7
    Любой каст из точки спавка делаешь и если он не срабатывает то спавн пустой
    void Spawner(Transform spawnPos)
     {
         RaycastHit[] hits= Physics.SphereCastAll(spawnPos.position, Radius, spawnPos.up, 2f, _enemymask, QueryTriggerInteraction.UseGlobal);
         if (hits.Length > 0) return;
         GameObject enemy = Instantiate(_enemy.gameObject, spawnPos);
     }

    Ну лучом можно будет стрелять если (hits.Length > 0) просто нарисовать LineReneder а через hits можно уничтожить объекты или получить компонент(ну условный heals) и нанести урон
    Ответ написан
    Комментировать
  • Пули в Unity 2D?

    @DrRen7
    В 2д не силен, да и для пуль предпочитаю юзать физиккасты а не rb. Но вот проблемы
    Rigibody лучше не крутить через код, лучше ему переназначить вектор направления.
    Прямоугольный коллайдер будет застревать в лучше взять циркуль
    код примерно такой
    Vector2 _moveDir;
        Rigidbody2D _rb;
        [SerializeField] float _speed=5f;
        bool _blockMoveUpdate;
        void Start()
        {
            _rb = GetComponent<Rigidbody2D>();
            ShootUpdate(transform.right);
        }
    
        private void ShootUpdate(Vector2 newDir)
        {
            _moveDir = newDir.normalized;
            _rb.velocity = _moveDir*_speed;
            if(_blockMoveUpdate)_blockMoveUpdate = false;
        }
    
        private void OnCollisionEnter2D(Collision2D collision)
        {
            if (!_blockMoveUpdate)
            {
                _blockMoveUpdate = true;
                var coll = collision.contacts[0];
                Vector2 newMove = Vector2.Reflect(_rb.velocity.normalized, coll.normal);
                ShootUpdate(newMove);
            }
               
        }

    _blockMoveUpdate тут работать не будет, но можно через FixedUpdate придумать реализацию но надо тестить
    ну и настройки Rb
    66f44c1e85257625307723.png
    интерполяцию какую то точно надо, коллизия думаю у вас и так стоит, ну а основное все в нули
    Ответ написан