Example #1
0
    /// <summary>
    /// 不包括技能添加的武器
    /// </summary>
    public void DeleteIllusionWeapons()
    {
        IllusionConfig.IllusionMode illusionMode = GetIllusionModel();
        if (illusionMode != null)
        {
            if (illusionMode.WeaponId1 != IDSeg.InvalidId)
            {
                avatar.DeleteComponent(illusionMode.WeaponId1);
            }

            if (illusionMode.WeaponId2 != IDSeg.InvalidId)
            {
                avatar.DeleteComponent(illusionMode.WeaponId2);
            }
        }
    }
Example #2
0
    public void HideWeapon(bool hide)
    {
        var avatarCfg = ConfigDatabase.DefaultCfg.AvatarConfig.GetAvatarById(avatarData.ResourceId);

        foreach (var weaponAsset in avatarCfg.weaponAssets)
        {
            avatar.SetActiveComponent(weaponAsset.avatarAssetId, !hide);
        }

        IllusionConfig.IllusionMode illusionMode = GetIllusionModel();
        if (illusionMode != null)
        {
            if (illusionMode.WeaponId1 != IDSeg.InvalidId)
            {
                avatar.SetActiveComponent(illusionMode.WeaponId1, !hide);
            }

            if (illusionMode.WeaponId2 != IDSeg.InvalidId)
            {
                avatar.SetActiveComponent(illusionMode.WeaponId2, !hide);
            }
        }
    }
Example #3
0
    public void UseIllusionWeapons()
    {
        if (!illusionOpenFlag)
        {
            return;
        }

        bool leftHand  = false;
        bool rightHand = false;

        bool illusionLeftHand  = false;
        bool illusionRightHand = false;

        //左右手适配。如果角色默认装备在左手(盖聂)而Illusion配置的bone是右手,要装备在左手,这种情况出现在
        //同时适用于盖聂和卫庄的幻化武器,但盖聂左手用剑,卫庄右手用剑。。。。。。
        var avatarCfg = ConfigDatabase.DefaultCfg.AvatarConfig.GetAvatarById(avatarData.ResourceId);

        foreach (var weaponAsset in avatarCfg.weaponAssets)
        {
            if (weaponAsset.avatarAssetId != IDSeg.InvalidId)
            {
                if (!leftHand)
                {
                    leftHand = weaponAsset.mountBone == leftHandBoneMarker;
                }

                if (!rightHand)
                {
                    rightHand = weaponAsset.mountBone == rightHandBoneMarker;
                }
            }
        }

        IllusionConfig.IllusionMode illusionMode = GetIllusionModel();
        if (illusionMode != null)
        {
            if (illusionMode.WeaponId1 != IDSeg.InvalidId && !string.IsNullOrEmpty(illusionMode.BoneName1))
            {
                illusionLeftHand = true;
            }

            if (illusionMode.WeaponId2 != IDSeg.InvalidId && !string.IsNullOrEmpty(illusionMode.BoneName2))
            {
                illusionRightHand = true;
            }

            if (!illusionLeftHand && !illusionRightHand)
            {
                return;
            }

            if (illusionLeftHand && illusionRightHand)
            {
                //如果幻化配置了双手,直接使用幻化
                avatar.UseComponent(illusionMode.WeaponId1, illusionMode.BoneName1);
                avatar.UseComponent(illusionMode.WeaponId2, illusionMode.BoneName2);
            }
            //如果幻化配置的左右手与角色默认的左右手不同,挂在默认的左右手上。
            else if (illusionLeftHand)
            {
                if (rightHand)
                {
                    avatar.UseComponent(illusionMode.WeaponId1, rightHandBoneMarker);
                }
                else
                {
                    avatar.UseComponent(illusionMode.WeaponId1, illusionMode.BoneName1);
                }
            }
            else if (illusionRightHand)
            {
                if (leftHand)
                {
                    avatar.UseComponent(illusionMode.WeaponId2, leftHandBoneMarker);
                }
                else
                {
                    avatar.UseComponent(illusionMode.WeaponId2, illusionMode.BoneName2);
                }
            }
        }
    }