• Как сделать размытие 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
    интерполяцию какую то точно надо, коллизия думаю у вас и так стоит, ну а основное все в нули
    Ответ написан
  • Как сделать рикошет пуль от Tilemap'a?

    @DrRen7
    надо поиграть с вектором пули и нормалью поверхности, накидал быстрый скрипт как идею но лучше все довести до ума
    Camera _mCam;
       Vector2 _mousePos;
       [SerializeField] ContactFilter2D _filders;
       RaycastHit2D[] _hits;
       LineRenderer _lineRenderer;
       private void Start()
       {
           _mCam=Camera.main;
           _hits=new RaycastHit2D[1];
           _lineRenderer = gameObject.AddComponent<LineRenderer>();
           _lineRenderer.widthMultiplier = 0.2f;
           _lineRenderer.positionCount = 3;
       }
    
       private void Update()
       {
           
           Vector2 mousePos = _mCam.ScreenToWorldPoint(Input.mousePosition);
           if(Physics2D.Linecast(transform.position, mousePos, _filders, _hits)>0)
           {
               _lineRenderer.enabled = true;
               _lineRenderer.SetPosition(0, transform.position);
               _lineRenderer.SetPosition(1, _hits[0].point);
               Vector2 v2= _hits[0].point- (Vector2)transform.position; // делаю вектор направления 
               _lineRenderer.SetPosition(2, v2*_hits[0].normal); // умножаю вектор направления на нормаль
    
           }
           else
           {
               _lineRenderer.enabled = false;
           } 
       }
    Ответ написан
    Комментировать
  • Проблема с юнити 2D?

    @DrRen7
    надо просто изменить интерфейс
    самый просто способ скинуть все в default
    66f1af55cc581601912655.png
    или же открыть все нужные окна в ручную
    Windows -> General(там первый блок точно нужен) они же открываются на ctrl + (1-5)
    должно быть примерно так
    66f1b0b892915907484227.png
    Ответ написан
    Комментировать
  • Как правильно сделать сохранение улучшений для игры?

    @DrRen7
    Ну можно сделать класс на объекте что будет хранить лист с классами для улучшений или же поработать со Scriptable Object.
    Ну а сохранять и загружать через JsonUtility как пример (это вроде для SO, тут идет запись в файл и вытаскивания из файла состояния SO)
    using System.IO;
    ....
    string _name;
    public void SaveState()
    {
        var json = JsonUtility.ToJson(this);
        File.WriteAllText(Application.persistentDataPath + $"{_name}.so",json);
    }
    public void LoadState()
    {
        var json = File.ReadAllText(Application.persistentDataPath + $"{_name}.so");
        JsonUtility.FromJsonOverwrite(json, this);
    }
    Ответ написан
    2 комментария
  • Как переменную string преобразовать в List в C#?

    @DrRen7
    Как по мне, переменных не хватает)
    //public static List listName = new List();
    public static List<char> listName = new List<char>(); //тут можно даж var listName = new List<char>();
    
    //var Array.....
    char[] Array....
    Ответ написан
  • Как исправить подергивание камеры и поворот игрока во время движения?

    @DrRen7
    а зачем тут rb и сс ?)
    подергивание можно убрать правильным порядком вызова, поворот камеры надо вызывать в конце (LateUpdate)
    из проблем тут вызов СС.Move 2 раза
    Ответ написан
    2 комментария
  • Можно ли веб Яндекс игру, написанную на Unity перенести в telegram?

    @DrRen7
    Ну чисто теоретически можно. Если игра будет лежать на гите и от туда загружаться в телегу.
    Ответ написан
    Комментировать
  • Как исправить проблему "розовых текстур" в Unity (URP)?

    @DrRen7
    проблемы с материалом 90% что он так и остался обычным а нет lit ну и 10 % что какая то проблема с текстурами это про розовое.
    О белом нет текстур, форма поменяется когда будет прозрачность(opacity) и normal map
    Если меняли материал через авто конвектор то он в последнее время глючит не меняет ничего в префабах и тд
    Ответ написан
    Комментировать
  • Weld причёски к голове UNITY HDRP 3D?

    @DrRen7
    надо волосы сделать дочерним объектом костей головы
    это открывать mixamorig:Spine и дальше туда идти потом будет разбитие на руки и шею вероятно последняя кость подойдет а мб будет нужна шея тести.
    Ответ написан
    1 комментарий
  • Что за ресурсы деревьев?

    @DrRen7
    вероятно, это сгенерировано с помощью Mtree - Tree Creation даж не рекомендую искать последний апдейт был давно 66cd07d6cd51f481911400.png

    Сейчас SpeedTree бесплатен так что и смысла нету что то искать
    Ответ написан
    Комментировать
  • Как сделали дверь открывается именно из-за данной картинки?

    @DrRen7
    1)создаешь зону с триггером заносишь
    2) проверяешь через таг нужный ли объект
    3) запускаешь метод

    void DoorOpen()
        {
            //открываей дверь
        }
    
        private void OnTriggerEnter(Collider other)
        {
            if (other.tag == "key")
            {
                DoorOpen();
            }
        }

    там rb нужно и тд лучше почитать на оффсайте
    Ответ написан
    Комментировать
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    Все считывания клавиш надо делать в Update(). По простому FixedUpdate() не всегда считывает нажатие клавиш,зажатия и векторные значения в принципе допустимы но точность управления снизится

    void Update()
        {
           
           if (Input.GetKeyDown(KeyCode.Space)) Jump();
        }
    void Jump()
        {
               rb.AddForce(transform.up*jumpForce, ForceMode2D.Impulse);
        }

    rb BodyType=>Dynamic
    если не будет работать то надо поиграть с весом объекта
    Ответ написан
    7 комментариев
  • Мне нужно запустить код с одной сцены в другой, как это можно реализовать?

    @DrRen7
    SceneManager.LoadSceneAsync("Scene 2", LoadSceneMode.Additive); //загружаешь сцену в иерархию
    SceneManager.SetActiveScene(SceneManager.GetSceneByName("Scene 2")); //делаешь активной
    SceneManager.UnloadSceneAsync("Scene 1"); //выгружаем первую сцену
    Ответ написан
    Комментировать