Я, хотя и работаю с Blender'ом, но mecanim в Unity начал осваивать с этих уроков от Валерия Беляева Уроки по Меканим от Валерия Беляева. Тут тебе и экспорт из Max'а, и настройка персонажа, аватара, анимации и машина состояний/state machine... Ссылку на которые в свое время давал Beril Плюс экспериментировал с указанным выше пакетом. Возможно, мои советы не идеальны, но советую посмотреть туторы, приведенные выше, покопаться в них и в кишках указанного выше пакета от Mixamo. http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Тыкаем ЛКМ на анимации в Ассетах, справа внизу (у меня ткаой лейаут) в окне анимации нажимаем серую кнопку play с черным треугольником. Анимация проигрывается? На примере: Заходим https://www.assetstore.unity3d.com/en/#!/content/5328 качаем, открываем проект. В папке Animations (1) раскрываем Jump, т.е. тыкаем на кружок со стрелкой в правой части картинки с персонажем (2). В вывалившемся списке выбираем анимацию Jump (3) с серо-синей иконкой с черной стрелочкой в белок круге. Справа внизу в inspector'е нажимаем описанную выше серую кнопку play (4) с черным треугольником. Анимация проигрывается. Вместо нажатия на серую кнопку play с черным треугольником можно перемещаться по кадрам анимации при помощи красной полоски (5), расположенной справа от серой кнопки play.
также можешь попробовать вставить свою анимацию в указанный выше пакет от Mixamo.
Под спойлером картинки, на которых показаны ключевые моменты (1-5), упомянутые в тексте выше.
Выбираем анимацию в Unity Выбираем анимацию в Unity Проигрываем анимацию в Unity Проигрываем анимацию в Unity
Так вот, в первом случае модель передвигается в любом направлении, но без анимации. Во втором случае модель вообще не двигается, а только вращается вокруг своей оси и анимацию тоже не воспроизводит.
Без самой модели все превращается в гадание на пирожках...
Добавлено (01 июля 2015, 15:52) --------------------------------------------- Без контроллера анимация проигрывается? Контроллер стандартный (какой) или само пи сны и?
Может в самом блендере нужно задавать скейлинг применяемого материала?
В самом Блендере нужно сделать uv-развертку :-) http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
1. Создал модель в blender, есть ли возможность затекстурить его в самой Unity? Если да, то каким образом сие действие провернуть? Только желательно в blender'е "разбить" модель по зонам, на которые будут накладываться текстуры. Может кто поделится мануалом, буду очень признателен.
1. Создаешь в блендере модель из отдельных мешей (объектов), т.е. кагда каждый меш, который будет текстуироваться отдельно может быть отредактировано отдельно. если в блендере нажмешь таб, то должен увидеть вершины только того меша, который будет текстурироваться отдельно. Назначено каждому такому мешу свой материал и экспортируешь в юнити. Каждый материал сможет иметь свою текстуру. 2. Меш один (сам он может состоять из нескольких подмешей), т.е. когда выбираешь меш, то видны все вершины этого меша.выбираешь меш в режиме объекта, назначаешь основной материал. Выбираешь в режиме редактирования вершины, которым будет назначен материал 1, назначаешь им подматериал - чуть по-другому, чем назначение основного материала. Выбираешь другие вершины - назначено свой подматериал. Также можно несколько материалов или подматеиалов объединить в один мультиматериал, используя атлас текстур в блендере или самой юнити. Атлас может быть создан так, чтобы, например, в случае с 4-мя материалами левый верхний угол - текстура кожи сапог, правый верхний - текстура одежды и т.д. Изменяя части атласа можно менять цвет кожи сапог и т.д.
Или вопрос был про раскрашивание текстур на-лету в процессе игры? http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Вот так и сделал, все заработало! Спасибо преогромнейшее
Про это замечание от Пиксиглаза ( :-). ) не забудь
Цитатаpixeye ()
Destroy (this.gameObject);
И ставь после операций над объектом, хотя объект и удаляется реально не сразу, а в конце отработки метода Update, а то потом багов нахватаешься. http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Знамени на public GameObject thePlayer;//перетащи сюда игрока, на котором висит PlayerKeys, со сцены в инспекторе В void Start(){ PlayerKeys playerScript = thePlayer.GetComponent<PlayerKeys>(); } В Update() { .... playerScript.cubeKey=true; } http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
вариант: использовать OnCollisionEnter(), из другой области, конечно, но... http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
4. Не могу настроить физику импортированных зданий из Блендера.
Не понятно. Не можете прикрутить коллайдеры? Коллайдеры не взаимодействуют друг с другом? Коллайдеры: mesh colliders или примитвные? Если mesh, то смотрите тему http://gcup.ru/forum/59-44659-1. Если примитивные, то смотрите обучалки. Объекты в Blendere составные или единым мешем созданы? Что именно не получается? Мало данных. http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
полагаю, тут нужен велосипед, поскольку, в рекомендациях сказано: "With careful positioning and sizing, compound colliders can often approximate the shape of an object quite well while keeping a low processor overhead. Further flexibility can be gained by having additional colliders on child objects (eg, boxes can be rotated relative to the local axes of the parent object). However, you should be sure that there is only one Rigidbody and this should be placed on the root object in the hierarchy.
Однако существуют случаи, где даже составные коллайдеры недостаточно точны. В 3D вы можете использовать Mesh Colliders, чтобы создать коллайдер, идентичный по форме мешу объекта. В 2D Polygon Collider 2D сгенерирует форму примерно совпадающую с графикой спрайта. Не идеально, но вы можете изменить его форму до любого уровня детализации. Эти коллайдеры нагружают процессор сильнее, чем примитивные коллайдеры, так что используйте их экономно, чтобы сохранить высокую производительность. Также Mesh Collider не сможет сталкиваться с другими Mesh Collider (другими словами, при их контакте ничего не произойдёт). В некоторых случаях вы можете обойти это пометив Mesh Collider в инспекторе как Convex (выпуклый). Это создаст коллайдер формы “выпуклой оболочки”, который такой же, как и оригинальный меш, но с “заполненными” углублениями. Польза от этого в том, что выпуклый Mesh Collider может сталкиваться с другими Mesh Collider, так что вы сможете использовать эту функцию, когда у вас есть двигающийся персонаж с подходящей формой. Тем не менее хорошим общим правилом будет использование Mesh Collider для геометрии сцены, и имитировать приближённую к реальности форму для двигающихся объектов с помощью примитивных коллайдеров." т.е. на персов - составные коллайдеры или convex, на элементы сцены mesh colliders http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Возможно, стоит использовать меш коллайдер из специально созданной для этого лоу-поли модели? Т.е. берем модель в 4-5к поликов, делаем для нее несколько LOD'ов (как это обычно делается) и самый лоупольный LOD (в 256 вершин) используем в качестве меш-коллайдера с convex'ом. не вижу проблемы в
ЦитатаDat_Spy ()
Использовать convax не вариант, так как запорет все важные части.
, точнее не понимаю. Не нравится самый низкополигональный LOD? Создайте еще одну лоу-поли модель, сделав акцент на выступающих "письках". http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Как проверить столкновение дочернего объекта,если скрипт висит на родительском?
кхе, кхе. полагаю, ты не оттуда заходишь ты все про тот же тестовый проэкт? Не получается проверить столкновения, поскольку коллайдеры принадлежат регдоллу? Тогда, думаю, так... 1. посмотри, ведь в скрипте есть сбор всех дочерних ригидбади "Rigidbody[] rigidBodies=GetComponentsInChildren<Rigidbody>();"
Код
void Start () {
//Get all the rigid bodies that belong to the ragdoll Rigidbody[] rigidBodies=GetComponentsInChildren<Rigidbody>();
//Add the RagdollPartScript to all the gameobjects that also have the a rigid body foreach (Rigidbody body in rigidBodies) { RagdollPartScript rps=body.gameObject.AddComponent<RagdollPartScript>();
//Set the scripts mainScript reference so that it can access //the score and scoreTextTemplate member variables above rps.mainScript=this; } }
Вот эта строчка добавляет определенный скрипт каждому ригидбади RagdollPartScript rps=body.gameObject.AddComponent<RagdollPartScript>();
Создай скрипт для столкновений с void OnCollisionEnter (Collision col){...}только пол исключи назначь его также, как и выше каждому ригидбади и будет тебе счастье p.s. в оригинальном тестовом проекте добавляется скрипт RagdollPartScript.cs (см. выше), но для его запуска должны быть выполнены определенные условия, ты также можешь задать кучу условий в {...} после void OnCollisionEnter (Collision col)
2. Или же: Коллайдер также является компонентом Собери все дочерние коллайдеры Collider[] collIders=GetComponentsInChildren<Collider>(); далее можно в скрипте StairDismount посредством цикла foreach пробегать все коллайдеры из созданного массива collIders в Update и вызывать функцию/метод проверки столкновений, наверное... http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
скрипт, который повесишь на объект, который будет сталкиваться с твоим Warrior
Код
using UnityEngine; using System.Collections;
public class rew : MonoBehaviour { public GameObject warriorObj; StairDismount ragScript; // Use this for initialization void Start () { warriorObj = GameObject.Find("Warrior"); ragScript = warriorObj.GetComponent<StairDismount>(); } void OnCollisionEnter (Collision col) { if (col.gameObject.name == "Hips") { ragScript.impactTarget = col.rigidbody; ragScript.colli = true; ragScript.impact = GetComponent<Rigidbody>().velocity; }
} // Update is called once per frame void Update () {
} }
в свой скрипт StairDismount добавляешь public bool colli = false; а также переменные Rigidbody impactTarget=null; Vector3 impact; делаешь публичными, т.е. вот так
public Rigidbody impactTarget=null; public Vector3 impact;
в Update добавляешь
Код
if (colli) { RagdollHelper helper=GetComponent<RagdollHelper>(); helper.ragdolled=true; impactEndTime=Time.time+0.25f; }
когда захочешь ответить на это сообщение, то сразу слева над окном ввода сообщения есть надпись "Файлообменники" (сразу под буквами "b, i, u"), таки отлично подойдет для подобных нужд. http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Neto Zis, что-то мне это напоминает тему от 13 августа 2014 года про труевую гравитацию, не? http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Если не физика, то прекращай перемещать персонажей, например, по условию, if(!stop){move}else ... в скрипте каждого :-) И/или останавливай анимацию http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer