Задать вопрос
  • Как правильно сделать сохранение улучшений для игры?

    @DrRen7
    yraiv, хмм тут надо на проект смотреть допустим если у тебя ну это бафы значит их определенное количество тут будут лучше SO, ну а если это апгрейды и условные бафы постоянно улучшаются то SO можно использовать как отправную точку со значениями первого и процента улучшения ну тогда мы все храним в классе

    using UnityEngine;
    [System.Serializable]
    public class Upgrade
    {
        [SerializeField] private string _typeName;
        [SerializeField] private int _price;
        [SerializeField] private float _damage;
    }

    вот наш класс для апгрейда
    using System.Collections.Generic;
    using UnityEngine;
    using System.IO;
    
    public class UpgrageList : MonoBehaviour
    {
        string _name="Tower";
        [SerializeField] List<Upgrade>_upgrades;
    
        [ContextMenu("Save")]
    public void SaveState()
    {
        var json = JsonUtility.ToJson(this);
        File.WriteAllText(Application.persistentDataPath + $"{_name}.so", json);
            Debug.Log(Application.persistentDataPath);
    }
        [ContextMenu("Load")]
    public void LoadState()
    {
        var json = File.ReadAllText(Application.persistentDataPath + $"{_name}.so");
        JsonUtility.FromJsonOverwrite(json, this);
    }
    }

    это условно хранится на объекте

    66e1b1d92c112617593272.png

    {"_upgrades":[{"_typeName":"Fire","_price":5,"_damage":"30"},{"_typeName":"Ice","_price":5,"_damage":"40"},{"_typeName":"Earth","_price":2,"_damage":"10"}]}
    Написано
  • Как сделали свет от лампы?

    @DrRen7
    решений то много, вопрос в том сколько ресурсов на это можно потратить
    1)Красиво, и реалистично это когда мы видим луч из за пыли или смога - но это довольно ресурсоемко
    2)Построение других объектов в данном случаи потребуется 2 конуса и правильно сделанная юви карта что бы можно было накинуть градиент с прозрачностью. Или же самый простой вариант использовать 2 line объекта с градиентом
    как пример 66e09c174f44b074549869.png
    цвет сделал другим что б была понятна идея
    Написано
  • Не запускается анимация открытие и закрытие двери, как исправить?

    @DrRen7
    Nepro,
    doorAnim = gameObject.GetComponent();// не указан компонент 
    //надо 
    doorAnim = gameObject.GetComponent<Animator>();

    c Animator.Play не работал больше предпочитаю через Set но вроде надо doorAnim.Play("Base Layer.Open", 0, 0.0f);

    if (!doOnce)
    {
    raycastedDoor = hit.collider.gameObject.GetComponent(); // тут аналогично что за компонент нужен ?
    CrosshairChange(true);
    }


    if(Physics.Raycast(transform.position, fwd, out hit, rayLength, mask))
    {
    // Door
    if (hit.collider.CompareTag(interactableTag))  это не надо тут и так выбор по маске идет зачем ещё и таг 
    {
    Написано
  • Как подвязать навыки в 3д к айти?

    @DrRen7
    Плюсую к сказанному в 3д будет важно уметь делать хорошую сетку и развертку с текстурами, движок даж особо не важен потому как работать будешь в marmoset toolbag - это вакансия 3д моделлер обычно нужно портфолио. Если работает в движке но без кода то это environment artist ко всему добавляется работа с коллайдерами в движке и что то для создания локаций
    Написано
  • Система частиц в Unity работает только на сцене, что делать?

    @DrRen7
    sqalopendra,
    на будущее партикли надо делать через камеру(вкладка Game) даж не запуская гейммод
    как вариант попробуй сделать материал двухсторонним, скорее всего надо поднастроить вкладку renderer
    Написано
  • Система частиц в Unity работает только на сцене, что делать?

    @DrRen7
    sqalopendra,
    1)на сцене это не в камере или не в гейммоде?
    2)далее вопрос про включение, играет c появления или через .play()

    если проблема в первом то это проблема с партиклями (материалы, лицевая сторона и тд), альтернативно может быть проблема с вызовом системы, там можно по дебажить что то типо
    ParticleSystem _pS;
     void LateUpdate()
     {
         if (_pS.isPlaying) 
         {
             Debug.LogError("ParticleSystem Is Play");
             Debug.Log("System Location" + _pS.transform.position);
         }
     }

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

    @DrRen7
    Условно CC это капсул коллайдер+rb, там движение идет не через физику.
    поэтому и капсул коллайдер тож не нужен, я сразу не увидел
    Написано
  • Что делать, если Photon некорректно загружает освещение?

    @DrRen7
    свет запеченный или реалтайм? пока выглядит так что Photon просто скинул пресет настроек графики
    Написано
  • Кто сталкивался с такой ошибкой при билде проекта на андроид?

    @DrRen7
    вот тут пытались решить проблемы посмотри мб что из того что там есть поможет
    Написано
  • Почему различаются картинки?

    @DrRen7
    если б не проблема со скрином то я б сказал что проблема с кодеками у видео захвата.
    сделай скрин через Shift + Win + S
    Написано
  • Как сделать отображение света не линиями?

    @DrRen7
    L1dsk1y,
    С ассетом увы тут не помочь) думаю там есть какая то альфа ну по виду
    ну как вариант можно попробовать перейти на UPR и уже все фиксить через PP
    Написано
  • Как сделать отображение света не линиями?

    @DrRen7
    L1dsk1y,
    Ну если так смотреть то выглядит как какая то альфа, тут стоит смотреть настройки у ассета.
    Хмм вероятно при настройке пп этот эффект можно сгладить.
    Попробуй без ассета если все останется то ещё подумаем, а если нет тогда настройки ассета надо смотреть
    Написано
  • Как сделать функцию для анимации Unity2d?

    @DrRen7
    Советую посмотреть Animator Controller
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    fadik22,
    1)rb.MovePosition(rb.position + moveVector * speed * Time.deltaTime) - не даст прыгать(и падать) по время движения , тк прыжок делаем через физику, а это движение через трансформ, но потом вся накопленная сила будет работать
    2) FixedUpdate() может не считывать нажатие клавиши из за того что Input.GetKeyDown(KeyCode.Space) проверятся раз в кадр а FixedUpdate() вызывается раз в 0,02с, при 60 фпс где то 50% что за 0,02с успеет отрисоваться 2 кадра
    3) Constraints - Freeze Position блокирует движение по определенным осям
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    fadik22,
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Walker : MonoBehaviour
    {
        private Rigidbody2D rb;
        public float speed = 1.5f;
        private Vector2 moveVector;
        public float jumpForce = 5.0f;
    
        void Awake()
        {
            rb = GetComponent<Rigidbody2D>();
        }
        private void Update()
        {
            moveVector = transform.right * Input.GetAxis("Horizontal") * speed;
            if (Input.GetKeyDown(KeyCode.Space))Jump();
        }
        void FixedUpdate()
        {
            if(moveVector.x!=0f)MoveCharacter();
        }
        void MoveCharacter()
        {
            moveVector.y=rb.velocity.y;
            rb.velocity = moveVector;
        }
        void Jump()
        { 
            rb.AddForce(transform.up*jumpForce, ForceMode2D.Impulse);
        }
    
    }

    Все должно работать, вероятно стоят constraints у rb
    66b9a42395837372685488.png
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    fadik22,
    чучуть изменим движение
    void MoveCharacter()
     {
         moveVector = transform.right * Input.GetAxis("Horizontal")* speed;
         rb.velocity = new Vector2(moveVector.x, rb.velocity.y);
     }
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    Ali-Muhammad Zakarayayev,
    Ну в Unity если у тебя переменные приватные они не высвечиваются в инспекторе, а значит во время игры ты не можешь их изменять. Так что ставим или public или SerializeField, после прототипирования обычно все это убирается
    Написано
  • Что делать если персонаж не прыгает в unity 2d?

    @DrRen7
    вероятно человек учится и использует public что б задавать параметры в инспекторе.
    И да будет правильнее использовать SerializeField но вопрос не в этом)
    Написано
  • Как сделать чтобы платформа ждала в конечной и стартовой точке заданное время?

    @DrRen7
    kroliczek,
    такого быть не должно
    MoveTowards это изменение вектора 1 в вектор 2 с определенной страстью, есть вариант с
    if(Vector3.Distance(_platform.transform.position,targetPos)>0.1f)

    или можно сделать другой вариант через интерполяцию
    if (reversed) pos -= Time.deltaTime * distance;
    else pos += Time.deltaTime * distance;
    if ((pos < 1f) && (pos > 0f))
    {
        _platform.transform.position = Vector3.Lerp(startPoint.position, endPoint.position, pos);
    }
    else _canMove = false;

    так получается что ты двигаешь от 0 до 1 или наоборот где 0 это значение 1(вектор) а 1 это вектор 2 тогда не надо будет задать новый таргет а просто изменить значение reversed на противоположное
    Написано