Всем привет. Возник вопрос: Как сделать смену доспехов на персонаже? Те, что отличаются только визуально, как вариации одежды, например, можно свапом материала организовать. А те, что отличаются в том числе мешем?
Пока я вижу только один путь: Заскинить все возможные варианты доспехов на персонажа в 3D-редакторе, после чего в Unity включать только нужный комплект доспехов.
Знает ли кто возможно более лучший пайплайн?
скин в рантайме
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; }
Derek
Так, не очень понял. Мы предварительно скиним на скелет в редакторе доспех, потом инстансим его и привязываем в цикле на кости персонажа, верно?
Да верно.
"Пока я вижу только один путь: Заскинить все возможные варианты доспехов на персонажа в 3D-редакторе, после чего в Unity включать только нужный комплект доспехов"
-- вместо этого инстансишь чистый скелет и на него одеваешь скинмеши.
Спасибо! Думаю, это будет лучше, чем хранить на персонажах кучу неактивных gameobject'ов с доспехами.
Increaser
да не факт что лучше, пробовал и так и сяк. Скин в рантайме может фпс просадить и заскиниться криво, тогда как неактивные скинмеши никому не мешают, пока не активны)