Суббота, 07 Декабря 2019, 17:55

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вещи, о которых вы можете не знать. [Unity3d] (Так сказать заметки, которые стоит запомнить.)
Вещи, о которых вы можете не знать. [Unity3d]
EchoITДата: Среда, 24 Октября 2012, 20:55 | Сообщение # 1
старожил
Сейчас нет на сайте
В этой теме я хочу записывать все нюансы, которыми можно воспользоваться в разработке, но о которых не всегда знают разработчики. Вам тоже предлагаю о таких отписывать в этой теме. Сейчас неполный список(о которых знаю, и о которых помню), в будущем буду пополнять его.

Сокращения:
Particle System - PS
***
Резерв...
***

Particle System - как сделать, чтобы позиция и поворот создаваемых частиц зависела/не зависела от положения и поворота PS(в одном случае партиклы будут всегда находиться относительно PS, в другом - нет).
Этот пункт нужен, если PS или объект, к которому он запарентен, двигается - нужно, чтобы партиклы оставались там, где появились, а не занимали положение относительно PS.
Для изменения этой функции устанавливайте настройку PS - Simulation Space на Local(относительно PS) или на World(ничто не влияет на положение партиклов).
Объяснение довольно непонятное, но если у вас есть какие-то проблемы с партиклами, то попробуйте этот способ, может быть, это именно то, что вам нужно.

Коллизия между объектами работает, только если на одном из них есть Rigidbody, а вам нужно, чтобы у двух этих объектов не было никакой физики, а проверялась только коллизия. Это решаемо:
Поставьте на один объект Rigidbody и поставьте галку Is Kinematic. Затем в скрипте, который нужно повесить на один из объектов, напишите:
Code

void OnTriggerEnter(Collider collision) {
                     //Ваше действие
}

Примечание #1: работает только при условии, что объект, на котором висит скрипт, является триггером (Collider -> галка Is Trigger).
Примечание #2: один из объектов обязательно должен находиться в движении(пускай 0.1 нанометр в кадр, но это обязательно). Впрочем, это логично, т.к. объект не может попасть в триггер/коллизию другого, только если он не находится в нём при запуске уровня.
В этом методе есть некоторые ограничения(см. примечания), но тем не менее, он работает.

Ну и напоследок из того, что вспомнил, так это функции, о которых вы можете не знать:
1. Физическая связь между объектами обычно используется для создания подвижных соединений между объектами.
Вызывается при разрыве физической связи между игровыми объектами. После разрыва связи — она автоматически удаляется из игры. Получает в качестве параметра силу, вызвавшую разрыв соединения в виде числа с плавающей точкой.
Code
OnJointBreak(force:float)

2. Данная функция вызывается если объект находится в поле зрения хотя бы одной камеры. Удобно использовать для отключения не видных игроку игровых объектов в целях оптимизации. Разумеется если нет необходимости продолжать выполнение действий даже если объект скрыт.
Code
OnBecameVisible()

3. Данная функция вызывается если объект не находится в поле зрения ни одной камеры.
Code
OnBecameInvisible()

4. Данная функция вызывается при уничтожении объекта.
Code
OnDestroy()

5. Данная функция вызывается при активации (включении) объекта.
Code
OnEnable()

6. Данная функция вызывается при отключении объекта.
Code
OnDisable()

7. Данная функция позволяет отправить всем игровым объектам сигнал паузы. Принимает в качестве параметра булево значение, определяющее состояние паузы.
Code
OnApplicationPause(pause:boolean)

8. Данная функция вызывается при получении или потере фокуса игрового окна. Получает в качестве параметра булево значение, определяющее текущее состояние.
Code
OnApplicationFocus(focus:boolean)

(с хабры последний пункт)
Разумеется, основные я в этом списке не писал, т.к. рассчитываю, что каждый их знает.

Дополнение #1:
Добавили свой SkyBox, а на нём "щели"(швы)?
Поставьте для всех текстур скайбокса параметр Wrap Mode на Clamp.

Дополнение #2:
Существуют проблемы с поворотом модели? Модель объекта по функции transform.forward двигается не вперед?
Решение таких проблем очень простое:
Нужно создать пустой GameObject(Empty), сделать модель дочерней к нему, и все скрипты применять относительно этого пустого GameObject. И если модель повернута не в ту сторону, в которую должна быть повернута по вашей задумке, то просто поворачиваете саму модель(не пустой GameObject, а именно дочернюю модель) в нужную сторону, и повторяете, пока не будет выставлен правильный поворот(transform.forward - вперед, transform.up - вверх, transform.right - вправо. Если по каждому направлению модель передвигается правильно(а не вверх по transform.forward, к примеру), значит, эти махинации сработали.
Как правило, модель нужно доворачивать на 90 градусов, так что нужный поворот подбирается быстро.

Дополнение #3:
Горячие клавиши Unity3d(прислал ZeroCool)
Открыть изображение со списком горячих клавиш

P.S.: МБ это никому не нужно, но я всё-таки решил оставить тут эту информацию, и буду её дополнять.


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

Сообщение отредактировал EchoIT - Четверг, 06 Декабря 2012, 21:09
Knight1032Дата: Среда, 24 Октября 2012, 21:03 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Всёравно, спасибо.

Да, я программист, дизайнер, сценарист,
Я сам себе издатель и сам себе игрок...
EchoITДата: Пятница, 02 Ноября 2012, 16:27 | Сообщение # 3
старожил
Сейчас нет на сайте
Добавил пункт про швы между текстурами скайбокса, забыл про него сначала.

Добавлено (02.11.2012, 16:27)
---------------------------------------------
Добавил пункт про поворот модели.(Дополнение #2) Не очень понятно, но те, у кого существует такая проблема, думаю, поймут.


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

Сообщение отредактировал EchoIT - Пятница, 02 Ноября 2012, 16:27
NovatorvladДата: Пятница, 02 Ноября 2012, 16:52 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Молодца! Плюсану за старание. Продолжай в том же духе smile

Девбложек
ZeroCoolДата: Воскресенье, 11 Ноября 2012, 14:22 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Спасибо, познавательно.

KiraДата: Понедельник, 12 Ноября 2012, 17:45 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Если вы хотите начать работу, с Project Wizard(создание и выбор проекта). То при запуске зажмите и удерживайте клавишу :Alt.

Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
ZeroCoolДата: Понедельник, 12 Ноября 2012, 18:14 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Cписок горячих клавиш:


А тут в pdf формате http://rghost.ru/41523233


mrResidentДата: Понедельник, 12 Ноября 2012, 19:19 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Возьму на заметку

Укроп головного мозга - болезнь тяжелая, но излечимая!
JHawkДата: Вторник, 13 Ноября 2012, 18:18 | Сообщение # 9
めゃくちゃちゃ
Сейчас нет на сайте
Ставлю себе галочку. А не мог бы ты написать как делать свой шейдер?
EchoITДата: Четверг, 06 Декабря 2012, 21:06 | Сообщение # 10
старожил
Сейчас нет на сайте
Quote
А не мог бы ты написать как делать свой шейдер?

Возможно, но это будет отдельная статья, если напишу.

Добавил присланный ZeroCool'ом пункт про горячие клавиши (Дополнение #3). Извиняюсь, что забросил, времени не было. Теперь, возможно, буду дополнять чаще.


Долгожданный анонсик: State of War
robertonoДата: Четверг, 06 Декабря 2012, 23:35 | Сообщение # 11
Чокнутый Кот
Сейчас нет на сайте
Мм , очень даже хорошая тема. + автору, и совет, а точнее пожелание - продолжай в том же духе, многим пригодится, новичкам тем более ( мне biggrin )
ZeroCoolДата: Пятница, 03 Мая 2013, 04:42 | Сообщение # 12
почетный гость
Сейчас нет на сайте
Цитата (Kira)
Если вы хотите начать работу, с Project Wizard(создание и выбор проекта). То при запуске зажмите и удерживайте клавишу :Alt.

Или выставить в настройках что бы Project Wizard постоянно открывался cool


Fr0sTДата: Пятница, 03 Мая 2013, 14:21 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Круто очень круто!Добавил в закладки.



nikДата: Пятница, 03 Мая 2013, 17:19 | Сообщение # 14
just nik
Сейчас нет на сайте


BridgeGamingTeam

Сообщение отредактировал nik - Пятница, 03 Мая 2013, 17:20
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Вещи, о которых вы можете не знать. [Unity3d] (Так сказать заметки, которые стоит запомнить.)
  • Страница 1 из 1
  • 1
Поиск:

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