next_pos_y + 1 и next_pos_y - 1 Очевидно кубиков у вас 15,судя по циклу,а обращаетесь вы к 15 элементу массива и -1,которых нету. Если карта 3D (на подобии майнкрафта)покопайте в сторону меша. Создаете точки.Рисуете триугольники на видимых гранях получившегося многоугольника. Да,скажут - для новичка трудно.Но по своему опыту скажу,лучше потратить неделю чтоб разобраться в сложном,чем потом переделывать костыли
Сообщение отредактировал defGMDefeloper - Воскресенье, 18 Февраля 2018, 15:23
Сделал пространство имен gameUI в нем несколько класов- интерфейсы для раных уроней. Как обращяться к переменным внутри класса не используя gameUI.scene.variable ,а просто variable = ..
Код
gameUI.spaceMenu.spaceMenu.uiActive
Это совсем не удобно Как можно взаемодействовать между скриптами? Есть ещё вариант типа
Код
public static uiclass link; awake{ link=this; }
Сообщение отредактировал defGMDefeloper - Суббота, 17 Февраля 2018, 17:25
В таких масштабах звезд практически не видно.Лучше нарисовать галактику.Тоже пытался отрисовывать звезды по спирали ,и у меня это получилось.Но выглядит это не как галактика,а как звезды расположенные по спирали). Реально будет видно только самые яркие звезды.Класса O и B.Остальные просто рассеивают свет.
Я вот делаю игрушку типа Spore(да и ты похоже тоже,ну или симулятор вселенной).
P.S прочитайте мою тему про скелет =).А то я вижу "старые темы" никто не читает.Только актиальные,на гл. странице
Сообщение отредактировал defGMDefeloper - Четверг, 15 Февраля 2018, 14:20
нарисовал програмно цилиндр.пока что без сфер по концам)трубка короче.
Код
List<Vector3> v = new List<Vector3>(); List<int> t = new List<int>(); float radius = 1, time = 0.05f; for (int c = -spineCount/2; c < spineCount/2; c++) { for (float i = -radius; i < radius; i += time) { float z = i; float y = Mathf.Sqrt(Mathf.Pow(radius, 2) - Mathf.Pow(z, 2)); v.Add(new Vector3(c, y, z)); } for (float i = radius; i > -radius; i -= time) { float z = i; float y = Mathf.Sqrt(Mathf.Pow(radius, 2) - Mathf.Pow(z, 2)); v.Add(new Vector3(c, -y, z)); } } int icr = v.Count / spineCount; for (int c = 0; c < spineCount-2; c++) { for (int i = 0; i < icr; i++) { t.Add(i + c * icr); t.Add(i + 1 + c * icr); t.Add(i + (1 + c) * icr); } for (int i = 0; i < icr; i++) { t.Add(i + 1 + (1 + c) * icr); t.Add(i + (1 + c) * icr); t.Add(i + 1 + c * icr); } } Debug.Log(v.Count + " "+t.Count); mesh.SetVertices(v);mesh.SetTriangles(t,0);
Код конечно чудной,но рисует то что задумано. Нужно наложить теперь скелет на эту трубку. Проблема в том что у меня он искажается,кости в неправильных координатах.Как правильно конвертировать координаты в матрицу?
Добавлено (14 Февраля 2018, 15:14) --------------------------------------------- Кто-нить поможет,пожалуйста.Уже который день бьюсь бошкой об стол.Я не пойму как работают boneIndex и weight у костей. Ну первое это индекс кости - это очевидно),второе это коефициент влияния кости на вершину,но вот проблемка.У меня есть n позвонков на каждом 5 костей. Есть меш цилиндра на который наложен этот вот скелет.Проблема заключается в том что я не могу указать какие кости должны давать влияние на вершину. Но не получается сделать задуманое.Вершины тупо сливаются в 1 точку при отдалении.
И ещё вопрос.Есть игровых обьекта(цилинтра).как сделать чтобы угол между ними не превышал 30 градусов?
Сообщение отредактировал defGMDefeloper - Среда, 14 Февраля 2018, 16:15
Я метаюсь туда-сюда.Я так понял никто со скелетом не поможет,но я потихоньку разбираюсь. Решил вернуться к звездам =). Нужно сделать эффект затухания во внутрь..Ну щас поясню. Вот есть текстура(галактика,с рукавами и прочей фигней) И нужно сделать чтобы она светилась,а по мере приближения камеры к плайну(обьект с текстурой) это свечении постепенно затухало в центр и при этом внутрь(сужалось и двигалось в центр) Ну я смогу сделать нечто подобное с помощью циклов и попиксельной переборки,но это как красить забор лопатой.Мне вот интересно как бы это сделал знающий человек.
Сообщение отредактировал defGMDefeloper - Понедельник, 12 Февраля 2018, 13:21
во во,пробовал с шарами.не вышло(.Я если честно с таким ещё не сталкивался.Писал разные алгоритмы,сис-мы,а вот по графической части я профан. Совсем не понимаю связь между вершинами нормалями и треугольниками( Вот по логике же достаточно точек и между какими точками рисовать А тут тебе и точки и нормали и треугольники.Ну ещё куда текстуру класть UV.С этим пока ещё рано разбираться.
Ещё есть идеи как можно сделать?).
Сообщение отредактировал defGMDefeloper - Четверг, 08 Февраля 2018, 19:59
- кол-во позвонков тоже меняется.И форма этой самой капсулы вообще-то(.Разве что нарисовать её в большом "разрешение "(побольше вершин) чтобы если было много позвонков,можно было нормально скелет наложить,но это костыль.
Лучше всего как-то програмно отрисовать эту капсулу - наложить скелет ,ну а дальше уже деформировать.А вот как её нарисовать я не знаю.
Сообщение отредактировал defGMDefeloper - Четверг, 08 Февраля 2018, 18:57
Нужно сделалать меш похожий на капсулу.но другого масштаба и наложить на неё скелет. Потому что если наложить скелет на просто растянутый обьект он сильно искажается т.к scale просто меняет расстояние между вершинами(.Как можно это исправить? Должно получится хотябы что-то похожее на это ( YouTube Я сделал 3 кости - позовнок и 2 кости прикрепленных к нему,для деформации меша.
Уже который день мучаюсь с этим мешем =(
p.s i'm bad english ,так что spinе - это позвонки
Сообщение отредактировал defGMDefeloper - Четверг, 08 Февраля 2018, 17:56
а взрыв делается с помощью тех-же векторов.В момент взрыва(когда снаряд об что-то ударился ,например ,или спустя время) используем physics2d.overlapcircleall и каждому обьекту AddForce() ,где направление будет вектором от центра взрыва до обьекта на который взрыв воздействует(rigidbody никогда не пользовался надеюсь правильно написал) А вообще вам бы с векторами разобраться =)
Сообщение отредактировал defGMDefeloper - Вторник, 06 Февраля 2018, 22:19
там ещё есть рейкаст которым выделяется позвонок ,Но то не важно.Скрипт работает.КОгда тянешь один позвонок - остальные тянутся за ним.Но как можно сделать более плавный переход?.Ну типа чтобы позвоночник при перетаскивании принимал форму дуги,а не тупого угла.Пробовал ограничить угол поворота до 30 град. относительно предыдущего позвонка,но тогда он принимает форму зигзага =(.Как можно сделть плавный переход?Искажение должно выглядить как волна которая передается от перетаскиваемого позвонка к соседним. Что можно подпилять?Потому что что не пробовал - все криво.Уже замучался P.S ну если кто поможет L R - равноудаленные обьекты от центра позвонка.Точки прикрепления слева и справа.Можно было их задать как просто Vector3 ,но из-за масштабирования появляется ненужный гемор
и второе.Как создать нормальный меш?Ну что-то тип червяка) и привязать к этому скелет.
вообще не могу понять что такое boneWeight.boneindex и weight и ещё цифры от 0-3 .Не могу понять как оно работает(На русском ничиго не нашел.На анг прочитал,вроде понятно,но как юзать не знаю(
Сообщение отредактировал defGMDefeloper - Вторник, 06 Февраля 2018, 00:03
public void Button(string event_) { Clear(); switch (event_) { case "startgame": uiElements[1].SetActive(true); uiElements[2].SetActive(true); break; default: Debug.Log(event_);break; } } void Awake() { saves = Directory.GetDirectories("Data"); for (int i = 0; i < saves.Length; i++) { GameObject new_ = Instantiate(uiPrefabs[0], uiElements[2].transform); new_.transform.GetChild(0).GetComponent<Text>().text = saves[i]; new_.GetComponent<Button>().onClick.AddListener(delegate() { Button("Save"+i); }); }
Мне всегда выводит Save2 .У меня уже начинает гореть.Как это вообще работает?При том что цикл на 2 итерации.Там всего 2 папки. то есть Save0 и Save1 должно быть. Текст заполняется правильно,а события для кнопки создает криво .Как сделать по нормальному?Вешать на каждую кнопку-префаб скрипт не варик.их будет много - геморой.
Вообщем с оптимизацией разобрался.Новая проблемка). Звезды щас создаются очень простым кодом ,просто в рандомных координатах в определённом радиусе оц центра.Они аккуратно располагаются по кругу)Но вот в чем проблема.Нужно чтобы они создавались в тех местах где видно рукава галактики.Ну вот скрин с пометкой:
Ну и мне пришло к голову что можно разобрать текстуру на пиксели (КАК ЭТО СДЕЛАТЬ?)и по прозрачности построить массив пути.Ну а алгоритм поиска пути любой уже напишу.
Сообщение отредактировал defGMDefeloper - Четверг, 25 Января 2018, 20:02
Смотрите решил идти поэтапно.На выбор,ну то чтоя сумел придумать,было 3 варианта как рисовать звезды
1.Canvas + Camera.WorldToScreen 2.Canvas World Space+ look at и самый безумный 3.Plane с текстурой звезды и look at. Угадайте какой показал самую большую производительность?
Сообщение отредактировал defGMDefeloper - Четверг, 25 Января 2018, 20:00
Ну тут лучше всего сделать как я предлагал второй вариант
Делаешь 2 слоя MainBtn и Info и делаешь2 камеры
Одна показывает все слои кроме MainBtn Друга все кроме Info и переключаешь их между собой.Это быстрее чем перебирать все кубики и искать к ним дочерние объекты это раз и это само собой проще это два)
GameObject[] cameras;
void _Swich() { cameras[0].SetActive(!cameras[0].activeself); cameras[1].SetActive(!cameras[1].activeself); } //типа так А передвигать нужно их одновременно.Так что просто двигаешь одну камеру ,а второй задаешь координаты первой вот и вся любовь. Ну а если это слишком некрасивый код сделай цилком for(int i =0;i<cameras.Length;i++) cameras[i].SetActive(!cameras[i].aself);
Сообщение отредактировал defGMDefeloper - Понедельник, 22 Января 2018, 20:22