Пятница, 29 Ноября 2024, 11:16

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Результаты поиска
SrJeonnyДата: Суббота, 08 Декабря 2018, 00:48 | Сообщение # 1 | Тема: Как определить расстояние между вершинами модели?
был не раз
Сейчас нет на сайте
Приветствую мудрецы. Такая задачка : хочу сделать soft body механику на юнити (так как не нашел готового решения). Пока что модель падает, учитывая скорость берет точки прикосновения из contact point и задает им новую позицию, но модель становится ниже и выглядит не "желешно", поэтому хочу дополнить это ограничением расстояния между вершинами. Как получить дистанцию до ближайшей вершины и её ограничить через mesh verticles [i] ?
Или посоветуйте готовое решение :D
SrJeonnyДата: Пятница, 19 Октября 2018, 05:41 | Сообщение # 2 | Тема: По какой формуле юнити высчитывает вектор?
был не раз
Сейчас нет на сайте
Есть вектор forward который (0,0,1) и есть вектор right который (1,0,0).
Стандартным методом через input.axis объект может совершать передвижения в направлении
Если нажать вверх и вправо то вектор получится (0.7,0,0.7).
Какую формулу юнька использует чтобы это получить? Как? Может что-то с направлениями?
P.S Вот код, страшный жесть, надо будет делать манипуляции и легче делать с 1 значением, чем с 4
Код
if (input.z > 0)
   transform.position += chelp.forward * speed * Time.deltaTime;
  if (input.z < 0)
   transform.position += -chelp.forward * speed * Time.deltaTime;
  if (input.x > 0)
   transform.position += chelp.right * speed * Time.deltaTime;
  if (input.x < 0)
   transform.position += -chelp.right * speed * Time.deltaTime;
  Debug.Log (transform.forward);

Собстна chelper это дочерний объект камеры который покажет для главного объекта где вперед и вправо.
По коду хочется передать 2 значения и в результате манипуляции получить вектор, над которым дальше колдовать
Дебаг показывает тот самый 0.7, 0 , 0.7
P.S.S :


Сообщение отредактировал SrJeonny - Пятница, 19 Октября 2018, 06:58
SrJeonnyДата: Среда, 17 Октября 2018, 06:06 | Сообщение # 3 | Тема: Направление в вектор
был не раз
Сейчас нет на сайте
Цитата drcrack ()
я ниче не понял

Ну может можно выразить так :
Любой поворот камеры по У должен быть направлением вперед для объекта, векторно для перемещния
SrJeonnyДата: Вторник, 16 Октября 2018, 21:57 | Сообщение # 4 | Тема: Направление в вектор
был не раз
Сейчас нет на сайте
Хай. 2 дня мучений над задачей. Есть объект и камера, объект двигается, поворачивается (через атан2(инпуть х.у) * рад2дег). Двигается кнопками. Предположительно камера может вертеться вокруг него, а он должен двигаться относительно камеры всегда. Тоесть если камера повернута на 30 градусов, то его направление вперед должно соответствовать и он будет двигаться вперед, а не чуть влево.
По предположениям :
В полученный через атан2 угол плюсануть поворот камеры и перевести обратно в радианы. Но тогда получится одно число, а вектору надо два.
Вообще немного понятно что вектор (1,1) это 45 градусов поворота,то 75 граудсов с повернутой камерой это уже что-то иное, возможно инпуты на что-то помножить? Или чтобы инпут давал (1,1) а он бежал на 75 относительно мира и 45 относительно себя
Помогите, мудрецы, хотя-бы зацепками


Сообщение отредактировал SrJeonny - Вторник, 16 Октября 2018, 22:00
SrJeonnyДата: Суббота, 09 Июня 2018, 21:51 | Сообщение # 5 | Тема: Плавное перемещение объекта в точку по нажатию кнопки.
был не раз
Сейчас нет на сайте
Цитата drcrack ()
алгоритм-то верный, но в реальном мире float нельзя сравнивать строгим сравнением из-за их неточности
а поскольку Vector3 состоит из трех float, его тем более нельзя
поэтому так

А что с transform.Translate? Он имеет право находится среди сглаживающих магий? Я так понял у него и MoveTowards есть что-то общее в логике работы.
SrJeonnyДата: Суббота, 09 Июня 2018, 21:37 | Сообщение # 6 | Тема: Плавное перемещение объекта в точку по нажатию кнопки.
был не раз
Сейчас нет на сайте
Прекрасное решение с корутиной! Немного не понял условие :
Цитата drcrack ()
 while(Vector3.Distance(Camera.main.transform.position, position) > 0.01f)

Ведь можно попроще типо :
while (currentPos != newPos) {
Верно?
(Извращаю ваш вариант потому что запутался)
SrJeonnyДата: Суббота, 09 Июня 2018, 21:22 | Сообщение # 7 | Тема: Плавное перемещение объекта в точку по нажатию кнопки.
был не раз
Сейчас нет на сайте
Есть камера, есть объект на которую она смотрит и вокруг которого крутится. По нажатию кнопки она должна переместиться на расстояние вправо, !Плавно переместиться!
Проблема в настоящий момент в том, что по GetKeyUp она перемещается на очень маленькие расстояния, при GetKey только зажимая переносится куда надо. Я пробовал делать метод, запускаемый нажатием кнопки, но работает так же, как и в апдейте. Нужно чтобы один раз нажав кнопку камера плавно переместилась в конкретную точку, а не где-то между старой позицией и нужной.
Сейчас шаманю с Vector3.SmoothDamp, лерп тоже ковырял, не вышло.
Кажется мне может помочь transform.Translate, но как-то не понятно ничего. Местные мудрецы, разложите пожалуйста!
SrJeonnyДата: Вторник, 20 Марта 2018, 00:35 | Сообщение # 8 | Тема: UV карта на разрезанную модельку
был не раз
Сейчас нет на сайте
Добрый вечер, господа. Такое дело : вытащил из фьюза текстурированного дядю (с UV картами на всё-всё), он состоял из тела и глаз, у тела вырезал рот (он мне не нужен, к тому же 2к полигонов это вау) и поставил в юньку, сделал материал и он положился ровно, четко, на глазах глаза, на теле - тело, но вот появилась необходимость персонажа порезать еще на части. Типо руки отдельными мешами, ноги, голова, но геометрия персонажа не изменилась и вот я закидываю это в юньку и получается мыльный ужас. Как я понял оно накидывает на каждую часть тела текстуру заново?
Слышал во фьюзе какая-то магическая UV карта, цилиндра и палочки у меня нет, но делать надо. И так вопрос : Как используя старую UV развертку затекстурить моего клона-Франкенштейна? В ответ хочу получить логическую цепочку необходимых действий (надеюсь это можно как-то автоматизировать с blender'ом и 3D coat'ом)
SrJeonnyДата: Понедельник, 05 Марта 2018, 15:48 | Сообщение # 9 | Тема: Raycast в UI
был не раз
Сейчас нет на сайте
Оффтоп или не оффтоп, вообщем если кто-то сюда зайдет, то наверно не зря, дабы не плодить темы хочу задать вопрос, тесно связанный с изначальной темой. Стрельнул в слот, он переместил его на место того, из которого был луч ( и который удалился сразу после луча), а как запустить цепную реакцию на остальные слоты?
Код :

Тонкости с hit"ом и ду вайлами взрывают мне мозг, что делать?
SrJeonnyДата: Понедельник, 05 Марта 2018, 00:27 | Сообщение # 10 | Тема: Raycast в UI
был не раз
Сейчас нет на сайте
Добрый вечер господа. Дорабатываю инвентарь и возникли проблемы. При удалении панельки (слота в инвентаре) он пускает луч в слот ниже, а тот в следующий слот и так пока слоты не закончатся, все слоты, на которых подействовала эта магия смещаются вверх на величину удаленного слота. Так вот возникла проблема с пулянием рейкаста. Не пойму откуда стрелять то? Код с пояснением:
Код

public void InventorySort () {
  rtransform = gameObject.GetComponent<RectTransform> (); // пробую взять ректрансформ (ведь он аналог трансформа для UI)
  int layerMask = 1 << 5;
  RaycastHit2D hit = Physics2D.Raycast (rtransform.anchoredPosition, -Vector2.up, 50, layerMask); //Пытаюсь стрелять из ректпозиции вниз на 50 едениц (хотя до следующего слота меньше 30)
  if (hit.collider != null) { //тут уже не важно
   Debug.Log (hit.collider.name);
  } else
   return;
    }

Собстна не пойму откуда стрелять то? Стреляю из transform.position так луча нет нигде, из anchoredPosition тоже не видать. Может есть какая-то мудрость или я чего-то не понимаю?
П.С : Коллайдеры на слотах висят в режиме триггера, коллайдеры 2д, луч 2д.

Добавлено (05 Марта 2018, 00:27)
---------------------------------------------
Господа, я тут подумал что мне могут ответить. Ну придет умный дядя и скажет : "Убирай 50, ставь Mathf.Infinity, всё равно столкнется. Тогда и трансформ позишон сработает", проверил и работает! Всем спасибо!
П.С : Извините за шизофрению, наверно неудобно получилось
П.С2 : Админы, за такой балаган готов ответить по всей строгости, но может быть это пригодится новичкам или странникам с измученными мозгами

Сообщение отредактировал SrJeonny - Понедельник, 05 Марта 2018, 00:23
SrJeonnyДата: Суббота, 03 Марта 2018, 06:01 | Сообщение # 11 | Тема: Привязывание кнопки с onClick методом к новому объекту
был не раз
Сейчас нет на сайте
Цитата drcrack ()
поменяй на

Всё работает. Спасибо большое!
SrJeonnyДата: Суббота, 03 Марта 2018, 02:05 | Сообщение # 12 | Тема: Привязывание кнопки с onClick методом к новому объекту
был не раз
Сейчас нет на сайте
Цитата drcrack ()
Ты не используешь ни один параметр, а удаляешь btn, который видимо поле класса и ты его присваиваешь в методе выше, поэтому и удаляется последнний добавленный предмет

Я на самом деле и rbutton туда ставил, результат тот же
SrJeonnyДата: Суббота, 03 Марта 2018, 00:56 | Сообщение # 13 | Тема: Привязывание кнопки с onClick методом к новому объекту
был не раз
Сейчас нет на сайте
Работаю с инвентарем, цикл for не использую. Когда беру предмет он удаляется и в инвентаре (ui) создается слот с иконкой, именем и кнопкой. Кнопка имеет метод onClick прописанный через скрипт. Метод удаления из инвентаря и здесь возникла проблема. Создаю слот в инвентаре, создаю кнопку и даю ей в parent'ы свежесозданный слот, по идее после нажатия кнопки должен удалится слот, который её родитель и она сама соответственно (ну и там предмет на сцене потом появится и до этого я еще не дошел). НО если я беру второй предмет в инвентарь то всё ломается : нажимая на кнопку удаления в первом слоте инвентаря удаляется второй (или третий, вообщем последний созданный) и если я жму кнопку в еще одном слоте вылазит ошибка, мол "Кнопка уже удалена, че ты её тыкаешь?".
Код:
Код

public void InventoryAct (GameObject itembox) { // itembox - предмет, попавший из луч из другого скрипта, а этот войд из интерфейса
  
  Item item = itembox.GetComponent<Item> ();
  items.Add (item.prefab); // тут не важно

   itemInvName = itembox.name;
   Destroy (itembox);
   invItem = Instantiate<GameObject> (slot, content.transform);
   invItem.GetComponentInChildren<Text> ().text = itemInvName; // магия началась
   invItem.transform.Find ("SlotTexture").gameObject.GetComponent<Image> ().sprite = item.icon;
   rtransform = invItem.GetComponent<RectTransform> ();
   rtransform.anchoredPosition = new Vector2 (128f, offset);
   offset -= 61; // магия закончилась
   rbutton = Instantiate<GameObject> (removeButton, invItem.transform); //создание кнопки (removebutton - публичный ГО-префаб)
   Debug.Log (rbutton.transform.parent.gameObject.name);
   btn = rbutton.GetComponent<Button> ();
   btn.onClick.AddListener (() => InventoryRemove (invItem, rbutton, rtransform));
  }

    void InventoryRemove (GameObject invItem,GameObject rbutton, RectTransform rtransform) {
  Destroy (btn.transform.parent.gameObject); // удаляет своего родителя ( и себя заодно)
                   // тут будут еще строки после решения проблемы с кнопкой
    }

Не понимаю в чем проблема, код можно не модернизировать, прошу лишь логической помощи и наводок. Спасибо.


Сообщение отредактировал SrJeonny - Суббота, 03 Марта 2018, 00:57
SrJeonnyДата: Воскресенье, 25 Февраля 2018, 21:53 | Сообщение # 14 | Тема: Сложение переменных с одинаковым названием в одном скрипте.
был не раз
Сейчас нет на сайте
Оба варианты интересны и хороши. Спасибо большое!
P.S: замечательная рисовка у вашей игры :)
SrJeonnyДата: Воскресенье, 25 Февраля 2018, 21:46 | Сообщение # 15 | Тема: Сложение переменных с одинаковым названием в одном скрипте.
был не раз
Сейчас нет на сайте
Проблема как раз в суммировании. Как? Плюсиками? Или команда? Команда убрала бы у меня все вопросы.
SrJeonnyДата: Воскресенье, 25 Февраля 2018, 21:19 | Сообщение # 16 | Тема: Сложение переменных с одинаковым названием в одном скрипте.
был не раз
Сейчас нет на сайте
Добрый вечер господа. Столкнулся с глупой проблемой. Предположим на персонажа можно одеть броню, да разбитую на части (ака Скайрим: шляпа, костюм, наручи, сапоги) и каждый из них будет иметь переменную типа int отвечающая за защиту, предположим она будет снижать урон и предельно просто, передавая суммарное значение int def со всех элементов одеяния куда-либо, все они сложатся и получится одна цифра, благодаря которой рассчитается снижение урона.
Я бы залез в гугл, перекопал всю документацию по юнити, но я даже не знаю как четко сформулировать это всё.
Есть вариант наплодить hatDef,armourDef,legsDef и т.дef... Но жутко не эстетично, уверен есть решение проще. Мудрецы, отзовитесь! lovegcup
  • Страница 1 из 1
  • 1
Поиск:

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