Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
mrFrankenstein | Дата: Четверг, 25 Августа 2016, 15:23 | Сообщение # 8081 |
частый гость
Сейчас нет на сайте
| Vicka, Так не получиться?
//Move if (Input.GetKeyDown(KeyCode.LeftArrow) ) { speed = -speedX; } if (Input.GetKeyUp(KeyCode.LeftArrow)) { speed = 0; } //run
if (Input.GetKeyDown(KeyCode.LeftShift) && (!Input.GetKeyDown(KeyCode.LeftArrow) )) { speedX = runSpeed; run = true; } if (Input.GetKeyUp(KeyCode.LeftShift)) { speedX = oldSpeedX; run = false; }
}
Сообщение отредактировал mrFrankenstein - Четверг, 25 Августа 2016, 15:24 |
|
| |
seaman | Дата: Четверг, 25 Августа 2016, 15:25 | Сообщение # 8082 |
старожил
Сейчас нет на сайте
| скорость меняется только при нажатии кнопок стрелок. Если кнопка стрелки уже нажата - скорость никак не изменится. Изменится только при следующем нажатии на стрелку. Я бы сделал так:
Код if (Input.GetKeyDown(KeyCode.LeftArrow)) { speed = -speedX; } if (Input.GetKeyUp(KeyCode.LeftArrow)) { speed = 0; } //run
if (Input.GetKeyDown(KeyCode.LeftShift)) { speed *= runSpeed; run = true; } if (Input.GetKeyUp(KeyCode.LeftShift)) { speed /= runSpeed; run = false; }
Сообщение отредактировал seaman - Четверг, 25 Августа 2016, 15:26 |
|
| |
mrFrankenstein | Дата: Четверг, 25 Августа 2016, 15:54 | Сообщение # 8083 |
частый гость
Сейчас нет на сайте
| seaman,Цитата seaman ( ) скорость меняется только при нажатии кнопок стрелок. Если кнопка стрелки уже нажата - скорость никак не изменится. Изменится только при следующем нажатии на стрелку. Я бы сделал так: Код if (Input.GetKeyDown(KeyCode.LeftArrow)) { speed = -speedX; } if (Input.GetKeyUp(KeyCode.LeftArrow)) { speed = 0; } //run
if (Input.GetKeyDown(KeyCode.LeftShift)) { speed *= runSpeed; run = true; } if (Input.GetKeyUp(KeyCode.LeftShift)) { speed /= runSpeed; run = false; } Если, конечно, это всё не в Update. Иначе, скорость каждый кадр будет делиться.
Сообщение отредактировал mrFrankenstein - Четверг, 25 Августа 2016, 15:55 |
|
| |
seaman | Дата: Четверг, 25 Августа 2016, 16:28 | Сообщение # 8084 |
старожил
Сейчас нет на сайте
| Цитата скорость каждый кадр будет делиться. С чего вдруг? У Вас такая бешенная реакция? Можете каждый кадр нажать и отпустить кнопку? И даже ограничение скорости делать не надо...
Сообщение отредактировал seaman - Четверг, 25 Августа 2016, 16:30 |
|
| |
ShortKedr | Дата: Четверг, 25 Августа 2016, 16:30 | Сообщение # 8085 |
Renword Studio
Сейчас нет на сайте
| Vicka, mrFrankenstein, ну вы умники =) Ещё разочек прочтите что написал seaman и поймите, что GetComponentInChildren<T>() не возвращает массив, а возвращает первый компонента типа T этого generic метода. А теперь небольшая логическая задачка, аля "найди отличия": GetComponentInChildren GetComponentsInChildren
Сообщение отредактировал ShortKedr - Четверг, 25 Августа 2016, 16:31 |
|
| |
Vicka | Дата: Четверг, 25 Августа 2016, 16:33 | Сообщение # 8086 |
Another ART
Сейчас нет на сайте
| Цитата ShortKedr ( ) Vicka, mrFrankenstein, ну вы умники =) я отметила то что бросилось в глаза. Если чего-то не знаю я с советами и не лезу.
|
|
| |
ShortKedr | Дата: Четверг, 25 Августа 2016, 16:51 | Сообщение # 8087 |
Renword Studio
Сейчас нет на сайте
| Цитата Vicka ( ) Хм.. Вопрос такой. Есть бег есть ходьба Если нажать в начале кнопку бега потом ходьбы все нормально персонаж бежит. Если нажать кнопку бега во время нажатой кнопки ходьбы персонаж на бег не переходит. В чем косяг? Vicka, всегда нужно выстраивать правильную логическую цепочку причинно-следственных связей(если что-то не должно работать при определённом условии, то код должен быть написан так, что бы это реально не работало при всех возможных условиях работы этого), а так получается что у тебя все условия при определённых проказах могут сработать, ну формально все, а на самом деле 2 из 4 сработают. Сразу вопрос что такое oldSpeedX, откуда взялся и что с ним происходит. Второй вопрос, как часто этот код происходит, FixedUpdate или Update.
И оптимальное простое решение, которое должно работать при любых значениях неизвестных мне переменных:
Код if (Input.GetKey(KeyCode.LeftArrow)) { speed = -speedX; } else { speed = 0; } //run
if (Input.GetKey(KeyCode.LeftShift)) { speedX = runSpeed; run = true; } else { speedX = oldSpeedX; run = false; }
}
На самом деле я уверен, что это ничего не изменит и вопрос всё таки в общей логике по большей части лежит, вот так)Добавлено (25 августа 2016, 16:51) ---------------------------------------------
Цитата Vicka ( ) я отметила то что бросилось в глаза. Если чего-то не знаю я с советами и не лезу. Ну, это по большей части было написано тому, кто задал вопрос. Но тебе тоже это может пригодиться =)
Сообщение отредактировал ShortKedr - Четверг, 25 Августа 2016, 16:46 |
|
| |
mrFrankenstein | Дата: Четверг, 25 Августа 2016, 19:53 | Сообщение # 8088 |
частый гость
Сейчас нет на сайте
| Цитата ShortKedr ( ) Vicka, mrFrankenstein, ну вы умники =) Ещё разочек прочтите что написал seaman и поймите, что GetComponentInChildren<T>() не возвращает массив, а возвращает первый компонента типа T этого generic метода. А теперь небольшая логическая задачка, аля "найди отличия": GetComponentInChildren GetComponentsInChildren
Спасибо.
|
|
| |
darkangel223 | Дата: Понедельник, 29 Августа 2016, 18:23 | Сообщение # 8089 |
был не раз
Сейчас нет на сайте
| Добрый день, можете подсказать какой-нибудь видео(текстовой) урок как правильно виставить якоря для Android игры (2d). Пробовал сам и то нужные элементы перекрываются, то все выглядит совсем ужасно(
|
|
| |
beril | Дата: Понедельник, 29 Августа 2016, 18:52 | Сообщение # 8090 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| А чем официальные не угодили ? Создание интерфейса (UI) под разные разрешения экрана https://www.youtube.com/watch?v=FeheZqu85WI
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
Otinagi | Дата: Среда, 31 Августа 2016, 08:27 | Сообщение # 8091 |
постоянный участник
Сейчас нет на сайте
| Два вопросика возникло: 1. Можно ли как-то рейкастить видимую модель, а не её физическую составляющую? В инете видел способ, где ручками доходили до отдельных полигонов и там уже определяли точку пересечения луча. Как-то слишком муторно, неужели нет другого способа или, может, какого готового и проверенного решения на ассете сторе? 2. Могли бы посоветовать толковую систему декалей, в частности интересуют дырки от пуль. И бесплатную. Опять же с учётом пункта 1, т.к. одна более менее норм система как-то очень странно себя ведёт, если физ. модель не совпадает с видимой, а также при смене способа рендеринга.
Спасибо.
«Смерти меньше всего боятся те люди, чья жизнь имеет наибольшую ценность.» Иммануил Кант
|
|
| |
mrFrankenstein | Дата: Вторник, 06 Сентября 2016, 15:48 | Сообщение # 8092 |
частый гость
Сейчас нет на сайте
| Цитата Otinagi ( ) 1. Можно ли как-то рейкастить видимую модель, а не её физическую составляющую?
Попробуете через тег найти.
if(Hit.collider.tag == "Enemy") { ..... }
Добавлено (06 сентября 2016, 15:48) --------------------------------------------- Помогите пожалуйста. При помощи райкаста я получаю обьект, он сохраняется в Hit. НО, необходимо влезть в скрипт на обьекте Hit (это враг), а через Hit это сделать не получается. Подскажите, как сделать?
Сообщение отредактировал mrFrankenstein - Вторник, 06 Сентября 2016, 15:55 |
|
| |
Lertmind | Дата: Вторник, 06 Сентября 2016, 16:15 | Сообщение # 8093 |
заслуженный участник
Сейчас нет на сайте
| mrFrankenstein, варианты:
Код Компонент c = hit.transform.GetComponent<Компонент>(); Компонент c = hit.collider.GetComponent<Компонент>(); Компонент c = hit.rigidbody.GetComponent<Компонент>();
|
|
| |
mrFrankenstein | Дата: Вторник, 06 Сентября 2016, 18:40 | Сообщение # 8094 |
частый гость
Сейчас нет на сайте
| Цитата Lertmind ( ) mrFrankenstein, варианты: Код Компонент c = hit.transform.GetComponent<Компонент>(); Компонент c = hit.collider.GetComponent<Компонент>(); Компонент c = hit.rigidbody.GetComponent<Компонент>(); Спасибо, помогло)
|
|
| |
|
mrFrankenstein | Дата: Среда, 07 Сентября 2016, 01:23 | Сообщение # 8096 |
частый гость
Сейчас нет на сайте
| Скажите, как добавить Gif в UI так, чтобы она продолжила воспроизводиться?
|
|
| |
Vicka | Дата: Среда, 07 Сентября 2016, 09:30 | Сообщение # 8097 |
Another ART
Сейчас нет на сайте
| mrFrankenstein,
Цитата mrFrankenstein ( ) Скажите, как добавить Gif в UI так, чтобы она продолжила воспроизводиться? Да вы батенька с извера... Так но на кой?
|
|
| |
Lertmind | Дата: Среда, 07 Сентября 2016, 12:59 | Сообщение # 8098 |
заслуженный участник
Сейчас нет на сайте
| Vicka, зависимость от System.Drawing.dll, шикарно. mrFrankenstein, гугл даёт неплохой проект UnityGifDecoder (видюшка от него https://www.youtube.com/watch?v=WRHKV7BEKhc). Конечно для UI придётся адаптировать и как пишет автор, могут быть проблемы производительности на мобильных устройства. Использовать gif - тупость конечно, но если очень надо проще сделать разложение в атлас со всеми настройками.
|
|
| |
Barbatos | Дата: Среда, 07 Сентября 2016, 13:18 | Сообщение # 8099 |
3D-моделлер/Руководитель
Сейчас нет на сайте
| Lertmind, А смысл, если есть куча конверторов гифа в анимрованные спрайты? http://gif2sprite.com/
Его остатки и на хлеб не намазать. Мой тебе совет Пабло - относись к жизни как к веселухе, но непродолжительной. @Эш
|
|
| |
Lertmind | Дата: Среда, 07 Сентября 2016, 13:53 | Сообщение # 8100 |
заслуженный участник
Сейчас нет на сайте
| Barbatos, я написал об этом "Использовать gif - тупость конечно, но если очень надо проще сделать разложение в атлас со всеми настройками.".
|
|
| |