/// <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); } } }
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); } } }
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); } } } }