Как стать автором
Обновить

Комментарии 22

НЛО прилетело и опубликовало эту надпись здесь
Соглашусь с вами, понятная, подробная статья!
Есть два варианта.
1. Написать свой плагин, который будет вызывать native-код на Objective-C.
2. Использовать готовые плагины. Есть платные, в том числе. Поискать можно тут.
Есть специальные надстройки, стоят весьма формальных денег — поищите, прямой ссылки под рукой нет
Вместо цыпленка должен быть воробей — так иллюстрация сильнее бы гармонировала с темой поста %)
Спасибо, очень полезно. Жаль я не прочитал этого до покупки SM2 :)
Один вопрос — а какие настройки физики использовать для реалистичного поведения больших объектов? Они ведь в физическом мире получаются очень большие, метров по 200-300 в диаметре. Чтобы такой шарик релистично падал и отскакивал, нужно выставлять большую гравитацию?
Трудно ответить на этот вопрос, т.к. не пробовал физику на больших объектах. Но вообще, гравитация должна быть всегда стандартной, вне зависимости от размера объекта (если это, конечно, не игра, где гравитация может меняться), т.к. в идеале сила притяжения одинаково действует на все объекты, вне зависимости от формы и массы. Влиять будет параметр Drag — что-то вроде сопротивления среды при падении. Чем оно больше, тем объект более легкий в этом смысле.
От массы будет зависеть взаимодействие объектов. В руководстве по физике в Unity лишь сказано, что не рекомендуется делать массы двух различных объектов отличающимися более чем в 100 раз О_о.
Так вот у тебя цыплёнок размером 512 x 512. В физическом представлении это не пикселы, это метры. Допустим у меня шарик такого же размера, и мне нужно, чтобы он упал на пол. Если гравитация стандартная (9,8), то даже при нулевом Drag-е он будет падать очень медленно (ровно так, как и должен падать 500-метровый объект, отнесённый от камеры на расстояние, при котором один метр равен одному пикселу.) В этом и загвоздка, если я хочу, чтобы он упал быстро, приходится задирать гравитацию.
А зачем перед каждым типом переменной [SerializeField]? Где используется сериализация?
Когда скрипт прикрепляется к объекту, все public-переменные класса, а также private-переменные, помеченные атрибутом [SerializeField], становятся сериализуемыми параметрами скрипта. Это означает, что значения, прописанные в этом объекте на сцене или в шаблоне(prefab-файле) сохраняются. Это также означает, что если не используется CustomEditor, то эти параметры скрипта становятся видимыми в редакторе.
Ага, понятно, спасибо.
Спасибо за интересную статью!
(вы сломали unity3d.ru ;D)

пару моментиков:
1. Для более удобной работы с физикой можно брать соотношение не 1 unit = 1 pixel, а что-нибудь поменьше (например, 1 unit = 16 pixels).

2. Пиксель-в-пиксель можно сделать и для перспективной камеры (иногда это может быть полезно).

3. Transparent Diffuse это очень непроизводительный вариант. Кроме unlit в новых версиях юнити есть еще Mobile/ категория шейдеров.

4. Для оптимизации DrawCalls можно еще в 3д пакете руками (или программно в юнити) делать skinned mesh (скиннинг, как минимум на ios, очень быстрый, т.к. поддерживается на аппаратном уровне).

5. Я не очень понял совет про тип текстуры GUI (возможно стоило расписать какие Advanced настройки соответствуют этому пресету).

6. Дополнительный совет по производительности (в плане fillrate'а) — я бы обрЕзал геометрию цыпленка по контуру текстуры (чтобы минимизировать область которую занимают 100% прозрачные пиксели).

7. SpriteManager стал менее актуален с появлением dynamic batching ;).

8. Классные плагины для юнити под ios и android есть здесь prime31.com/unity/
Спасибо:)
Полностью со всем согласен)
GUI — Texture Type в версии 3.3. Если не ошибаюсь, соответствует всем отключенным параметрам в Advanced.
за ссылки отдельное спасибо!
Спасибо за труд. Если вас не затруднит немного подправить урок: было бы уместно вместо: "… Для того чтобы каждый раз не делать всего этого вручную, напишем скрипт:

using UnityEngine;
… "

Описать процесс создания файла скрпта и включить в него название файла и так же описать обьект на который мы этот скрипт вешаем

Спасибо ждем новых более подробных уроков =)
Все бы хорошо, но картинки битые, а ссылка на пример ведет на майл, который еле еле дишит…
Да, картинки исправлю, а файл на мейле весит всего 258Кб, так что все должно быть норм;)
Исправил ссылки на изображения и исходные файлы с примером.
Спасибо!
Немного поправлю вас:
Для этого размер ортогональной камеры (параметр Size) должен равняться половине высоты экрана в пикселях. Например, если это экран iPhone 3G в портретном режиме, разрешение экрана которого 320x480, то Size = h/2 = 480/2 = 240.

Это некорректно. OrthographicSize камеры должен быть равен половине высоты экрана не в пикселях, а в unit-ах (внутренней единице измерения, обычно приравниваемой к 1му метру).
Понятно, что в целом, описываемый в данной статье подход уже не применим, но этот нюанс с камерой остается актуальным, и он попортил мне довольно много крови.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации