Ответы пользователя по тегу Unity
  • Как организовать удаление лишних объектов с информацией характеристик Объектов?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Indie Developer (C#, JS)
    Посидев немного над скриптом и на сам проект, а так же убирая галочки объекта SetActive в Контент Листе, я заметил то что если убрать галочку то Контент Лист сам сократится до нужных размеров... И я придумал как без заморочек сделать систему... Просто когда объект в определенной сортировке, можно включать через SetActive уже готовую карточку и её остается только заполнить... А я заморачивался насчет Instatiate и Destroy думая что по-другому никак нельзя...

    Кусочек скрипта с изменениями
    if (detailRefs != null)
            {
                detailName.text = detailRefs.nameLabel;
                detailInfo.text = detailRefs.infoLabel;
                sortaImage.sprite = detailRefs.sortaImage;
    
                if(detailRefs.sort == DetailRefs.objectsorts.hull)
                {
                    hullInfo.SetActive(true);
                    hardwareInfo.SetActive(false);
    
                    strenght[0].text = detailRefs.strength.ToString();
                    mass[0].text = detailRefs.density.ToString();
                }
                else if (detailRefs.sort == DetailRefs.objectsorts.hardware)
                {
                    hullInfo.SetActive(false);
                    hardwareInfo.SetActive(true);
    
                    strenght[1].text = detailRefs.strength.ToString();
                    energy[0].text = detailRefs.energy.ToString();
                    mass[1].text = detailRefs.density.ToString();
                }
    Ответ написан
    Комментировать
  • Баг режима рендеринга Fade/Cutout в стандартном шейдере, как решить?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Indie Developer (C#, JS)
    Нашёл ответ на свой вопрос... Странно, но Cutout режим работал всё это время, далее прочитав в документации о шейдерах и его режимах (Спасибо Denis Gaydak за ссылку), я решил прочитать больше о шейдерах и нашёл Occlusion Map https://docs.unity3d.com/Manual/StandardShaderMate...
    Тем самым сделав некое подобие затенения краёв сетки... И вместе с Cutout режимом и картой Окклюзии я сделал то что задумывал (Только конечно хотелось прозрачным сделать место затенения, но я пока что чайка в шейдерах) Всем Спасибо за ответы!

    EDIT: Кстати, только сейчас заметил то, что и без карты окклюзии проявились затенения (Может из-за эффекта теней в PS)

    P.S. Скриншот итога:

    00d3f61c045262e70f370a5fa573de2de58afb91
    Ответ написан
    Комментировать
  • Проблема с добавлением префабов в иерархию, что делать [C#]?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Indie Developer (C#, JS)
    Я понял в чем дело! Я в настройках button на трех кнопках отключал и включал canvas магазина, и наверное canvas renderer в префабах не мог показать спрайты, надписи и т.д., глупая ошибка получилась)
    Ответ написан
  • Как смещать позицию с помощью Дочерних объектов, тем самым сместить позицию в Центр?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Indie Developer (C#, JS)
    Denis Gaydak Спасибо за ответ, но я сам решил эту проблему) А решил её с помощью МешРендерера в дочерних объектах и их [bounds] и тем самым смог менять позицию в центр! Вот как выглядит код с помощью которого я меняю позицию в центр. (Оказалось centerOfMassOffset не нужен был мне нужна была позиция)
    public void FitToChildren()
        {
            bool hasBounds = false;
            Bounds bounds = new Bounds(Vector3.zero, Vector3.zero);
    
            for (int i = 0; i <ship.transform.childCount; ++i)
            {
                Renderer childRenderer = ship.transform.GetChild(i).GetComponent<Renderer>();
                if (childRenderer != null)
                {
                    if (hasBounds)
                    {
                        bounds.Encapsulate(childRenderer.bounds);
                    }
                    else
                    {
                        bounds = childRenderer.bounds;
                        hasBounds = true;
                    }
                }
            }
    
            playerShip.transform.position = bounds.center - ship.transform.position;
        }


    Ещё раз Спасибо!
    Ответ написан
  • Проблема с Всплывающим окном в игре (Некий DebugHUB)?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Indie Developer (C#, JS)
    Griboks Спасибо за ответ! Трезво взглянув на скрипт и ваш ответ я понял что не так! Я сделал проверку операторами неправильной ведь если один проверил действие и хотел вывести сообщение, то другой просто отключал и стирал текст... Но я вспомнил про переменную [else if] которая бы срабатывала когда другой оператор не срабатывал, тем самым проверял всё поочередно! И в итоге я подправил скрипт и всё выводилось нормально
    if (PS.energy + detailRefs.energy > PS.maxEnergy)
            {
                debugHUB.SetActive(true);
                debugText.text = "ВНИМАНИЕ! НЕДОСТАТОЧНО ЭНЕРГИИ! УВЕЛИЧЬТЕ МАКСИМАЛЬНЫЙ ПОКАЗАТЕЛЬ С ПОМОЩЬЮ ГЕНЕРАТОРОВ!";
            }
            else if (iMass >= maxMass)
            {
                debugHUB.SetActive(true);
                debugText.text = "ВНИМАНИЕ! СЛИШКОМ БОЛЬШАЯ МАССА! СТАБИЛИЗИРУЙТЕ ЭТОТ ПОКАЗАТЕЛЬ УДАЛИВ ТЯЖЕЛЫЕ ДЕТАЛИ!";
            }
            else if (count == maxCount)
            {
                debugHUB.SetActive(true);
                debugText.text = "ВНИМАНИЕ! КОЛИЧЕСТВО ДЕТАЛЕЙ ОГРАНИЧЕНО, УДАЛИТЕ НЕНУЖНЫЕ ДЕТАЛИ ЧТОБЫ ПОСТАВИТЬ ДРУГИЕ!";
            }
            else
            {
                debugHUB.SetActive(false);
                debugText.text = "";
            }

    Спасибо ещё раз!
    Ответ написан
  • Как заставить персонажа следить (поворачиваться) в сторону мышки?

    BRO_TIGER
    @BRO_TIGER
    Indie Developer (C#, JS)
    Сделайте вот такой скрипт в своём проекте:
    wiki.unity3d.com/index.php?title=LookAtMouse
    Есть конечно и другие варианты в старой Вики, но думаю это вам поможет
    (Сам пользуюсь иногда)
    Ответ написан
    5 комментариев
  • Как удалить объект из иерархии с помощью луча?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Indie Developer (C#, JS)
    Всем снова привет! Мне понравились несколько вариантов ответов... Это ответ Denis Gaydak и ответ Griboks! И вот как я это сделал - Я переписал старый скрипт и упростил до невозможного! (Спасибо Griboks!)
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class DestructibleObject : MonoBehaviour
    {
        void OnMouseDown()
        {
            Destroy(gameObject);
        }
    }


    Дальше я добавил булевскую переменную в Скрипт Строительства:

    public bool IsRemove;

    А потом сделал скрипт с помощью которого я в детали добавлял Твердые Тела (Rigidbody) для работы с методом [OnMouseDown();]:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class AddComponent : MonoBehaviour {
    
        public GameObject buildingCamera;
        Rigidbody rig;
    
    
        void Start()
        {
            buildingCamera = GameObject.FindGameObjectWithTag("MainCamera");
        }
    
    
        void Update ()
        {
            BuildingSystem BS = buildingCamera.GetComponent<BuildingSystem>();
    
            if (BS.IsRemove)
            {
                if (rig == null)
                {
                    rig = gameObject.AddComponent<Rigidbody>();
                    rig.constraints = RigidbodyConstraints.FreezeAll;
                }
            }
    
            if (!BS.IsRemove)
            {
                if (rig != null)
                    Destroy(rig);
            }               
    	}
    }


    А позже всё соединил с помощью Менеджера Строительства:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class BuildingHUB : MonoBehaviour {
    
        public GameObject buildingCamera;
    
        public GameObject currentPreview;
    
        BuildingSystem buildingSystem;
    
    
        void Start()
        {
            buildingSystem = buildingCamera.GetComponent<BuildingSystem>();
        }
    
    
        void Update ()
        {
            currentPreview = buildingSystem.currentpreview.gameObject;
    
            if (buildingSystem.IsBuilding && Input.GetKeyDown(KeyCode.Delete))
            {
                ToRemove();
            }
    
            if (buildingSystem.IsRemove && Input.GetKeyDown(KeyCode.Escape))
            {
                RemoveToEscape();
            }
        }
    
    
        public void ToRemove()
        {
            buildingSystem.IsRemove = true;
            buildingSystem.IsBuilding = false;
            currentPreview.SetActive(false);
        }
    
    
        public void RemoveToEscape()
        {
            buildingSystem.IsRemove = false;
            buildingSystem.IsBuilding = true;
            currentPreview.SetActive(true);
        }
    }


    Всем Спасибо за ответы!)
    Ответ написан
    2 комментария
  • Что лучше c# или javascript под unity?

    BRO_TIGER
    @BRO_TIGER
    Indie Developer (C#, JS)
    Оба языка похожи на друг друга! А какой язык лучше? Тот который удобен для вас))) Я пользуюсь и Js и C# (Sharp), раньше был Boo но его вырезали)))
    Ответ написан
    Комментировать
  • Как создать управление персонажа?

    BRO_TIGER
    @BRO_TIGER
    Indie Developer (C#, JS)
    Я так понимаю вы новичок в программировании... Во-первых какой вид камеры? Ортографическая и вид от третьего лица или Перспективная от первого/третьего лица? Если камера как в Don't Starve то просто сделайте MouseLook в котором мышка будет поворачивать игрока по оси у... Если от первого то создайте обычный MouseLook... Если вы не поняли и или затрудняетесь сделать что-то такое то в скрипте из исходника Survival Shooter есть упоминания о теге "Floor" а дальше ниже есть что-то похожее на MouseLook... Просто добавите тег в редакторе "Floor" и тогда всё заработает...
    ---------------------------------------------------------------------------------------------------------------
    Мой совет: Перед тем как разрабатывать игру изучите программирование... Да вам не терпится сотворить свою идею но воздержитесь ведь это изучение вам поможет в будущем...
    Удачи!
    Ответ написан
    Комментировать
  • Как доработать скрипт, так что бы уровень звука был одинаков на всех сценах?

    BRO_TIGER
    @BRO_TIGER
    Indie Developer (C#, JS)
    Был одинаков во всех сценах? Не проще указать что уровень звука при старте программы был равен тому уровню который вы напишите? (Предлагаю такую идею)
    Ответ написан
    Комментировать
  • Проблема с стандартными шейдерами, розовые артефакты на объектах, как решить?

    BRO_TIGER
    @BRO_TIGER Автор вопроса
    Indie Developer (C#, JS)
    Есть решение как с Террайном бороться?
    Ответ написан
    Комментировать
  • Как сделать анимацию плаща в Unity?

    BRO_TIGER
    @BRO_TIGER
    Indie Developer (C#, JS)
    Просто - сделайте его физическую модель...
    При беге он будет как натуральный... И парится с анимацией не надо...
    Если Unity просто добавь компонент Cloth добавь в список Colisions своего Персонажа (Чтоб плащ не проходил сквозь него)
    Расставь точки Rigidbody и готово!
    Если что то посложнее надо - добавь скрипт на виртуальные воздушные массы...
    (Скрипт уж не знаю где ищи сам :))
    А вот сам урок как поставить Cloth компонент
    www.youtube.com/watch?v=hZ8DgasVT_M" (Ссылки не работают)
    Готово!
    Ответ написан
    Комментировать