Задать вопрос
  • Видео курс по c# для продвинутых?

    @DrRen7
    Думаю достаточно получить знания чем значимый тип отличает от ссылочного.
    Ну для начало надо знать какие типы ссылочные и какие значимые, попробовать их по передавать в методы и поработать с ними через отладчик посмотреть как и что меняется и как живет.
    Написано
  • Как сделать отображение патрон в Unity?

    @DrRen7
    Gromer-Top,
    Ctrl +A применяет все трансформы
    Бесплатный аналог фотошопа это https://krita.org/en/
    Про то как что то делать, если не знаешь как сэкономить\оптимизировать, лучше сделать больше а потом удалить
    Написано
  • Как сделать отображение патрон в Unity?

    @DrRen7
    Gromer-Top,
    есть офф ресурс там всему можно обучиться https://learn.unity.com/course/create-with-code

    С моделями все сложно если подразумевается что они будут использоваться вместе ну условно автомат и магазин, то это один объект а вот если уже вешаются модули типа прицела которые не факт что будут то это отдельный объект. Смысл в том что бы сберечь видео память, если 2 объекта будут вместе то и на одном UV они могут быть
    Написано
  • Unity Collider что делает параметр Provides Contacts?

    @DrRen7
    Anton12432,
    https://docs.unity3d.com/6000.2/Documentation/Scri...

    вот такое дает
    Physics.ContactEvent += Physics_ContactEvent;

    Для себя применения я пока не нашел с одной стороны мы сразу получаем событие, но для триггеров обычно такая точность не нужна (ну исходя из нагрузки) если уж мне нужна точность я лучше физические касты сделаю чем буду создавать коллайдер
    Написано
  • Unity Collider что делает параметр Provides Contacts?

    @DrRen7
    можно будет подписаться за событие Physics.ContactEvent
    Плюсы работает быстрее чем OnCollision, минусы работает вроде как в холостую из за чего проседает оптимизация
    Написано
  • Как сделать отображение патрон в Unity?

    @DrRen7
    Gromer-Top,
    Ну можно но не стоит зачем тебе использовать Update для обновления параметров когда ты знаешь когда их следует обновить.

    public class Weapon : MonoBehaviour
    {
        int _currentAmmo;
        [SerializeField]int _maxAmmo;
        [SerializeField] UIDrawer _playerUI;
        private void Start()
        {
            _currentAmmo=_maxAmmo;
        }
        private void Update()
        {
            if (Input.GetMouseButtonDown(0)) TryFire();
        }
        void TryFire()
        {
            //Тут какая то логика на проверку можем ли мы стрелять
            Fire();
        }
        void Fire()
        {
            //тут типо логика стрельбы
            _currentAmmo--;
            _playerUI.SetNewAmmo(_currentAmmo);
        }
    
    }

    вот условно Weapon
    public class UIDrawer : MonoBehaviour
    {
        [SerializeField] private Text _ammoText;
    
        public void SetNewAmmo(int a)
        {
            _ammoText.text = a.ToString();
        }
    }

    и условный класс для UI
    Вариант не самый хороший но допустимый, мы обновляем UI не 60 раз в секунду а только когда есть изменение в параметрах
    Написано
  • Как сделать чтобы звук в юнити продолжал воспроизводиться при включении нового?

    @DrRen7
    Gromer-Top,
    Ну AudioSource по сути это плеер, а AudioClip это трек, плеер не может играть 2 трека одновременно. Но если исключение это AudioSource.PlayOneShot
    audioSource.clip = fireAudio;
    audioSource.Play();
    
    замени на 
     audioSource.PlayOneShot(fireAudio, 1f);

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

    @DrRen7
    Контекст нужен
    AudioResource не прерывает воспроиизведение другого AudioResource, но если мы перезапускаем AudioResource то он прерывает и запускается заново
    Написано
  • Как реализовать контроллер игрока в юнити?

    @DrRen7
    Gromer-Top,
    так по сути ничего не поднялось как 2 раза вызывался _controller.Move так и вызывается вот только сейчас ошибка видна тк они из разных методов

    void MovementLogic()
        {
            _controller.Move(_moveDir * _playerSpeed * Time.deltaTime +_playerVelocity * Time.deltaTime );
    
        }
     void Gravity()
        {
            if (_groundedPlayer && _playerVelocity.y < 0){
                _playerVelocity.y = 0f;
            }
            _playerVelocity.y += _gravityValue * Time.deltaTime;
        }

    но зачем там private Vector3 _playerVelocity как вектор когда его можно заменить на float ?
    void MovementLogic()
        {
    
            _controller.Move(_moveDir * _playerSpeed * Time.deltaTime +Vector3.up*_playerVelocity * Time.deltaTime );
    
        }

    ну и _moveDir надо нормализовать потому как нажав W +D ты получишь длину вектора 1.41 а если будешь держать W то 1 , ну и соответственно движение по диагонали будет в 1,5 раза быстрее
    Написано
  • Как реализовать контроллер игрока в юнити?

    @DrRen7
    Gromer-Top,
    Ну тут все не все))
    Как минимум ещё нужно получить\обновить знания по векторной математики, потому как персонаж будет по диагонали быстрее чем по прямой)

    И самое главное это нейминг
    movePlayer : MonoBehaviour 
    
    void movementLogic()

    Классы и методы с большой буквы

    Удачи в освоении )
    Написано
  • Как реализовать контроллер игрока в юнити?

    @DrRen7
    Gromer-Top,
    if (Input.GetButtonDown("Jump") && _groundedPlayer)
            {
                _playerVelocity.y += Mathf.Sqrt(_jumpHeight * -3.0f * _gravityValue);
            }

    все инпуны в апдейте

    _controller.Move(_moveDir * _playerSpeed);
    не хватает Time.deltaTime

    _controller.Move(_moveDir * _playerSpeed);
    ****
    _controller.Move(_playerVelocity * Time.deltaTime);

    не имеет смысла 2 раза вызывать в 1 методе
    и в Update мы используем Time.deltaTime в FixedUpdate() Time.fixedDeltaTime
    а вот с самим СС сложно его можно использовать как в Update так и в FixedUpdate, но тк он не зависит от сил лучше будет в Update
    Написано
  • Как реализовать контроллер игрока в юнити?

    @DrRen7
    Gromer-Top,
    Ну я писал из головы, ну главное что все понятно)

    у Rb есть констрейны их и надо использовать если не нужна симуляция
    67ac7193b2045758177851.png
    RB это физическое движение и что бы убрать скольжение нужен физический материал с трением
    67ac72a84e4e5665074594.png

    C RB проблем очень много, там и тряска объектов и залипание в поверхностях. Лучше бери CharacterController там только с гравитацией повозится
    Написано
  • Как реализовать контроллер игрока в юнити?

    @DrRen7
    void Update()
    {
    _moveDir = tranform.forward * Input.GetAxis("Horizontal")+tranform.right * Input.GetAxis("Vertical");
    }
    void FixedUpdate()
    {
     rb.AddForce(_moveDir*_moveSpeed, ForceMode.VelocityChange);
    }

    Ну плюс минус так
    public GameObject только есть надо использовать из другого класса если надо видеть в инспекторе то [SerializeField] GameObject.
    По поводу разбиения скриптов для обучение пока не стоит, а так по принципам солид да, но там уже будет создаваться не новый скприт с вращением/движением а просто класс без наследства от MonoBehaviour.
    Пока учишься делай разделения на контроллер тут все для движения, UI тут все для работы с UI и тд.
    Написано
  • Как оптимизировать забор в blender 3d?

    @DrRen7
    Dark_Dexter,
    Для игр надо убрать все ребра, что не отвечают за форму, потом все стоит триангулировать.А далее все зависит от Тз может придется разбивать 1 на несколько, как пример можно всю внутреннюю часть отделить от внешней что бы не пускать лупы. Потом ещё есть подгонка конкретного места ну условно если никто не будет видеть заднюю часть забора то она не нужна, но тут будет вопрос с повторяемость потому как иногда проще использовать 2 одинаковых объекта даж если у другого не используются 40% полигонов. ну все зависит от тз.
    Написано
  • Как импортировать модели Atomic heart в Blender или Unreal Engine?

    @DrRen7
    Ну как по мне лучше искать какой то анпак тул чем вытаскивать так, там проблем будет куча от расклеенных полигонов до артефактов. Был бы ещё движок какой то кастомный то да это было оправдано, а тут UE вот поиск выдал кто то собирал https://github.com/Buckminsterfullerene02/UE-Moddi... мб что так полезное и получится найти
    Написано
  • Как исправить исчезание объектов в Unity6?

    @DrRen7
    не уверен, но попробуй отключить dynamic clipping 679c00c81c9a5525051121.png
    Написано
  • В чем причина ошибки в Unity: error CS0117: 'Transform' does not contain a definition for 'LocalRotation'?

    @DrRen7
    IvanPetrov234567,
    using UnityEngine;
    
    public class PlayerRotating: MonoBehaviour
    {
        float _rotationgSpeed;
        float _minPitch=-89f;
        float _maxPitch=89f;
        [SerializeField]Transform _objYaw;  // mainObj
        [SerializeField]Transform _objPitch; //camObj
        float _yaw;
        float _pitch;
    
       
        
        public void Update()
        {
    		float x = Input.GetAxis("Mouse X");
    		float y = Input.GetAxis("Mouse Y");
            RotateUpdate(x,y);
        }
        public void RotateUpdate(float x,float y)
        {
            _yaw += x*_rotationgSpeed*Time.deltaTime;
            _pitch-=y*_rotationgSpeed*Time.deltaTime;
            _objYaw.transform.rotation = Quaternion.Euler(0,Clamper(_yaw),0);
            _objPitch.transform.localRotation=Quaternion.Euler(Clamper(_pitch,_minPitch,_maxPitch),0,0);
    
    
        }
        float Clamper(float angle,float min=-360f,float max=360f)
        {
            if (angle < -360f) angle += 360f;
            if (angle > 360f) angle -= 360f;
            if(min!=-360f||max!=360f) angle = Mathf.Clamp(angle, min, max);
            return angle;
        }
    }

    Должно работать, я вынул этот класс из стейта а так все методы должны быть приватными
    Написано