Вопрос-[ответ] по 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
без ригидбади вот так: Код 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 типа оружия), еда, шмот (сапоги, тельник, кальсоны...), отсюда же и записанные координаты местонахождения в мире предметов (причем с идентификатором мира, где они лежат, сундука) и т.д. А уж когда начинается сетевое веселье, то без этого никак храним-то все на серваке, чтобы не баловали
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
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 можно использовать
|
|
| |
|