Добрался до урока «INTEGRATION 03 — Making an RPG in Unity (E12)».
Все части интеграции были созданы довольно давно, поэтому для новых версий Unity и Blender приходится что-то изменять. В этот раз я столкнулся с тем, что скрипт Equipment.cs не принимал объект типа MeshRenderer, а только SkinnedMeshRenderer. Это было нормально, т.к. ранее мы использовали именно такие типы компонентов. Поскольку в этом уроке всё пошло не так, мне пришлось вручную отделить из объектов сцены нужные мне «Sword» и «Shield» и импортировать их в Unity. Вот тут я и остановился, т.к. далее нужно было эти модельки перетащить в слот Mesh, который принимал SkinnedMeshRenderer:
Скорее всего из Blender можно экспортировать меш именно как SkinnedMesh, но пока я не нашёл как это сделать.
Объекты должны быть анимированными. Т.е. иметь арматуру и анимационные клипы. Отдельно для меча или щита этого нет. Поэтому буду использовать костыли и извлекать нужный объект скриптом (или создавать новый из старого).
Ниже я привожу скрипт, который преобразует объект на сцене из MeshRenderer в SkinnedMeshRenderer — ConvertToSkinnedMesh.cs:
using UnityEngine;
public class ConvertToSkinnedMesh : MonoBehaviour
{
[ContextMenu("Convert to Skinned Mesh Renderer")]
void Convert()
{
Material[] meshRendererMaterials;
MeshRenderer meshRenderer = gameObject.GetComponent<MeshRenderer>();
MeshFilter meshFilter = gameObject.GetComponent<MeshFilter>();
meshRendererMaterials = meshRenderer.sharedMaterials;
SkinnedMeshRenderer skinnedMeshRenderer = gameObject.AddComponent<SkinnedMeshRenderer>();
skinnedMeshRenderer.sharedMaterials = meshRendererMaterials;
DestroyImmediate(meshRenderer);
DestroyImmediate(meshFilter);
DestroyImmediate(this);
}
}
- C#: Сравнить два массива - 12.12.2024
- EVE-Online: Фильтры каналов - 23.11.2024
- Не приходит СМС для авторизации на сайте Госуслуги - 01.11.2024