首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在字符上进行可互换的装甲(低多模)

如何在字符上进行可互换的装甲(低多模)
EN

Stack Overflow用户
提问于 2017-05-29 15:01:37
回答 1查看 2.3K关注 0票数 0

我目前正在进行RPG的图形化工作,非常类似于Runescape (旧学校),但我有自己的游戏系统。我不知道什么是最好的方式有可互换的装甲系统。我将创建低聚模型,正如我所说的,类似于runescape模型如这里,并希望有可能有随机变化的装甲,如这里

据我所知,有两种方法,第一种是改变角色模型的网格,第二种是创建我的角色模型并使用骨骼权重来建立盔甲模型。我知道这里有关于第一个选项的整个话题(不能做第三个链接) forum.unity3d.com/threads/stitch-multiple-body-parts-into-one-character.16485/,,但真的吗?每一次关于类似事情的提问都会引出这个话题。但它就像8岁,对于团结2.0...Is,有更简单的方法来实现同样的结果,但不要学习大师的精疲力竭的解释,无论如何,我将无法实现。至于第二种方式,我找不到任何提示,除了手册和脚本的统一网站上的骨量,这是太普遍的方式,我的使用和我的技能。我花了几个小时寻找一些解决方案(教程),但谷歌一直在弹出相同的主题,这是4-8岁.

有什么建议,如何选择最好的方式更换盔甲,以及如何获得任何有关这些问题的知识?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-05-31 13:14:57

所以,我在我的项目中做的是复制我的基本字符.blend文件(钻机,模型)和我删除大部分的网格,除了身体部分,我想为(胸部/腿部)。我把它拉出来一点,这样顶点就不会与基本网格重叠,只需保存它。

然后,在团结,我创建了一个新的预制件的模型,我刚刚保存。预制件的层次结构如下所示:带有BoneReplacer.cs脚本的父游戏对象、->子游戏对象和我衣服的蒙皮网格渲染器。

然后,我要做的就是把这个预制件拖到我的角色预制件上,所以这个脚本中的目标变量指向我角色的蒙皮网格渲染器。

这可能不是最好的方法,但它对我有效,也许它会帮助你把你的头脑,并创造一些更好的解决方案。

下面是BoneReplacer.cs脚本:

代码语言:javascript
复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BoneReplacer : MonoBehaviour
{
    public GameObject target;
    SkinnedMeshRenderer myRenderer;
    Transform[] newBones;
    SkinnedMeshRenderer targetRenderer;
    Dictionary<string, Transform> boneMap = new Dictionary<string, Transform>();

    void Start()
    {
        target = transform.parent.parent.gameObject;
        targetRenderer = target.GetComponentInChildren<SkinnedMeshRenderer>();

        foreach (Transform _bone in targetRenderer.bones)
        {
            boneMap[_bone.gameObject.name] = _bone;
        }

        myRenderer = gameObject.GetComponent<SkinnedMeshRenderer>();
        newBones = new Transform[myRenderer.bones.Length];

        for (int i = 0; i < myRenderer.bones.Length; i++)
        {
            GameObject _bone = myRenderer.bones[i].gameObject;
            if (!boneMap.TryGetValue(_bone.name, out newBones[i]))
            {
                Debug.Log("Unable to map bone ~" + _bone.name + "~ to target skeleton!");
                break;
            }
        }

        myRenderer.bones = newBones;
        myRenderer.rootBone = targetRenderer.rootBone;
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44245516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档