• Почему персонаж идёт некоторое после отжатия кнопки?

    @DrRen7
    Ну как из 1 проблем у тебя контроллер.Move используется дважды, плюс лучше использовать в апдейте это не rb
    controller.Move(_walkDirection.normalized * (_speedWalk * Time.deltaTime) +
                                 new Vector3(0.0f, _verticalVelocity, 0.0f) * Time.deltaTime);

    как то так будет
    Ответ написан
    Комментировать
  • Как симметрично изменить позу?

    @DrRen7
    Для этого надо хорошо риг настроить, те нужны контроллеры. В ином случаи будут проблемы

    А так мне копирует просто нажимаешь N получаешь меню
    664643837076c659106761.png
    наводишь на ротейт жмешь ctrl+alt+c, выбираешь другой объект наводишь на ротейт ctrl+alt+v
    Ответ написан
  • Возможно ли математически поставить под сомнение принцип случайности при раздаче карт в дураке на телефоне?

    @DrRen7
    Можно еще кстати почитать, как рандом работает в программировании. И что он чаще выдает определенные числа при определенном состоянии генератора случайных чисел.
    Ответ написан
  • Как написать скрипт Unity 2d для машины?

    @DrRen7
    Времени сейчас расписывать нету. Сделал ассет, но он в 3д, плюс материалы надо переставить
    туть
    Ответ написан
    Комментировать
  • Как решить ошибку build в unity?

    @DrRen7
    Проверь что все нужные SDK стоят и актуальны в UnityHub. Далее в самом юнити зайти и проверь, что в Edit -> Preferences -> External Tools стоят галки у рекомендованных.
    6641ff1d53c34679543579.png

    Если ошибка не пропадет там проблема с SDK (с версиями и путями), я напишу как поправить если проблема останется
    Ответ написан
  • Почему зомби (NavMesh) стоят некоторое время а потом идут к цели?

    @DrRen7
    Думаю проблема, что агенты друг другу мешают.
    using UnityEngine;
    using UnityEngine.AI;
    
    public class DebugAI : MonoBehaviour
    {
        NavMeshAgent _agent;
        void Start()
        {
            _agent = GetComponent<NavMeshAgent>();
           
        }
        private void OnDrawGizmos()
        {
            NavMeshPath path = _agent.path;
            Vector3 nowpoint = transform.position;
            foreach (Vector3 point in path.corners)
            {
                Gizmos.color = Color.yellow;
                Gizmos.DrawSphere(point, 0.15f);
                Gizmos.color= Color.green;
                Gizmos.DrawLine(nowpoint, point);
                nowpoint = point;
            }
        }
    }

    Накинь скрипт и посмотри что там с путем агента.
    Если пути нету то проблема с порядком выполнения кода
    Ответ написан
  • Как добавить поддержки для 3д модели в блендере?

    @DrRen7
    Автоматически в блендере точно нет. Добавить это не сложно, просто булиен со сложением. Вероятно такое можно получить автоматически Magics, но лучше все равно будет делать руками.
    Ответ написан
    Комментировать
  • Существует ли технология декларативной генерации модели здания?

    @DrRen7
    Возможно и есть. точно есть генераторы городов, но они совмещают уже созданную геометрию.
    А так есть нейронки что из изображений делают 3д модели или проги что создают точную модель из фоток со всех сторон. Но тут тож не все так просто, смотря для чего потом использовать, потому как сетка у модели будет не очень
    Ответ написан
  • Как сделать камеру которая не видит объект но видит тень этого объекта?

    @DrRen7
    1) Компонент mesh Renderer => Cast Shadows => Shadows only и получается что ты рендеришь только тени.
    У камеры есть Culling Mask там можно выбрать какие слои будут рендерится.
    Ну условно тебе надо что б одна камера рендерила, а другая нет. Создаешь объект делаешь еду точно такой же дочерний просто кидаешь их на разные слои.
    2) Ну или написать шейдер, но я тут не подскажу)
    Ответ написан
    Комментировать
  • Почему так сильно падает FPS при уничтожений объектов?

    @DrRen7
    ну Destroy и Instantiate достаточно ресурсоемкие команды. Как вариант можно написать пулер для зомби что бы вместо удаление их выключать а вместо создания новых активация выключенных. Вот если прям надо что бы 200 было на одном экране я бы начал присматриваться к DOTS
    Ответ написан
    Комментировать
  • Как сделать так чтобы объект шёл рандомно от объекта к объекту?

    @DrRen7
    using System.Collections.Generic;
    using UnityEditor;
    using UnityEngine;
    
    public class Tester : MonoBehaviour
    {
        [SerializeField] List<Transform> _allPoint=new List<Transform>();
        Transform _targetPos;
        [SerializeField] Transform _playerPos;
        [SerializeField] float _playerTargetDis;
        [SerializeField] float _stopDistans;
        [SerializeField] float _speed;
        bool _isToPlayer;
    
        private void Start()
        {
            SetAllPoint();
            _targetPos = SelectRandom();
        }
    
        void SetAllPoint()
        {
            foreach (GameObject t in GameObject.FindGameObjectsWithTag("Point"))
            {
                _allPoint.Add(t.transform);
            }
        }
        Transform SelectRandom()
        {
            int rand = Random.Range(0, (_allPoint.Count));
            Debug.Log(rand);
            return _allPoint[rand];
        }
        private void Update()
        {
            if (_isToPlayer) MoveToPlayer();
            else MoveToPoint();
            
                  
        }
        private void FixedUpdate()
        {
            _isToPlayer = SeePlayer();
        }
        void MoveToPoint()
        {
            transform.position = Vector3.MoveTowards(transform.position, _targetPos.position, _speed * Time.deltaTime); //заменить мб движение по нашмешу
            if(Vector3.Distance(transform.position, _targetPos.position) < _stopDistans) _targetPos = SelectRandom();
        }
       void MoveToPlayer()
        {
            transform.position = Vector3.MoveTowards(transform.position, _playerPos.position, _speed * Time.deltaTime);
        }
    
        bool SeePlayer() //тут это от проекта зависит я сделал от дальности без поля зрения и тд
        {
            if (Vector3.Distance(transform.position, _playerPos.position) > _playerTargetDis) return false;
            return true;
        }
    
    }

    ну это самое простое решение, мало вводных как объект перемещает мб навмешь и тд плюс надо подумать поле зрения и тд
    Ответ написан
  • Не сохраняется переменная в Unity через PlayerPrefs?

    @DrRen7
    я особо не пользовался PlayerPrefs но если в игре все сохраняется тогда просто нет сейва в файл попробуй добавить
    PlayerPrefs.Save(); при сохранении изменений
    Ответ написан
  • Если переносить объект и держать долгое время и скидывать то он падает очень быстро. C# Что делать?

    @DrRen7
    По сути у тебе объект не двигается а просто телепортируется, если нужно что бы падало плавно домножь вектор падения на Time. deltaTime, ну и тогда логика скрипта поменяется потому как падения надо вызывать каждый кадр
    Плюс я что то не понимаю смысл этой реализации)
    Ответ написан
  • Почему в Unity очень низкое качество?

    @DrRen7
    Ну так есть сцена где ничего не работает вы выдается минимальная картинка что бы уменьшить нагрузку, и уже сцена из камеры (Game) и там уже примерно как будет выглядеть игра главное scale не трогать он обычно идет какой то % от вашего максимального.
    6630eb3675934289363681.png

    Да и юнити модульный нужна графика по лучше надо поменять рендер. Не все просто работают с графикой по умолчанию стоит стоковый рендер даж без пост процессинга(ну условно).
    6630eccd79058590022310.png
    Ответ написан
    1 комментарий
  • Как лучше хранить и доставать ресурсы в unity?

    @DrRen7
    хмм тут нужен контекст что бы разобраться полностью
    сначала создаем ScriptableObject, что главное что б в нем было все совпадающие поля , допустим если где то нету условной иконки спрайта но тут не должно быть этого .
    using UnityEngine;
    
    public class Item : ScriptableObject
    {
        public enum ObjType
        {
            HeavyArmor, LightArmor, Swords, Stuffs
        }
        public int _id;
        public string _name;
        public ObjType _Objtype;
        public Sprite[] _sprites;
        public Sprite icon;
    }

    Далее создаем то что будет создавать нам ассеты я как пример взял оружие
    using UnityEngine;
    [CreateAssetMenu]
    public class Weapon : Item
    {
        public float _damage;
        public float _speedAttack;
    }

    теперь его можно создавать правой кнопкой
    662ff298535c1517918359.png
    Ну а потом уже где все будет хранится
    using System.Collections.Generic;
    using UnityEngine;
    using static Item;
    
    public class ItemHolder : MonoBehaviour
    {
        [SerializeField]List<Item> _allITemList = new List<Item>();
    
        [SerializeField]List<Item> _sword=new List<Item>();
    
        private void Awake()  
        {
            CreateNewList(_sword, ObjType.Swords,false);
        }
        void CreateNewList(List<Item>newlist,ObjType type,bool delete) // как пример создания листа
        {
            foreach (var item in _allITemList)
            {
                if (item._Objtype == type)
                {
                    newlist.Add(item);
                    if(delete)_allITemList.Remove(item);
                }
            }
        }
    }

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

    @DrRen7
    if (Input.GetKeyDown(KeyCode.Z) && !isPressed)
    {
        target = turretParent;
        distance = dist;
        heightPosition = height;
        isPressed = true;
    }
    
    if (Input.GetKeyDown(KeyCode.Z) && isPressed)
    {
        target = turretBarrel;
        distance = 0f;
        heightPosition = 0f;
        isPressed = false;
    }

    щас будет работать при отпуске Z ,для при нажатии поменять GetKeyDown на GetKeyUp
    Ответ написан
    Комментировать
  • Как сделать инерцию при вращении камеры в юнити?

    @DrRen7
    using UnityEngine;
     
    public class Rotate : MonoBehaviour
    {
        float _currentSpeed;
        float _targetSpeed;
        [SerializeField] float _speedRotate;
        const float c_acceleration = 20f;
        const float c_di_acceleration = 10f;
        float _acceleration;
    
        private void Update()
        {
            _targetSpeed = Input.GetAxis("Mouse Y")*_speedRotate;
            _acceleration = _targetSpeed != 0 ? c_acceleration : c_di_acceleration;
            _currentSpeed = Mathf.MoveTowards(_currentSpeed, _targetSpeed, _acceleration * Time.deltaTime);
        }
    
    }

    с константами надо поиграть что бы не было задержки при вращении
    Ответ написан
    Комментировать
  • Instantiate создаёт два объекта в unity 2D C# Что делать?

    @DrRen7
    Скорее всего проблема в настойках Rigidbody, вероятно один объект попадает в другой и получается 2 и более столкновений, это если еще и скрипты правильно размещены, но сути у вас вообще не должно ничего создаваться из за удаления объекта до создания.

    Я поправил написал должно работать , то лучше collision.gameObject.name == plusname заменить на collision.gameObject.tag
    using UnityEngine; 
     
    public class Plus : MonoBehaviour
    {
        public string plusname;
        public GameObject ReadyBall;
        GameObject _colObj;
        bool _IsCol;
    
        private void Update()
        {
            if (_IsCol) Pluser();
        }
    
        void Pluser()
        {
            _colObj.SetActive(false);
            GameObject newObj= Instantiate(ReadyBall, (_colObj.transform.position), Quaternion.identity);
            newObj.transform.name = "CreateBy" + this.transform.name; ///For Debug
            Destroy(_colObj);
            Destroy(this.gameObject);
    
        }
        void OnCollisionEnter2D(Collision2D collision)
        {
            if (collision.gameObject.name == plusname&&!_IsCol)
            {
                _colObj = collision.gameObject;
                _IsCol = true;
            }
        }
    }
    Ответ написан
    Комментировать
  • Возможно ли сделать адаптивный UI с помощью grid layout group?

    @DrRen7
    Настройка канваса
    662d4af519eca987115416.png
    Цифры в скейле должны быть какие в gamemode при сборке
    Настройка гирда
    662d4b561d2d4402692646.png
    Ставим констрейн по строкам или столбцам
    Ответ написан
    Комментировать
  • Почему текстуры с blockbench в unity ломаются?

    @DrRen7
    из за маленького размера надо отключить компрессию текстуры
    662cc4c9ec1bf572082853.png
    Вкл
    662cc5571e25e186596945.png
    Выкл
    Ответ написан
    1 комментарий