Воскресенье, 29 Декабря 2024, 20:15

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • Pe4enkaДата: Среда, 15 Апреля 2015, 17:18 | Сообщение # 6921
    почетный гость
    Сейчас нет на сайте
    MANMANA, Эх, ну хорошо). Тогда можете яснее объяснить ваш способ выброса и подбора оружия с корректным использованием скрипта смены оружия ?

    Бадабум!
    PATCH1Дата: Четверг, 16 Апреля 2015, 00:41 | Сообщение # 6922
    заслуженный участник
    Сейчас нет на сайте
    Вопрос по физике в Unity3d.
    Есть ракетница, с ракетницы вылетает ракета с N-ой силой, ракета входит в коллизию с каким то объектом не большой массы , и толкает объект (пускай будет снежный ком) с N-ой силой (сила которая осталась еще) , снежный ком покатился.
    Задача
    Как узнать скорость движения кома? ну или значение силы которая заставляет объект двигатся (сила по степено гаснет, и вот как узнать текущее значение силы?)
    MANMANAДата: Четверг, 16 Апреля 2015, 00:55 | Сообщение # 6923
    почти ветеран
    Сейчас нет на сайте
    Цитата PATCH1 ()
    Как узнать скорость движения кома?

    http://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html


    http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
    VKонтакте 3Dbuffer

    Последнее:

    Новый раздел "Текстуры"

    Как запатентовать, защитить техническое решение, игру, идею
    PATCH1Дата: Четверг, 16 Апреля 2015, 01:05 | Сообщение # 6924
    заслуженный участник
    Сейчас нет на сайте
    Цитата MANMANA ()
    http://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html

    rigidbody.velocity - эт вектор, а что бы перевести в единое число надо rigidbody.velocity.magnitude использовать да? окей получим мы число, но это будет скорость какая? за какую единицу времени?
    MANMANAДата: Четверг, 16 Апреля 2015, 10:05 | Сообщение # 6925
    почти ветеран
    Сейчас нет на сайте
    Цитата Pe4enka ()
    MANMANA, Эх, ну хорошо). Тогда можете яснее объяснить ваш способ выброса и подбора оружия с корректным использованием скрипта смены оружия ?

    сначала опишем самый простой способ:
    Существует определенное количество видов и типов оружия: Пистолет и автомат. Всего 2.
    Создадим два префаба - prefPistol и prefSubmachine.
    Создадим переменную, отвечающую за текущее оружие в руках персонажа. currWeapon. тип переменной: Texture2D, GO, String, Int - на всё есть Ваша фантазия и способ ее реализации. У нас будет тип String
    Создадим List (можно и обычный массив) инвентаря inventoryItems. тип переменной: String.
    Создадим массив (можно и List) gameFieldItems, хранящий информацию об объектах, расположенных на игровом поле. Данный лист будет хранить, например, название оружие (тип переменной String) и его расположение на игровом поле (тип переменной Vector3)
    изначально у персонажа в руках воздух, следовательно переменная currWeapon = zeroName;
    на игровом поле есть одно оружие - пистолет, имя и позиция которого хранятся в массиве gameFieldItems в виде pistolOne, (100.0f, 200.0f, 300.0f)
    в инвентаре персонажа также есть оружие - автомат, currWeapon = submachineOne;

    Отображение пушки в руках персонажа
    дефолтнно (без оружия) пустой префаб-пустышка (prefZero), привязанный к кости кисти
    в переменной currWeapon = zeroName (имя пустышки-префаба)
    Отображение объекта в инвентаре в гуи отображаем картинки (или 3d объекты), согласно именам, хранящихся в массиве inventoryItems
    Отображение объекта на сцене - инстанс GO согласно массиву gameFieldItems;

    Если наступили пяткой на пистолет, то подбираем его, путем добавления имени элемента из массива gameFieldItems, у нас pistolOne, в list inventoryItems. Из массива gameFieldItems удаляем элемент, соответствующий оружию, на которое наступили.

    Хотим добавить предмет из инвентаря (пистолет) в руки персонажа, например, посредством клика мышью на иконке пистолета в инвентаре. По событию меняем пустышку в руках персонажа на GO пистолета prefPistol, записав также имя из массива инвентаря в currWeapon = pistolOne. (Можно удалять из массива инвентаря, можно не удалять).

    Хотим выбросить из инвентаря пистолет. По событию, например, ЛКП на иконке оружия в инвентаре) проверяем, не находится ли текущее оружие в руках персонажа, если True = обнуляем (пишем zeroName в переменную currWeapon), меняем GO prefPistol в руках персонажа на пустышку prefZero. а сам GO prefPistol бросаем на землю с координатами игрока. если False, то добавляем в gameFieldItems pistolOne с координатами игрока. Удаляем из массива инвентаря.
    инстанциируем prefPistol в координатах игрока.

    Кхех, вот такой алгоритм

    Добавлено (16 апреля 2015, 02:18)
    ---------------------------------------------
    а скрипт смены оружия, который у Вас... из него можно брать название оружие и префаб оружия.

    Это был рассмотрен вариант, который не учитывает количество патронов в автомате, его 80-ый или даже 100500-ый уровень, цвет, насколько он поврежден. т.е. не учитывает каждый экземпляр/инстанс каждого класса оружия.
    В случае необходимости хранения каждого инстанса, например, мы спрятали снайперскую винтовку в носке Добби, который лежит в сундуке в хижине Дяди Тома, то нам придется писать систему с базой данных, где у каждого предмета будет свой ID, например, сгенеренный автоматически, либо назначаемый по порядку. БД могут быть реляционными, троечными, да какими угодно :). даже хэш-таблицы можно использовать.

    Может быть, здесь как-то подмогут и player Prefabs...

    Возможно, (я даже уверен) где-то уже есть реализация такой системы предметов на Юнити. И не обязательно именно по тому алгоритму, что я предложил, поскольку можно брать имена объектов сразу из БД...

    Добавлено (16 апреля 2015, 02:29)
    ---------------------------------------------
    Цитата PATCH1 ()
    rigidbody.velocity - эт вектор, а что бы перевести в единое число надо rigidbody.velocity.magnitude использовать да? окей получим мы число, но это будет скорость какая? за какую единицу времени?

    да, Rigibody.velocity.magnitude. unity/s. если принимать один юнит Юньки, то м/с, но тогда и гравитацию также поставить 9,8(...) м/с^2 smile

    без ригидбади вот так:
    Код
    startPoint = transform.position;
    yield WaitForSeconds (1);
    endPoint = transform.position;
    float speed = Vector3.Distance(startPoint, endPoint)

    в свое время подсмотрено у Левш@

    Добавлено (16 апреля 2015, 10:05)
    ---------------------------------------------

    Цитата MANMANA ()
    а скрипт смены оружия, который у Вас... из него можно брать название оружие и префаб оружия.

    Добавлю к этому и к этому
    Цитата MANMANA ()
    Хотим добавить предмет из инвентаря (пистолет) в руки персонажа, например, посредством клика мышью

    следующее:
    Смена оружия посредством скрипта, например, использующим колесико мыши, может осуществляться так: находим в массиве инвентаря имя текущего оружия, которое находится в руках персонажа, и начиная с этого номера, в зависимости от того в какую сторону крутили колесико, перемещаемся по массиву вперед или назад. И кладем новое оружие в руку персонажа и в инвентарь старое оружие так, как было описано для подбора с земли и как для вы коды вания на землю


    http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
    VKонтакте 3Dbuffer

    Последнее:

    Новый раздел "Текстуры"

    Как запатентовать, защитить техническое решение, игру, идею


    Сообщение отредактировал MANMANA - Четверг, 16 Апреля 2015, 02:38
    Pe4enkaДата: Четверг, 16 Апреля 2015, 16:11 | Сообщение # 6926
    почетный гость
    Сейчас нет на сайте
    MANMANA, Ничоси, это у тебя замудренно, у меня просто пшик в сторону.

    Добавлено (16 апреля 2015, 16:11)
    ---------------------------------------------
    MANMANA, Сделал ! Оказалось все просто, в скрипте смены оружия сделал функцию удаления оружия(через цикл), потом в инвентаре создал еще одну публичную ссылку Itema (заполняется Drop-ом с одетых итемов), затем после заполнения этой ссылки запускается функция удаления оружия (причем лишь выделенного).
    Хреново конечно объяснил) Чуть позже попробую переформулировать.


    Бадабум!
    MANMANAДата: Четверг, 16 Апреля 2015, 16:15 | Сообщение # 6927
    почти ветеран
    Сейчас нет на сайте
    А вот теперь подумай, как быть в такой ситуации:
    классическая РПГ, где меч-кладенец имеет вес, требуемую ловкость, силу, свой цвет рукояти, остроту/поношенность, уровень, принадлежность расе. Все эти параметры генерятся автоматически при смерти противника, открытии сундука и т.д. Ладно, если предметы исчазеют после часа лежания на земле и в сундуке всего 20 слотов, а в рюкзаке 10. А если предметы не исчезают, а если у меня ангар, где я могу хранить эти предметы?
    Отсюда как минимум одна таблица для предметов с ID, характеристиками, типом - оружие (плюс ID типа оружия), еда, шмот (сапоги, тельник, кальсоны...), отсюда же и записанные координаты местонахождения в мире предметов (причем с идентификатором мира, где они лежат, сундука) и т.д.
    А уж когда начинается сетевое веселье, то без этого никак smile храним-то все на серваке, чтобы не баловали


    http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
    VKонтакте 3Dbuffer

    Последнее:

    Новый раздел "Текстуры"

    Как запатентовать, защитить техническое решение, игру, идею
    Pe4enkaДата: Четверг, 16 Апреля 2015, 17:12 | Сообщение # 6928
    почетный гость
    Сейчас нет на сайте
    кхм, херасе....

    Бадабум!
    BarssДата: Суббота, 18 Апреля 2015, 19:08 | Сообщение # 6929
    уже был
    Сейчас нет на сайте
    Уважаемые форумчане.
    Помогите решить пару проблем. Речь о UI.

    1. Найти все UI объекты под курсором мыши (тут, наверно, что-то вроде Graphic Raycaster надо использовать, но не понимаю как).

    2. Вот структура Canvas - Panel1 - Panel2. Panel2 растягивается в RectTransform по размеру Panel1 через пресеты (scratch).
    Потом Panel2 делаю префабом и удаляю из иерархии.
    После к коде инстанциирую префаб и делаю его ребенком Panel1. Но никак не могу заставить его растянуться на всю Panel1.
    Подскажите, как это сделать? Не вижу в RectTransform местодов для этого, хотя есть даже управление якорями.

    Дополнение. Вторую проблему решил через sizeDelta = Vector2.zero;

    Буду очень признателен за помощь.


    Сообщение отредактировал Barss - Воскресенье, 19 Апреля 2015, 18:38
    berilДата: Понедельник, 20 Апреля 2015, 16:36 | Сообщение # 6930
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата Barss ()
    Найти все UI объекты под курсором мыши (тут, наверно, что-то вроде Graphic Raycaster надо использовать, но не понимаю как).

    У тебя, что UI элементы друг за другом находятся? Или тебя просто нужно отследить когда мышка наведена на UI элемент ?




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    BarssДата: Понедельник, 20 Апреля 2015, 22:49 | Сообщение # 6931
    уже был
    Сейчас нет на сайте
    Цитата beril ()
    У тебя, что UI элементы друг за другом находятся? Или тебя просто нужно отследить когда мышка наведена на UI элемент ?


    Да. Друг за другом. Или внутри друг друга.
    Кажется, получается вот так

    Код
    List<RaycastResult> raycastResult = new List<RaycastResult>();
    EventSystem.current.RaycastAll(eventData, raycastResult);
    foreach(RaycastResult r in raycastResult){
             Debug.Log (r.gameObject);
    }


    Хотя мне и не все понятно. В частности, когда один клип становится ребенком другого, то он в списке не отображается почему-то.
    ArtanielДата: Среда, 22 Апреля 2015, 15:15 | Сообщение # 6932
    частый гость
    Сейчас нет на сайте
    Пытаюсь разобраться с новым GUI, в частности его скриптингом. Новым в смысле не легаси, а тот который на Canvas-е, с rect transform-ами и т.п.. И что то не получается найти толковый мануал. То ли в гугле меня забанили, то ли карма не достаточно чистая, но попадаются или мануалы по легаси или предложения пойти погуглить.
    В частности не могу понять как динамически выводить текст. Например счетчик hp типичного RTS юнита.
    Покидайтесь ссылочками пожалуйста.
    MANMANAДата: Среда, 22 Апреля 2015, 18:50 | Сообщение # 6933
    почти ветеран
    Сейчас нет на сайте
    http://resolvedqs.com/tube....ol-saul
    http://www.youtube.com/watch?v=TmYPtkPGQzA
    http://www.youtube.com/watch?v=y3OZXMxsrUI
    вот он новый UI из Unity 4.6/unity5

    в поисковике используй Unity5 или Unity4.6 UI и слово canvas wink


    http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
    VKонтакте 3Dbuffer

    Последнее:

    Новый раздел "Текстуры"

    Как запатентовать, защитить техническое решение, игру, идею


    Сообщение отредактировал MANMANA - Среда, 22 Апреля 2015, 19:20
    ArtanielДата: Среда, 22 Апреля 2015, 19:53 | Сообщение # 6934
    частый гость
    Сейчас нет на сайте
    Спасибо, помогло. Оказывается не хватало всего лишь
    using UnityEngine.UI;
    появился класс Text, и все стало просто и понятно.
    LamossusДата: Понедельник, 27 Апреля 2015, 15:30 | Сообщение # 6935
    частый гость
    Сейчас нет на сайте
    вопрос про 2d проект.
    ГГ состоит из нескольких деталей, анимация происходит посредством перемещения данных деталей. Анимация была сделана, но вот в чём проблема, она проигрывается в одном и том же месте, а нужно чтобы она проигрывалась там где стоит персонаж. так вот вопрос, как сделать чтобы детали перемещались относительно ГГ, а не по координатам?


    Сообщение отредактировал Lamossus - Вторник, 28 Апреля 2015, 16:34
    ArtanaДата: Вторник, 28 Апреля 2015, 14:33 | Сообщение # 6936
    был не раз
    Сейчас нет на сайте
    Здравствуйте! Подскажите пожалуйста, как лучше реализовать такую задачу: при нажатии на кнопку один из объектов начинает светится.
    EchoITДата: Вторник, 28 Апреля 2015, 16:00 | Сообщение # 6937
    старожил
    Сейчас нет на сайте
    Artana,
    Код
    if (Input.GetKeyDown(KeyCode.*)) otherobject.GetComponent<Light>().enabled=true;

    Вместо * - нужная кнопка (если ты про клавиши клавиатуры).
    otherobject - объект, который должен начать светиться. На нём должен висеть выключенный компонент Light, чтобы это сработало.


    Долгожданный анонсик: State of War

    Сообщение отредактировал EchoIT - Вторник, 28 Апреля 2015, 16:01
    ArtanaДата: Среда, 29 Апреля 2015, 10:02 | Сообщение # 6938
    был не раз
    Сейчас нет на сайте
    EchoIT, Спасибо огромное!!!!!!!!!!!!! А если нужно будет мышкой щёлкать изментися только GetKeyDown, да?

    Добавлено (29 апреля 2015, 10:02)
    ---------------------------------------------
    EchoIT, сейчас прочитала свой вопрос и поняла, что неточно передала условия задачи >________________< Условия такие: в программе юнити создаётся кнопка с именем модели и она нажимается мышкой,и после модель начинает светится. Поскольку выбираемая модель находится внутри другой модели просто кликнуть на неё мышкой нельзя, поэтому нужна кнопка с именем модели, вот.

    MANMANAДата: Среда, 29 Апреля 2015, 23:47 | Сообщение # 6939
    почти ветеран
    Сейчас нет на сайте
    Цитата Artana ()
    Поскольку выбираемая модель находится внутри другой модели просто кликнуть на неё мышкой нельзя

    Она как маленькая сфера внутри большой сферы или просто ребенок большой сферы?


    http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
    VKонтакте 3Dbuffer

    Последнее:

    Новый раздел "Текстуры"

    Как запатентовать, защитить техническое решение, игру, идею
    seamanДата: Четверг, 30 Апреля 2015, 08:29 | Сообщение # 6940
    старожил
    Сейчас нет на сайте
    Цитата
    Поскольку выбираемая модель находится внутри другой модели просто кликнуть на неё мышкой нельзя

    OnMouse... не сработает, а вот Physics.RaycastAll можно использовать
    Поиск:

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