Суббота, 20 Апреля 2024, 13:34

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Форум игроделов » Записи участника » defGMDefeloper [51]
Результаты поиска
defGMDefeloperДата: Среда, 26 Сентября 2018, 21:11 | Сообщение # 1 | Тема: Обновление Mesh Collider в реальном времени
частый гость
Сейчас нет на сайте
Хмм. Оч странно,но работает XD. Спасибо
defGMDefeloperДата: Вторник, 25 Сентября 2018, 18:04 | Сообщение # 2 | Тема: Обновление Mesh Collider в реальном времени
частый гость
Сейчас нет на сайте
Ну написал простой код чтоб деформировать сферу по клику мишки. Вдавливать или наоборот
Код
void DeformationMesh(Vector3 point)
    {
        MeshFilter meshFilter = GetComponent<MeshFilter>();
        Mesh mesh = meshFilter.mesh;
        Vector3[] vertices = mesh.vertices;
        Vector3 localpoint = transform.worldToLocalMatrix.MultiplyPoint(point);
        for (int i = 0; i < vertices.Length; i++)
        {
            float distance = (localpoint - vertices[i]).sqrMagnitude;
            float distanceToMidle = (vertices[i]).sqrMagnitude;
            if (distance < MAXDEFORMDISTANCE*MAXDEFORMDISTANCE && distanceToMidle < 0.36f && distanceToMidle > 0.09f)
            {
                vertices[i] = Vector3.LerpUnclamped(vertices[i], Vector3.zero, (slider.value-1)*0.01f*Mathf.Pow(1-distance/(MAXDEFORMDISTANCE*MAXDEFORMDISTANCE),3));
            }
        }
        mesh.vertices = vertices;
        MeshCollider meshCollider = GetComponent<MeshCollider>();
        meshCollider.sharedMesh = mesh;
    }

Проблема в том что сетка колайдера не обновляется. То есть я нахожу вершины которые задеваю кликом непосредственно из RaycastHit.Point. Значит мне нужно обновлять колайдер после каждого деформирования. как это можно сделать?


Сообщение отредактировал defGMDefeloper - Вторник, 25 Сентября 2018, 18:08
defGMDefeloperДата: Четверг, 29 Марта 2018, 19:04 | Сообщение # 3 | Тема: NAVMESH пешеходы идут в линию.
частый гость
Сейчас нет на сайте
Разбросать точку прибития для разных юнитов?Написать свой алгоритм поиска пути?
Начинать движение сначало юнитами которые ближе к точке прибития?
Сделать пешеходам разную скорость,чтобы они пытались обойти друг друга?
defGMDefeloperДата: Воскресенье, 04 Марта 2018, 21:14 | Сообщение # 4 | Тема: 2 камеры
частый гость
Сейчас нет на сайте
2 часа ушло на то чтоб понять что она работает ток при старте сцены.=(
Тупанул жостко.


Сообщение отредактировал defGMDefeloper - Воскресенье, 04 Марта 2018, 21:14
defGMDefeloperДата: Воскресенье, 04 Марта 2018, 18:02 | Сообщение # 5 | Тема: 2 камеры
частый гость
Сейчас нет на сайте
Как все таки сделать 2 камеры.
Сделал перспективу.Отключил слой с UI.
Сделал ортогональную .Отключил все кроме UI,сделал Depth Only и Depth на 1.
Не работает.Даже если выключить ортогональную видно UI
Что я упустил?


Сообщение отредактировал defGMDefeloper - Воскресенье, 04 Марта 2018, 18:09
defGMDefeloperДата: Пятница, 02 Марта 2018, 15:21 | Сообщение # 6 | Тема: Память
частый гость
Сейчас нет на сайте
Да есть одна.Начинаю читать файл.Пишу offset++.ПОтом когда доходит до строчки которая содержит кол-во звезд в группе,мозг не хочет работать.Мб я прост уже закодился).
Вот проблема в чем.Сделал такой редактор.Загружаешь картинку галактики - он строить карту пути по этой картинке(заполняет массив областями и регионами где могут распологаться звезды),на основе данных о цвете пикселя.
Кол-во групп в областях - разное.как и кол-во планет вокруг звезды.И вот пока посчитаешь смещение вплоть до самой нижний иерархии мозг дымить начинает =(
Теперь на выбор 2 фигни.Либо записывать кол-во планет рядом со звездами либо перебирать файл полностью.

Добавлено (02 Марта 2018, 15:21)
---------------------------------------------
Сори,но я не понял в чем вообще прикол?Во первых пришлось создавать сериализируемые структуры для вектора цвета и квартертиона.В добавок ко всему бинарный файл будет весить гораздо больше.Ибо он записывает названия сериализируемых структур и ещё много всякой фигни.То что весило 160 кб теперь весит мегабайт.И это я ток самое основное запилил.
Не нужно быть великим математиком чтоб понять что то что весило бы гиг будет весить 6 гиг


Сообщение отредактировал defGMDefeloper - Пятница, 02 Марта 2018, 15:28
defGMDefeloperДата: Среда, 28 Февраля 2018, 21:08 | Сообщение # 7 | Тема: Память
частый гость
Сейчас нет на сайте
Я не понимаю как с ним работать.Данные должны загружаются не последовательно,а значит нужны какие-то указатели.Я хотел использовать в качестве них директории внутри архива.Как это можно сделать с помощью бинарного файла?
defGMDefeloperДата: Среда, 28 Февраля 2018, 17:59 | Сообщение # 8 | Тема: Память
частый гость
Сейчас нет на сайте
Цитата
Тебе не нужно сжатие, у тебя данные несжимаемые
Кроме того, гигабайт на диске это ерунда

Вы не поняли.Что сохранять это понятно.Файлов будет 500-1000 как вы и сказали.Я не об этом.А о том что 500 файлов в 1 папке выглядит как минимум неаккуратно).Как запихнуть это все в архив,без сжатия само собой.Чтоб он работал как директория,но при этом не являлся папкой.
defGMDefeloperДата: Среда, 28 Февраля 2018, 12:57 | Сообщение # 9 | Тема: Память
частый гость
Сейчас нет на сайте
Прочитал про ScriptableObject.Вы меня не совсем поняли.Объекты хранят совершенно разную информацию,и таких объектов много.Более того управление происходит из 1 скрипта.И информация о каждом объекте хранится в 1 экземпляре,зачем тогда ScriptableObject?
Объем этой информации может превышать 1 гб(в совокупности).Нужно сделать архив с данными и выгружать их по мере использовании.Эти данные разные и их много.Речь о том как сделать архив с этими данными,и как вытряхивать из него нужны данные.

AssetBundle не подходит ибо хранить информацию о миллионе однотипных объектов,нету смысла.

Цитата
Объекты хранят совершенно разную информацию

Цитата
однотипных объектов

Если кто запутался,поясню.Разные координаты,цвет.
Зачем сохранять объект полностью если они однотипные и можно просто сохранить координаты,имя,цвет(1 цифрой,цвета - неизменный массив).Это инфа о звездах если что.
Но из-за того что таких объектов очень много(в среднем пол миллиона),хранить все это в ОП скажем так напряжно.В добавок есть ещё планеты,а там ой ой ой инфы.Карта высот ,объекты и т.д.Ужс.Гиг данных.Их нужно подгружать только по необходимости.
Следовательно лучше сделать архив и в нем сделать директории.и вот именно к ним и обращятся.

И тут 2 вопроса,на которых я в нете ответа не нашел.
Как сделать архив?.Потому что на практике эти библиотеки не содержат тех классов которые описаны в туториале.

За ранее спасибо =)


Сообщение отредактировал defGMDefeloper - Среда, 28 Февраля 2018, 14:30
defGMDefeloperДата: Среда, 28 Февраля 2018, 01:45 | Сообщение # 10 | Тема: Память
частый гость
Сейчас нет на сайте
Загружаю данные из файла в структуры.У меня карта разбита на регионы,группы и объекты в них,а также доп. инфа о объектах(модель,текстуры и т.д)
Объектов достаточно много,а значит хранить все это в оп не рационально.
Скажем файл с данными о регионах и группах хранит достаточно мало данных,только координаты,а вот объекты лучше подгружать по мере использования.Как это сделать?.
Объекты при этом лучше хранить в 1 файле.В чем-то вроде архива
defGMDefeloperДата: Воскресенье, 25 Февраля 2018, 18:04 | Сообщение # 11 | Тема: Time.deltaTime проблемка
частый гость
Сейчас нет на сайте
Используй линейную интерполяцию . Mathf.Lerp
добавь переменную time (коефициент интерполяции) и меняй её от 1 до 0;
после изменения пиши Mathf.Clamp01(time);
Я всегда так делаю.Ибо оператор == работает не точно,сам проверял.
Скажем я делал проверку на число и оно останавливалось на тысячных,что мне не подходит,ибо мне нужно точно.
Старайся избегать if в принципе.делай код более линейным.


Сообщение отредактировал defGMDefeloper - Воскресенье, 25 Февраля 2018, 18:06
defGMDefeloperДата: Воскресенье, 25 Февраля 2018, 15:30 | Сообщение # 12 | Тема: Как сделать проявляющийся текст?
частый гость
Сейчас нет на сайте
Coroutine + text.color.a
defGMDefeloperДата: Четверг, 22 Февраля 2018, 15:46 | Сообщение # 13 | Тема: Динамика игры
частый гость
Сейчас нет на сайте
Цитата
Я хочу сделать путешествия в космосе максимально динамичными

Цитата
В Spore когда приближаешься к солнечной с-ме или к планете загружается новая сцена,идет загрузка всех данных

Я хочу сделать чтобы все происходило в рантайме.Отдельная сцена?Не вариант - противоречити задумки)На загрузку сцены нужно время


Сообщение отредактировал defGMDefeloper - Четверг, 22 Февраля 2018, 15:47
defGMDefeloperДата: Четверг, 22 Февраля 2018, 14:02 | Сообщение # 14 | Тема: Динамика игры
частый гость
Сейчас нет на сайте
Я уже писал ранее,но видимо старые темы никто не читает).Я хочу сделать путешествия в космосе максимально динамичными.В Spore когда приближаешься к солнечной с-ме или к планете загружается новая сцена,идет загрузка всех данных .Я хочу сделать чтобы это все происходило в реальном времени.Застрял на планетах.Как это можно реализовать?.Проблема в том что у них изначально очень маленький масштаб. 0.3-0.5.Из-за этого камера смотрит на планету целиком.Как можно подстроить камеру под маленькие масштабы?

Сообщение отредактировал defGMDefeloper - Четверг, 22 Февраля 2018, 14:03
defGMDefeloperДата: Среда, 21 Февраля 2018, 18:39 | Сообщение # 15 | Тема: Time.deltaTime проблемка
частый гость
Сейчас нет на сайте
Где у тебя проверка что когда достигнет нуля должно остановиться?
Думаю дело в ней,т.к этот код не даст описанный вами результат


Сообщение отредактировал defGMDefeloper - Среда, 21 Февраля 2018, 18:39
defGMDefeloperДата: Вторник, 20 Февраля 2018, 20:30 | Сообщение # 16 | Тема: Оптимизация
частый гость
Сейчас нет на сайте
Структуру выровнял,и правда страшно выглядела)),но новая проблемка.
sqrMagnitude мне выдает заоблачные цифры.Из-за того что масштабы достаточно большие(.
Код
public float[] drawRange = new float[]{ _radius *4*_radius *4, _radius * 3*_radius * 3, _radius * 2*radius * 2};//const
dist2ship = (ship.transform.position - starrange[r].position).sqrMagnitude;


Ай,старый прикол,не правидёшь.Если Public оно ток в инспекторе меняется.
Сделал чтоб при вход в солнечную систему создавались планеты и крутились вокруг звезды.

Как запихнуть в 1 цикл я не придумал =(.Разве что bool[] создавать.

ВАЖНО
очень много обращений к transform.
Код
sw.WriteLine(load.target.transform.gameObject.name);
                    sw.WriteLine(load.ship.transform.position.x);
                    sw.WriteLine(load.ship.transform.position.y);
                    sw.WriteLine(load.ship.transform.position.z);
                    for (int i = 0; i < load.starrange.Count; i++)
                    {
                        if (!load.starrange[i].isGenerate)
                    continue;
                        stars.WriteLine(i);
                        for (int g = 0; g < galaxy._roundLayer; g++)
                        {
                            stars.WriteLine(load.stars[i, g].starName);  
                            stars.WriteLine(load.stars[i, g].position.x);
                            stars.WriteLine(load.stars[i, g].position.y);
                            stars.WriteLine(load.stars[i, g].position.z);
                            stars.WriteLine(load.stars[i, g].StarType);
                        }
                    }

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


Сообщение отредактировал defGMDefeloper - Вторник, 20 Февраля 2018, 21:17
defGMDefeloperДата: Вторник, 20 Февраля 2018, 20:15 | Сообщение # 17 | Тема: Оптимизация
частый гость
Сейчас нет на сайте
Цитата
Используй везде не его, а sqrMagnitude. Он гораздо быстрее. Правда при этом все сравнения нужно менять.

Да у меня дистанция практически везде - это коефициент линейной интерполяции(текущая на максимальную),было 3 остался один.Два заменил на -offset.z.Зачем считать расстояние до камеры если оно уже есть).Тупанул.Остался 1.Т.к он сравнивается с константами- ничиго переписывать и не нужно.
А что насчет сктруктур?Как лучше сделать.
Трехэтажные структуры эт норм?(Star.Planet.Sputnik)


Сообщение отредактировал defGMDefeloper - Вторник, 20 Февраля 2018, 20:15
defGMDefeloperДата: Вторник, 20 Февраля 2018, 19:51 | Сообщение # 18 | Тема: Перемещение по точкам
частый гость
Сейчас нет на сайте
Код
float coefficient=0;
    float currentpoint=0,topoint=1;
    float inercy=0;
    Vector3[] point = new Vector3[]{new Vector3(0,1,1),new Vector3(1,2,3)};
    void FixedUpdate()
    {
        coefficient += Input.GetAxis("Horizontal");//если будет слишком быстро умножь на Time.deltatime
        transform.position = Vector3.Lerp(point[currentpoint], point[topoint], coefficient);      
        if (coefficient < 0 && currentpoint > 0)
        {
            currentpoint--;
            topoint --;
        }
        if (coefficient > 1 && currentpoint < point.Length)
        {
            currentpoint++;
            topoint++;
        }
    }


Сообщение отредактировал defGMDefeloper - Вторник, 20 Февраля 2018, 19:53
defGMDefeloperДата: Вторник, 20 Февраля 2018, 18:40 | Сообщение # 19 | Тема: Оптимизация
частый гость
Сейчас нет на сайте
Там ещё есть структуры.Если иерархию не разделять можно запутаться).По крайней мере я пару раз запутался.Впрочем,это не совсем по теме)И комментарии на fps не влияют никак

Сообщение отредактировал defGMDefeloper - Вторник, 20 Февраля 2018, 18:46
defGMDefeloperДата: Вторник, 20 Февраля 2018, 12:51 | Сообщение # 20 | Тема: Оптимизация
частый гость
Сейчас нет на сайте
Моя главная проблема в том что я сначало пишу код,а потом его переделываю
Вот например

public Vector3 position;
public Transform transform;
нафига 2 раза хранить позицию спросите вы?
Звезды загружается из файла сохранения(координаты,цвет и т.д).
Логично будет написать transform.position = ReadLine...
Но не тут то было .Есть 2 метода:
Код

Первый инициализирует структуру по данным в файле,второй создает обьект и дополняет эти данные.Получается я не могу сразу записать координаты в несуществующий transform
Можно ли как -то сделать не криво?).А то получается координаты хранятся 2 раза.
И ещё кое что.


Корутин который отвечает за отрисовку звезд.Внутри запускается другие три:

Смешно то,что Масштаб и поворот 3д плайна с текстурой,быстрее чем Camera.main.WorldToScreenPoint
Что можно убрать/переписать.Самую большую нагрузку дают Vector3.Distance
и неявное обращение ==null.
Как лучше в плане производительности:

Планеты сделать подструктурой звезд,или сделать отдельную структуру,но тогда нужно будет сохранять данные о звезде в этой структуре

Буду премного благодарен)Надеюсь ещё не надоел.С архитектурой у меня проблемы всегда были.

Знаю вопросов много,но вся архитектура упираетс в это)я то кое-как сделаю,но хотелось бы по людски


Сообщение отредактировал defGMDefeloper - Вторник, 20 Февраля 2018, 20:30
Форум игроделов » Записи участника » defGMDefeloper [51]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг