Задать вопрос
  • Как исправить проблему "розовых текстур" в 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"); //выгружаем первую сцену
    Ответ написан
    Комментировать
  • Как сделать код для Unity, чтобы вывести текст с кнопок на несколько ячеек?

    @DrRen7
    Надо просто создать переменную где будет хранится значение для каждой кнопки а после нажатия определенной кнопки и совершения определенных действий с переменными должна вызваться функция с присвоениемние переменной к кнопки.
    как пример
    using UnityEngine;
    using UnityEngine.UI;
    
    public class Calk : MonoBehaviour
    {
        float num1;
        float num2;
        Text button1;
        Text button2;
    
        void TextButtonLableUpdate()
        {
            button1.text = num1.ToString();
            button2.text = num2.ToString();
        }
        public void MinAndSum()
        {
            float a = num1 + num2;
            num2 -= num1;
            num1 = a;
            TextButtonLableUpdate();
    
        }
    
    }
    Ответ написан
    Комментировать
  • Как сделать чтобы платформа ждала в конечной и стартовой точке заданное время?

    @DrRen7
    using System.Collections;
    using UnityEngine;
    
    public class JumpPad : MonoBehaviour
    {
        [SerializeField]GameObject _platform;
        [SerializeField] float _platformSpeed;
        bool _canMove;
        [SerializeField] float _timeToMove;
        [SerializeField]Vector3 _nextPos;
        private void Update()
        {
            if (_canMove) MovePlatform(_nextPos);
        }
        public void SetGo()
        {
            StartCoroutine(SetGoCor());
        }
        IEnumerator SetGoCor()
        {
                                                                      //тут можно сменить таргет примерно что у тебя есть 
    ///if(platform.transform.position == startPoint.position) _targetPos=endPoint.position;
    //else _targetPos=startPoint.position;
            yield return new WaitForSeconds(_timeToMove);
            _canMove=true; 
        }
    
        void MovePlatform(Vector3 targetPos)
        {
            if (_platform.transform.position != targetPos)
            {
                _platform.transform.position = Vector3.MoveTowards(_platform.transform.position, targetPos, _platformSpeed * Time.deltaTime);
            }
            else {
    _canMove = false;
    SetGo();
    }
        }
    
    }


    есть ещё команда Invoke которая запускает метод через определенное время но в ней есть проблема с тем что ты передаешь имя метода через string что может потом привести в ошибке если что то будет переделываться
    Ответ написан
  • Не пойму что не так, Time.deltaTime вычетается всего один раз, хотя должно каждый кадр что делать?

    @DrRen7
    ты постоянно желаешь это delay - Time.deltaTime; (5-Time.deltaTime;)
    void Start
    {
    timer=delay;
    }
    void FixedUpdate()
        {
    
            if(startTimer)
    {
                timer = timer - Time.fixedDeltaTime;
    if(timer <=0)
    {
    startTimer =false;
    timer=delay;
    }
           }
               
        }
    Ответ написан
  • Что делать если персонаж двигается влево после добавления скрипта на врага?

    @DrRen7
    else if (Vector2.Distance(transform.position, player.position) < stoppingdistance && (Vector2.Distance(transform.position, player.position) > retreatDistance))
            {
                transform.position = this.transform.position;
            }

    это не нужно transform.position = this.transform.position; не имеет смысл
    else if (Vector2.Distance(transform.position, player.position) < retreatDistance)
            {
                transform.position = Vector2.MoveTowards(transform.position, player.position, -speed * Time.deltaTime);
            }

    проблема скорее всего тут, вероятно лучше не скорость умножать на минус 1 а таргет позишен

    float dist=Vector2.Distance(transform.position,player.position);
    if(dist>stoppingdistance)transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime);
    else if(dist<retreatDistance) transform.position = Vector2.MoveTowards(transform.position, player.position*-Vector2.one, speed * Time.deltaTime); //тут надо смотреть на игра сбоку или вид с верху

    а ну и конечно stoppingdistance>retreatDistance
    а и да если этот скрип есть на персонаже то персонаж будет сам от себя убегать
    Ответ написан
    Комментировать
  • При прикосновении игрока к вертикальному обьекту и движению в его сторону игрок зависает рядом со стеной в Unity2D?

    @DrRen7
    Это проблема с Rigidbody решить довольно просто когда игрок в воздухе необходимо назначить другой PhysicsMaterial, условно получается из за терния и приложенной силы игрок просто будет зависать на месте. Сейчас точно настойки для материала не подскажу вероятно все должно быть на 0, был проект для это пришлось реализовать как найду дополню ответ
    Upd
    66a2ef3254220915395225.png
    public PhysicMaterial _defaultMaterial; // стандартный материал
      public PhysicMaterial _materialWhenJumping; //матетериал для воздуха
    
    CharacterCollider = GetComponent<Collider>(); //получаем коллайдер перса 
    CharacterCollider.material = _defaultMaterial; //<-меняем материал коллайдера
    Ответ написан
    Комментировать
  • Как на движке Unity в игре про поезд установить трение на рельсы?

    @DrRen7
    Тут ещё смотря как ты поезд передвигаешь, если используешь физику но правильно будет назначить на коллайдер Physics Material там как раз есть Dynamic Friction - трение при движении и Static Friction - трение положения покоя
    Ответ написан
    Комментировать
  • Как решить проблемы с размером модели после блендера в юнити?

    @DrRen7
    Размер можно выбрать в юнити при импорте модели
    669ceb498e598059777987.png
    Scale Factor то что нужно изменить, ну и соответственно из этого ещё можно увидеть что 1 см из блендера будет равен 1 м в юнити, так что другой вариант это изменение единиц измерение при экспорте
    Ответ написан
    Комментировать
  • Как вернуть предмет на своё место в Unity 3d?

    @DrRen7
    Vector3 _startPos;
     void Awake()
     {
         _startPos=transform.position;
     }
     void OnEnable()
     {
         transform.position= _startPos;
     }
    Ответ написан
    Комментировать
  • Почему не работает groundcheck?

    @DrRen7
    в 3д обычно использую Physics.CheckSphere каждый кадр думаю для 2д есть какой то аналог.
    Вероятно если добавить Rb на землю ошибка пропадет
    Ответ написан
    Комментировать
  • Как с помощью тэга назначить public Text -----; в unity C#?

    @DrRen7
    Text это компонент а через FindWithTag можно получить GO.
    moneytext = GameObject.FindWithTag("moneyText").GetComponent<Text>();
    Ответ написан
    Комментировать
  • Как реализовать изменение цветовой схемы (типа светлая/темная тема) в приложении, написанном на Unity?

    @DrRen7
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    using TMPro;
    
    public class MenuColor : MonoBehaviour
    {
        [SerializeField] Image _backGround; //Добавляем фон в инспекторе
        [SerializeField] List<Button> _buttons; //добавляем кнопки в инспекторе
        private void Start()
        {
            DarkMode();
        }
        public void DarkMode()
        {
            _backGround.color = Color.black;                                           // Меняет цвет бекграунда
            for(int i=0;i<_buttons.Count;i++) 
            {
                _buttons[i].GetComponent<Image>().color = Color.white;                          // обводка кнопки 
                _buttons[i].transform.GetChild(0).GetComponent<Image>().color = Color.black;    //цвет кнопки 
                TextMeshProUGUI text = _buttons[i].transform.GetChild(1).GetComponent<TextMeshProUGUI>();//цвет шрифта кнопки
               text.color = Color.white;
                text.faceColor=Color.white;
            
            }
        }
        public void WhiteMode()
        {
            _backGround.color = Color.white;
            for (int i = 0; i < _buttons.Count; i++)
            {
                _buttons[i].GetComponent<Image>().color = Color.black;
                _buttons[i].transform.GetChild(0).GetComponent<Image>().color = Color.white;
                TextMeshProUGUI text = _buttons[i].transform.GetChild(1).GetComponent<TextMeshProUGUI>();
                text.color = Color.black;
                text.faceColor = Color.black;
            }
        }
    }

    Кнопка (родительский объект стандартная кнопка, 1 изображение чучуть меньше кнопки 2 дочерний текст )
    66857e14a77e3957747932.png
    Итого
    66857f375f7a3004009123.png

    цвет можно задавать через числа new Color32(255,0,0,255)(это красный) rgb и альфа
    Ответ написан
    Комментировать
  • Как сделать так чтобы руки следовали за камерой не сразу а с задержкой?

    @DrRen7
    hand.rotate = Quaternion.RotateTowards(hand.rotate, target.rotate,speedrotate);

    в данном случаи руки будут вращаться со скорость, что поставите, если надо что б прям какое то время стояли
    то условно можно через коорутиру speedrotate сделать 0 на какое то время
    Ответ написан
    Комментировать
  • Как сделать, чтобы вопросы шли по порядку списка, либо убрать повторения их?

    @DrRen7
    void questionGenerate()
        {
            if (qList.Count > 0)
            {
                randQ = Random.Range(0, qList.Count); //если не нужен рандом это удалить
                crntQ = qList[randQ] as QuestionList;
                qText.text = crntQ.question;
                List<string> answers = new List<string>(crntQ.answers);
                for (int i = 0; i < crntQ.answers.Length; i++)
                {
                    int rand = Random.Range(0, answers.Count);
                    answersText[i].text = answers[rand];
                    answers.RemoveAt(rand);
                                                             
                }
    qList.RemoveAt(qList[randQ]);
                                                  
            }
            else
            {
                Debug.Log("Вы прошли игру");
            }
        }


    смысл в том что надо удалить уже заданный вопрос из листа где лежат все вопросы
    Ответ написан
    Комментировать