Войти
UnityФорумОбщее

Смена доспехов на персонаже

#0
23:11, 3 янв. 2021

Всем привет. Возник вопрос: Как сделать смену доспехов на персонаже? Те, что отличаются только визуально, как вариации одежды, например, можно свапом материала организовать. А те, что отличаются в том числе мешем?

Пока я вижу только один путь: Заскинить все возможные варианты доспехов на персонажа в 3D-редакторе, после чего в Unity включать только нужный комплект доспехов.

Знает ли кто возможно более лучший пайплайн?


#1
(Правка: 1:04) 1:03, 4 янв. 2021

скин в рантайме

            Transform transform = smr.transform;
            transform.SetParentAndSetZeroPositionAndRotation(toTransform);
            string rootBoneName = smr.rootBone.name;

            Transform[] myBones = new Transform[smr.bones.Length];
            for (int i = 0; i < myBones.Length; i++)
            {
                if (smr.bones[i] != null)
                {
                    string boneName = smr.bones[i].name;
                    if (viewSkin.TryGetBone(boneName, out Transform bone))
                    {
                        myBones[i] = bone;
                    }
                }
            }

            smr.bones = myBones;
            if (viewSkin.TryGetBone(rootBoneName, out Transform rootBone))
            {
                smr.rootBone = rootBone;
            }

#2
11:36, 4 янв. 2021

Derek
Так, не очень понял. Мы предварительно скиним на скелет в редакторе доспех, потом инстансим его и привязываем в цикле на кости персонажа, верно?

#3
14:24, 4 янв. 2021

Да верно.
"Пока я вижу только один путь: Заскинить все возможные варианты доспехов на персонажа в 3D-редакторе, после чего в Unity включать только нужный комплект доспехов"
-- вместо этого инстансишь чистый скелет и на него одеваешь скинмеши.

#4
23:09, 4 янв. 2021

Спасибо! Думаю, это будет лучше, чем хранить на персонажах кучу неактивных gameobject'ов с доспехами.

#5
17:07, 5 янв. 2021

Increaser
да не факт что лучше, пробовал и так и сяк. Скин в рантайме может фпс просадить и заскиниться криво, тогда как неактивные скинмеши никому не мешают, пока не активны)

UnityФорумОбщее