Вопрос-[ответ] по Unity
|
|
QWER56 | Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1 |
старожил
Сейчас нет на сайте
| Вопрос-[Ответ] по Unity3d
База скриптов Unity3d Курс Уроков по Unity 3D от Alcatraz
ConsMark - поисковик по интернет магазинам.
Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54 |
|
| |
8Observer8 | Дата: Вторник, 10 Мая 2016, 15:13 | Сообщение # 7841 |
заслуженный участник
Сейчас нет на сайте
| Sanprabhu, объект должен исчезать с одной клетки и появляться в другой или плавно переходить?
Сообщение отредактировал 8Observer8 - Вторник, 10 Мая 2016, 15:19 |
|
| |
drjokerface | Дата: Вторник, 10 Мая 2016, 15:16 | Сообщение # 7842 |
почетный гость
Сейчас нет на сайте
| Кто нибудь пробовал Granite или Amplify Texture в Unity (или UE4) в чем их прикол, а то я что-то не совсем понял.
|
|
| |
Sanprabhu | Дата: Вторник, 10 Мая 2016, 15:19 | Сообщение # 7843 |
частый гость
Сейчас нет на сайте
| Цитата drjokerface ( ) объект должен исчезать с одной клекти и появляться в другой или плавно переходить? Появляться. Чтобы переходить использовать поиск пути, например Simply A* правильно?
|
|
| |
beril | Дата: Вторник, 10 Мая 2016, 16:41 | Сообщение # 7844 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата drjokerface ( ) Кто нибудь пробовал Granite или Amplify Texture в Unity (или UE4) в чем их прикол, а то я что-то не совсем понял. smile https://www.youtube.com/watch?v=ivAdU7yCYS0
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
drjokerface | Дата: Вторник, 10 Мая 2016, 18:56 | Сообщение # 7845 |
почетный гость
Сейчас нет на сайте
| Как я понял виртуальный текстуринг эффективен при создании окружения и для персонажей не подойдет.
|
|
| |
Sanprabhu | Дата: Среда, 11 Мая 2016, 09:47 | Сообщение # 7846 |
частый гость
Сейчас нет на сайте
| Всем привет. Мучился-мучился со своими столкновениями, сеткой. Все решилось округлением Mathf.Round )) при первом появлении все ок. Теперь встал такой вопрос: в определенный момент времени объект должен переместиться вверх по оси y, но если там находится другой объект тут опять та же проблема - объекты толкаются (( Как проверить есть ли кто-то наверху или нет, и если да, я просто смещу его вправо или влево по оси x(опять же если там пусто) и потом подниму. Спасибо.
|
|
| |
8Observer8 | Дата: Среда, 11 Мая 2016, 10:08 | Сообщение # 7847 |
заслуженный участник
Сейчас нет на сайте
| Цитата Sanprabhu ( ) Как проверить есть ли кто-то наверху или нет
Код bool IsValidDir(Vector2 dir) { Vector2 pos = transform.position; RaycastHit2D hit = Physics2D.Linecast(pos + dir, pos); return (hit.collider.gameObject == gameObject); }
Сообщение отредактировал 8Observer8 - Среда, 11 Мая 2016, 10:12 |
|
| |
Sanprabhu | Дата: Среда, 11 Мая 2016, 12:43 | Сообщение # 7848 |
частый гость
Сейчас нет на сайте
| Цитата 8Observer8 ( ) bool IsValidDir(Vector2 dir) { Vector2 pos = transform.position; RaycastHit2D hit = Physics2D.Linecast(pos + dir, pos); return (hit.collider.gameObject == gameObject); }
Теперь NullReferenceException: Object reference not set to an instance of an object ((
Сообщение отредактировал Sanprabhu - Среда, 11 Мая 2016, 12:44 |
|
| |
8Observer8 | Дата: Среда, 11 Мая 2016, 12:50 | Сообщение # 7849 |
заслуженный участник
Сейчас нет на сайте
| Цитата Sanprabhu ( ) Теперь NullReferenceException: Object reference not set to an instance of an object (( Это значит, что вы не инициализировали ссылку на объект. Может быть вы забыли в инспекторе перетащить префаб или объект на какое-нибудь открытое поле?
|
|
| |
Sanprabhu | Дата: Среда, 11 Мая 2016, 13:00 | Сообщение # 7850 |
частый гость
Сейчас нет на сайте
| Цитата 8Observer8 ( ) Это значит, что вы не инициализировали ссылку на объект Это появилось после добавления функции IsValidDir(Vector2 dir). Может я должен что-то инициализировать из этой функции?
Если кликнуть на Exception, указывает на эту строку return (hit.collider.gameObject == gameObject);
Сообщение отредактировал Sanprabhu - Среда, 11 Мая 2016, 13:05 |
|
| |
8Observer8 | Дата: Среда, 11 Мая 2016, 13:04 | Сообщение # 7851 |
заслуженный участник
Сейчас нет на сайте
| Цитата Sanprabhu ( ) Это появилось после добавления функции IsValidDir(Vector2 dir). Может я должен что-то инициализировать из этой функции?
Тогда изменим немного:
Код bool IsValidDir(Vector2 dir) { Vector2 pos = transform.position; RaycastHit2D hit = Physics2D.Linecast(pos + dir, pos); if (hit) { return hit.collider.gameObject == gameObject; } else { return false; } }
Сообщение отредактировал 8Observer8 - Среда, 11 Мая 2016, 13:06 |
|
| |
Sanprabhu | Дата: Четверг, 12 Мая 2016, 02:55 | Сообщение # 7852 |
частый гость
Сейчас нет на сайте
| 8Observer8, спасибо, все работает )) Добавлено (12 мая 2016, 02:55) --------------------------------------------- Доброго времени суток. Подскажите, почему Unity виснет при использовании цикла while?
Код check = IsEmpty(); while (!check) { transform.position += new Vector3(1.0f, 0, 0); check = IsEmpty(); }
Код bool IsEmpty() { RaycastHit hit;
Vector3 up = transform.TransformDirection(Vector3.up);
return (Physics.Raycast(transform.position, (up), out hit, (float)0.3)) ? false : true; } Причем виснет только если использовать функции в цикле. Если написать простой цикл без функций, будет работать. P.S. Для эксперимента пробовал использовать go to, также виснет.
Сообщение отредактировал Sanprabhu - Четверг, 12 Мая 2016, 00:46 |
|
| |
Lertmind | Дата: Четверг, 12 Мая 2016, 09:30 | Сообщение # 7853 |
заслуженный участник
Сейчас нет на сайте
| Sanprabhu, проверил в Unity, как и думал в этом коде нет проблемы, скорее всего где-то что-то ещё происходит. Замечу, что код для IsEmpty() эквивалентен этому:
Код bool IsEmpty() { return !Physics.Raycast(transform.position, transform.up, 0.3f); } Добавлено (12 мая 2016, 09:30) --------------------------------------------- Виснуть может, если дочерний объект висит у объекта с этим скриптом, тогда при смещении всё равно срабатывает проверка.
|
|
| |
Sanprabhu | Дата: Четверг, 12 Мая 2016, 12:59 | Сообщение # 7854 |
частый гость
Сейчас нет на сайте
| Цитата Lertmind ( ) Виснуть может, если дочерний объект висит у объекта с этим скриптом Да, так и есть, спасибо, исправил))
|
|
| |
manonedge | Дата: Пятница, 13 Мая 2016, 10:53 | Сообщение # 7855 |
почетный гость
Сейчас нет на сайте
| Не надо делать такие потенциально опасные места, как бесконечные циклы. Зачем вообще по немного проверять высоту?
|
|
| |
beril | Дата: Пятница, 13 Мая 2016, 12:58 | Сообщение # 7856 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата Sanprabhu ( ) Причем виснет только если использовать функции в цикле. Если написать простой цикл без функций, будет работать. Ну как написали не стоит использовать бесконечный цикл вот так как у тебя, если нужен бесконечный цикл используй Coroutines
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
Sanprabhu | Дата: Пятница, 13 Мая 2016, 13:38 | Сообщение # 7857 |
частый гость
Сейчас нет на сайте
| Цитата manonedge ( ) Зачем вообще по немного проверять высоту? Объект должен стать на свободное место вверху, нужно проверять не занято ли оно, если да, то проверять соседнее и т.д.
Цитата beril ( ) если нужен бесконечный цикл используй Coroutines Я с Coroutines много не работал. А как конкретно этот код можно написать с Coroutines?
|
|
| |
beril | Дата: Пятница, 13 Мая 2016, 20:15 | Сообщение # 7858 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата Sanprabhu ( ) Я с Coroutines много не работал. А как конкретно этот код можно написать с Coroutines?
Код IEnumerator InfinityLoop(){ while(){ yield return null; \\или можно yield return new WaitForSeconds если задержка нужна } }
Кстати метод Start тоже можно сделать IEnumerator
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
Lertmind | Дата: Пятница, 13 Мая 2016, 21:03 | Сообщение # 7859 |
заслуженный участник
Сейчас нет на сайте
| beril, в данном случае, ему надо в одном кадре проверить, а не размазывать по кадрам. Если говорить про циклы, бывает, что циклы ограничивают количеством итераций, но только при определённых условиях. Полагаю, у него можно было обойтись структурой данных, типа двумерного массива, тогда придётся написать дополнительный код с синхронизацией и т. п., но зато проверять будет проще и быстрее.
|
|
| |
beril | Дата: Пятница, 13 Мая 2016, 21:17 | Сообщение # 7860 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Цитата Lertmind ( ) beril, в данном случае, ему надо в одном кадре проверить, а не размазывать по кадрам. ну тогда пусть WaitForEndOfFrame использует Почему Update не подходит? Я наверно не до конца понимаю, что автор хочет сделать
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |