• Как сделать код для 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("Вы прошли игру");
            }
        }


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

    @DrRen7
    shootPF передан со сцены или это пребаб? при запуске гейммода shootPF на месте?
    [SerializeField] GameObject shootPF;
    как вариант для отсечения взаимодействия со стороны от других скриптов
    Ответ написан
  • Почему не работает NavMeshAgent?

    @DrRen7
    nma.SetDestination(player.transform.localPosition);

    А точно нужны локальные координаты? думаю тут просто нужен transform.position
    Ответ написан
    Комментировать
  • Можно ли комбинировать 3Д и 2Д графику в Godot?

    @DrRen7
    ну если ты хочешь взаимодействовать с 3д объектами (коллайдерами) то и персонаж должен иметь логику для работы с 3д объектами, условно тебе добавится еще одна ось для движения как пример Octopath traveler.
    Самое простое что можно сделать это запеч 3д карту в 2д как было resident evil. Есть ещё вариант наложить поверх 3д объекта 2д логику, тут работать очень много и вероятно игрок не всегда будет понимать куда можно идти а куда нет.
    Ответ написан
    4 комментария
  • Как включать сразу несколько эффектов в Cinemachine?

    @DrRen7
    using UnityEngine;
    using Cinemachine;
    
    public class CameraShaker : MonoBehaviour {
    
        public CinemachineVirtualCamera _vCam;
    
        private CinemachineBasicMultiChannelPerlin _vCamNoise;
    
        void Start()
        {
            if (_vCam != null)
                _vCamNoise = _vCam.GetCinemachineComponent<Cinemachine.CinemachineBasicMultiChannelPerlin>();
        }
    
        void Update()
        {
           // _isShake = Input.GetKey(KeyCode.Space);
    
            if (Input.GetKey(KeyCode.Space))
            {
                _vCamNoise.m_AmplitudeGain = 2f;
                _vCamNoise.m_FrequencyGain = 1.2f;
            }
            else
            {
                _vCamNoise.m_AmplitudeGain = 0f;   
            }
        }
    }


    ну соответственно m_AmplitudeGain и m_FrequencyGain это из инспектора

    А все это переключать ну правильный вариант это сделать машину состояний с различными параметрами.
    Вариант попроще просто через свич
    Ответ написан
    Комментировать
  • Юнити, как сказать сцене что при загрузке нужно активировать аниматор и кнопки?

    @DrRen7
    Canvas включился и просто альфа на 0? Как переход в аниматоре сделан если через триггер его надо скинуть, можно попробовать сделать переход из any state через триггер что будет активироваться в Canvas Group при OnEnable()
    Ответ написан
  • Поможет ли видеокарта Tesla P40 24 GB, в таких приложениях как Blender и Unreal Enginie 5?

    @DrRen7
    рендерить будет быстрее из за CUDA ядер если рендер поддерживает, в анреале вряд ли что то изменится.
    Плюс стоит еще подумать о перегревах, это все конечно домыслы и надо тестить но проблема что это амд nvidia
    их вроде как не получится в Sli подключить между собой
    Ответ написан
    7 комментариев
  • Нужно ли результат функции от времени умножать на deltaTime в Unity?

    @DrRen7
    Тут надо на реальном примере посмотреть
    private void Update()
     {
         transform.position = transform.position + transform.forward * 5f * Time.deltaTime;
     }

    без дельтата тайма вообще нет времени в функции возьмем за константу что апдейт вызывается 60 раз(у нас 60фпс)
    S=S+f(t)
    где f(t) = transform.forward * 5f *(1c/60)

    Думаю для теста лучше подойдет Rigidbody, потому как там мы работает с силами(они же ускорения) а как знаем из физики скорость это первообразная от ускорения, там соответственно нет deltaTime(ну если мы работаем с силами)
    Ответ написан
    Комментировать