public void WeaponRotUpdate(CodeRigBoneParam param, float deltaTime) { CalcWeaponRotAngle(_rightClavicleP3); CalcCurrentWeaponRotAngle(deltaTime); _isWeaponRotState = _currentWeaponPitchPercent >= -1 && _currentWeaponPitchPercent < 0; }
// 旋转枪械,防穿模 private void RotateWeapon(CodeRigBoneParam param) { Clear(); if (!param.IsEmptyHand) { if (param.IsProne) { RotateWeaponHelperByProne(param.MuzzleLocationP3, _rightHandP3); } else { if (null != param.MuzzleLocationP3 && null != _rightHandP3) { // 计算经过手臂旋转后的枪口位置 Vector3 muzzleLocationP3 = RotateRound(param.MuzzleLocationP3, _rightClavicleP3.position, _characterP3.transform.right, param.HandPitch); RotateWeaponHelper(muzzleLocationP3, _rightHandP3, param.HandPitch); } if (null != param.MuzzleLocationP1 && null != _rightHandP1) { // 计算经过手臂旋转后的枪口位置 Vector3 muzzleLocationP1 = RotateRound(param.MuzzleLocationP1, _rightClavicleP1.position, _characterP1.transform.right, param.HandPitch); RotateWeaponHelper(muzzleLocationP1, _rightHandP1, param.HandPitch); } } } }
private bool UpdateSightData(ref CodeRigBoneParam param) { var isEmptyInHand = _weaponController.IsEmptyHand(); var weaponIdInHand = _weaponController.GetWeaponIdInHand(); var realWeaponIdInHand = weaponIdInHand; // 当前枪瞄准镜ID var scopeIdInCurrentWeapon = _weaponController.GetCurrentScopeId(); var needIk = false; if (!isEmptyInHand) { param.SightOffset = SingletonManager.Get <WeaponAvatarConfigManager>().GetSightDistance(weaponIdInHand); needIk = _attachmentNeedIK || SingletonManager.Get <WeaponAvatarConfigManager>().GetLeftHandIK(weaponIdInHand); var avatarConfig = SingletonManager.Get <WeaponAvatarConfigManager>().GetConfigById(weaponIdInHand); if (null != avatarConfig) { //当前武器为皮肤武器 if (avatarConfig.ApplyWeaponsId > 0 && avatarConfig.ApplyWeaponsId != weaponIdInHand) { realWeaponIdInHand = avatarConfig.ApplyWeaponsId; } } /** * 后面改为分辨率模糊匹配 */ // 一人称人物腰位置射偏移 param.FirstPersonPositionOffset = SingletonManager.Get <FirstPersonOffsetConfigManager>() .GetFirstPersonOffsetByScreenRatio(realWeaponIdInHand, Screen.width / (float)Screen.height); // 一人称腰射旋转偏移 param.FirstPersonRotationOffset = SingletonManager.Get <FirstPersonOffsetConfigManager>() .GetFirstPersonRotationOffsetByScreenRatio(realWeaponIdInHand, Screen.width / (float)Screen.height); // 一人称人物肩射位置偏移 param.FirstPersonSightOffset = SingletonManager.Get <FirstPersonOffsetConfigManager>() .GetSightOffsetByScreenRatio(realWeaponIdInHand, Screen.width / (float)Screen.height); if (scopeIdInCurrentWeapon > 0) { // 瞄准镜距人眼距离 param.ScopeOffset = SingletonManager.Get <WeaponPartsConfigManager>() .GetScopeOffset(scopeIdInCurrentWeapon); if (param.IsSight) { //瞄准镜缩放 param.ScopeScale = SingletonManager.Get <WeaponPartsConfigManager>() .GetSightModelScale(scopeIdInCurrentWeapon); } } else if (param.IsSight) { param.ScopeScale = SingletonManager.Get <WeaponConfigManager>().GetAimModelScale(weaponIdInHand); } } return(needIk); }
public void Update(CodeRigBoneParam param) { param.PeekAmplitude = PeekDegree; param.SightProgress = _sightProgress; param.FastMoveHorizontalShift = _fastMoveHorizontalShift; param.FastMoveVerticalShift = _fastMoveVerticalShift; param.SightMoveHorizontalShift = _sightMoveHorizontalShift; param.SightMoveVerticalShift = _sightMoveVerticalShift; param.IsFirstPerson = IsFirstPerson; var needIk = UpdateSightData(ref param); // 有动作状态控制是否需要开启IK param.IKActive = IsIKActive || param.IKActive && needIk; param.IsEmptyHand = _weaponController.IsEmptyHand(); if (param.IsEmptyHand) { if (!IsFirstPerson) { //第三人称空手取消pitch param.PitchAmplitude = 0; } // 空手状态没有随动效果 param.FastMoveHorizontalShift = 0; param.FastMoveVerticalShift = 0; _attachmentNeedIK = false; } param.SightModelOffset = YawPitchUtility.Normalize(_characterRoot.transform.rotation).x; _boneRigging.Update(param); _followRot.Update(param); UpdateIk(); }
public void Update(CodeRigBoneParam param) { FollowRotFunc(param.HeadPitch, param.HeadYaw, param.HandPitch, param.HeadRotProcess, param.IsHeadRotCW, param.IsServer); }
private void UpdateBones(PlayerEntity player) { var orientation = player.orientation; var networkAnimator = player.networkAnimator; var characterBoneInterface = player.characterBoneInterface; var thirdPersonAppearance = player.thirdPersonAppearance; var characterBone = player.characterBone; var characterControllerInterface = player.characterControllerInterface; characterBoneInterface.CharacterBone.Peek(thirdPersonAppearance.PeekDegree); try { _subCharacterBoneUpdateInfo.BeginProfileOnlyEnableProfile(); var param = new CodeRigBoneParam { PitchAmplitude = orientation.Pitch, OverlayAnimationWeight = networkAnimator.AnimatorLayers[NetworkAnimatorLayer.PlayerUpperBodyOverlayLayer].Weight, PostureWhenOverlay = thirdPersonAppearance.Posture, // 预测时,IK不生效 IKActive = PlayerEntityUtility.ActiveIK(thirdPersonAppearance.Action, thirdPersonAppearance.Posture, thirdPersonAppearance.NextPosture, thirdPersonAppearance.Movement), HeadPitch = characterBone.PitchHeadAngle, HeadYaw = characterBone.RotHeadAngle, CurrentHandPitch = characterBone.CurrentPitchHandAngle, WeaponRot = characterBone.WeaponRot, FirstPersonPositionOffset = characterBone.FirstPersonPositionOffset, FirstPersonRotationOffset = characterBone.FirstPersonRotationOffset, FirstPersonSightOffset = characterBone.FirstPersonSightOffset }; // code controlled pose characterBoneInterface.CharacterBone.WeaponRotPlayback(param); characterBoneInterface.CharacterBone.Update(param); } finally { _subCharacterBoneUpdateInfo.EndProfileOnlyEnableProfile(); } try { _subCharacterControllerUpdateInfo.BeginProfileOnlyEnableProfile(); player.characterContoller.Value.SetCurrentControllerType(ThirdPersonPostureTool.ConvertToPostureInConfig(thirdPersonAppearance.Posture)); // 更新包围盒 if (thirdPersonAppearance.NeedUpdateController) { characterControllerInterface.CharacterController.SetCharacterControllerHeight(thirdPersonAppearance.CharacterHeight, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController, thirdPersonAppearance.CharacterStandHeight); characterControllerInterface.CharacterController.SetCharacterControllerCenter(thirdPersonAppearance.CharacterCenter, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController); characterControllerInterface.CharacterController.SetCharacterControllerRadius(thirdPersonAppearance.CharacterRadius, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController); } } finally { _subCharacterControllerUpdateInfo.EndProfileOnlyEnableProfile(); } }
private void BoneUpdate(PlayerEntity player) { var appearanceP1 = player.appearanceInterface.FirstPersonAppearance; var characterBone = player.characterBoneInterface.CharacterBone; _fsmOutputs.ResetOutput(); characterBone.Execute(_fsmOutputs.AddOutput); _fsmOutputs.SetOutput(player); if (!SharedConfig.IsServer) { FollowRotHelper.Player = player; var rotParam = new FollowRotParam { CameraFreeYaw = player.cameraStateNew.FreeYaw, CameraFreeNowMode = player.cameraStateNew.FreeNowMode, CameraEulerAngle = player.cameraFinalOutputNew.EulerAngle, ClientTime = player.time.ClientTime }; characterBone.PreUpdate(rotParam, player.characterBoneInterface.CharacterBone); characterBone.SyncTo(player.characterBone); } var animator = player.thirdPersonAnimator.UnityAnimator; var state = player.stateInterface.State; var postureType = ThirdPersonAppearanceUtils.GetPosture(state); var action = player.stateInterface.State.GetActionState(); var keepAction = player.stateInterface.State.GetActionKeepState(); var posture = player.stateInterface.State.GetCurrentPostureState(); CodeRigBoneParam param = new CodeRigBoneParam { PitchAmplitude = player.orientation.Pitch - player.orientation.WeaponPunchPitch * 2, OverlayAnimationWeight = animator.GetLayerWeight(NetworkAnimatorLayer.PlayerUpperBodyOverlayLayer), PostureWhenOverlay = postureType, IsSight = state.GetActionKeepState() == ActionKeepInConfig.Sight || state.GetNextActionKeepState() == ActionKeepInConfig.Sight, SightHorizontalShift = appearanceP1.SightShift.Buff * player.firstPersonAppearance.SightHorizontalShift, SightVerticalShift = appearanceP1.SightShift.Buff * player.firstPersonAppearance.SightVerticalShift, SightShiftBuff = player.oxygenEnergyInterface.Oxygen.SightShiftBuff, IKActive = IKFilter.FilterPlayerIK(action, keepAction, posture), HeadPitch = player.characterBone.PitchHeadAngle, HeadYaw = player.characterBone.RotHeadAngle, HandPitch = player.characterBone.PitchHandAngle, HeadRotProcess = player.characterBone.HeadRotProcess, IsHeadRotCW = player.characterBone.IsHeadRotCW, WeaponPitch = player.characterBone.WeaponPitch, IsServer = SharedConfig.IsServer }; characterBone.Update(param); if (!SharedConfig.IsServer) { characterBone.WeaponRotUpdate(param); } }
public void Update(CodeRigBoneParam param) { try { _mainInfo.BeginProfileOnlyEnableProfile(); FollowRotFunc(param.HeadPitch, param.HeadYaw, param.CurrentHandPitch, param.IsServer); } finally { _mainInfo.EndProfileOnlyEnableProfile(); } }
// 旋转枪械,防穿模 private void RotateWeapon(CodeRigBoneParam param) { if (!param.IsEmptyHand) { if (null != param.MuzzleLocationP3 && null != _rightHandP3) { // 计算经过手臂旋转后的枪口位置 Vector3 muzzleP3 = RotateRound(param.MuzzleLocationP3, _rightClavicleP3.position, _characterP3.transform.right, param.HandPitch); RotateWeaponHelper(muzzleP3, _rightHandP3, param.HandPitch, param.WeaponPitch); return; } _weaponPitchPercent = 0; } _weaponPitchPercent = 0; }
public static void UpdateTransform(PlayerEntity player, NetworkAnimatorComponent networkAnimator, PredictedAppearanceComponent appearance, Orientation orientation) { if (!player.hasAppearanceInterface) { return; } //Logger.InfoFormat("replay pose, networkAnimatior:BaseClientTime{0}, server Time:{1}", networkAnimator.BaseClientTime, networkAnimator.BaseServerTime); // Animation PoseReplayer.ReplayPose(networkAnimator.AnimatorLayers, networkAnimator.AnimatorParameters, player.thirdPersonAnimator.UnityAnimator); // equipment(pan) player.appearanceInterface.Appearance.SyncFrom(player.latestAppearance); player.appearanceInterface.Appearance.SyncFrom(appearance); player.appearanceInterface.Appearance.TryRewind(); player.characterBoneInterface.CharacterBone.Peek(player.thirdPersonAppearance.PeekDegree); CodeRigBoneParam param = new CodeRigBoneParam { PitchAmplitude = orientation.Pitch, OverlayAnimationWeight = networkAnimator.AnimatorLayers[NetworkAnimatorLayer.PlayerUpperBodyOverlayLayer].Weight, PostureWhenOverlay = player.thirdPersonAppearance.Posture, // 预测时,IK不生效 IKActive = ActiveIK(player.thirdPersonAppearance.Action, player.thirdPersonAppearance.Posture), HeadPitch = player.characterBone.PitchHeadAngle, HeadYaw = player.characterBone.RotHeadAngle, HandPitch = player.characterBone.PitchHandAngle, HeadRotProcess = player.characterBone.HeadRotProcess, IsHeadRotCW = player.characterBone.IsHeadRotCW }; // code controlled pose player.characterBoneInterface.CharacterBone.Update(param); // 更新包围盒 if (player.thirdPersonAppearance.NeedUpdateController) { player.characterControllerInterface.CharacterController.SetCharacterControllerHeight(player.thirdPersonAppearance.CharacterHeight); player.characterControllerInterface.CharacterController.SetCharacterControllerCenter(player.thirdPersonAppearance.CharacterCenter); player.characterControllerInterface.CharacterController.SetCharacterControllerRadius(player.thirdPersonAppearance.CharacterRadius); } player.characterContoller.Value.SetCurrentControllerType(ThirdPersonPostureTool.ConvertToPostureInConfig(player.thirdPersonAppearance.Posture)); }
private void RotateWeaponPlayback(CodeRigBoneParam param) { if (!param.IsEmptyHand) { if (null != param.MuzzleLocationP3 && null != _rightHandP3) { _rightHandP3.rotation = Quaternion.AngleAxis(param.WeaponRot, _characterP3.transform.right) * _rightHandP3.rotation; } if (null != param.MuzzleLocationP1 && null != _rightHandP1) { _rightHandP1.rotation = Quaternion.AngleAxis(param.WeaponRot, _characterP3.transform.right) * _rightHandP1.rotation; } } }
public void WeaponRotUpdate(CodeRigBoneParam param) { if (!param.IsEmptyHand) { // 获取一,三人称枪口位置 var muzzleTransform = GetLocation(SpecialLocation.MuzzleEffectPosition, CharacterView.ThirdPerson); if (muzzleTransform) { param.MuzzleLocationP3 = muzzleTransform.position; } else { param.IsEmptyHand = true; } } _weaponRot.WeaponRotUpdate(param); }
private bool UpdateSightData(ref CodeRigBoneParam param) { var isEmptyInHand = _weaponController.IsEmptyHand(); var weaponIdInHand = _weaponController.GetWeaponIdInHand(); // 当前枪瞄准镜ID var scopeIdInCurrentWeapon = _weaponController.GetCurrentScopeId(); var needIk = false; if (!isEmptyInHand) { needIk = _weaponHasIK; if (_characterP1 == null) { return(needIk); } param.SightOffset = SingletonManager.Get <WeaponAvatarConfigManager>().GetSightDistance(weaponIdInHand); if (scopeIdInCurrentWeapon > 0) { // 瞄准镜距人眼距离 param.ScopeOffset = SingletonManager.Get <WeaponPartsConfigManager>() .GetScopeOffset(scopeIdInCurrentWeapon); if (param.IsSight) { //瞄准镜缩放 param.ScopeScale = SingletonManager.Get <WeaponPartsConfigManager>() .GetSightModelScale(scopeIdInCurrentWeapon); } } else if (param.IsSight) { param.ScopeScale = SingletonManager.Get <WeaponResourceConfigManager>().GetAimModelScale(weaponIdInHand); } } return(needIk); }
public void WeaponRotPlayback(CodeRigBoneParam param) { }
public void WeaponRotUpdate(CodeRigBoneParam param) { RotateWeapon(param); }
public static void UpdateTransform(PlayerEntity player, NetworkAnimatorComponent networkAnimator, PredictedAppearanceComponent appearance, OrientationComponent orientation) { if (!player.hasAppearanceInterface) { return; } // Animation Animator.ClearAnimatorJobContainer(); // 流量优化用 // if (networkAnimator.AnimatorParameters == null) // { // networkAnimator.SetAnimatorParamsWithoutChangeData( // NetworkAnimatorUtil.GetAnimatorParams(player.thirdPersonAnimator.UnityAnimator)); // networkAnimator.ConvertCompressDataToStructureData(); // } AnimatorPoseReplayer.ReplayPose(networkAnimator.AnimatorLayers, networkAnimator.AnimatorParameters, player.thirdPersonAnimator.UnityAnimator); Animator.BatchUpdate(); // equipment(pan) var appearanceInterface = player.appearanceInterface; appearanceInterface.Appearance.SyncLatestFrom(player.latestAppearance); appearanceInterface.Appearance.SyncPredictedFrom(appearance); appearanceInterface.Appearance.TryRewind(); var characterBoneInterface = player.characterBoneInterface; var thirdPersonAppearance = player.thirdPersonAppearance; var characterBone = player.characterBone; var characterControllerInterface = player.characterControllerInterface; characterBoneInterface.CharacterBone.Peek(thirdPersonAppearance.PeekDegree); var param = new CodeRigBoneParam { PitchAmplitude = orientation.Pitch, OverlayAnimationWeight = networkAnimator.AnimatorLayers[NetworkAnimatorLayer.PlayerUpperBodyOverlayLayer].Weight, PostureWhenOverlay = thirdPersonAppearance.Posture, // 预测时,IK不生效 IKActive = ActiveIK(thirdPersonAppearance.Action, thirdPersonAppearance.Posture, thirdPersonAppearance.NextPosture, thirdPersonAppearance.Movement), HeadPitch = characterBone.PitchHeadAngle, HeadYaw = characterBone.RotHeadAngle, CurrentHandPitch = characterBone.CurrentPitchHandAngle, WeaponRot = characterBone.WeaponRot, FirstPersonPositionOffset = characterBone.FirstPersonPositionOffset, FirstPersonRotationOffset = characterBone.FirstPersonRotationOffset, FirstPersonSightOffset = characterBone.FirstPersonSightOffset }; // code controlled pose characterBoneInterface.CharacterBone.WeaponRotPlayback(param); characterBoneInterface.CharacterBone.Update(param); player.characterContoller.Value.SetCurrentControllerType( ThirdPersonPostureTool.ConvertToPostureInConfig(thirdPersonAppearance.Posture)); // 更新包围盒 if (thirdPersonAppearance.NeedUpdateController) { characterControllerInterface.CharacterController.SetCharacterControllerHeight(thirdPersonAppearance .CharacterHeight, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController, thirdPersonAppearance.CharacterStandHeight); characterControllerInterface.CharacterController.SetCharacterControllerCenter(thirdPersonAppearance .CharacterCenter, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController); characterControllerInterface.CharacterController.SetCharacterControllerRadius(thirdPersonAppearance .CharacterRadius, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController); } }
public void WeaponRotPlayback(CodeRigBoneParam param) { _weaponRot.WeaponRotPlayback(param); }
private void BoneUpdate(PlayerEntity player) { var characterBone = player.characterBoneInterface.CharacterBone; _fsmOutputs.ResetOutput(); characterBone.Execute(_fsmOutputs.AddOutput); _fsmOutputs.SetOutput(player); if (!SharedConfig.IsServer) { FollowRotHelper.Player = player; var rotParam = new FollowRotParam { CameraFreeYaw = player.cameraStateNew.FreeYaw, CameraFreeNowMode = player.cameraStateNew.FreeNowMode, CameraEulerAngle = player.cameraFinalOutputNew.EulerAngle, ClientTime = player.time.ClientTime }; characterBone.PreUpdate(rotParam, player.characterBoneInterface.CharacterBone, _deltaTime); characterBone.SyncTo(player.characterBone); } var animator = player.thirdPersonAnimator.UnityAnimator; var state = player.stateInterface.State; var action = player.stateInterface.State.GetActionState(); var nextAction = player.stateInterface.State.GetNextActionState(); var keepAction = player.stateInterface.State.GetActionKeepState(); var posture = player.stateInterface.State.GetCurrentPostureState(); var nextPosture = player.stateInterface.State.GetNextPostureState(); var movement = player.stateInterface.State.GetCurrentMovementState(); var postureType = ThirdPersonAppearanceUtils.GetPosture(posture); UpdateOffsetData(player); var param = new CodeRigBoneParam { PitchAmplitude = player.orientation.Pitch - player.orientation.AccPunchPitchValue * 2, OverlayAnimationWeight = animator.GetLayerWeight(NetworkAnimatorLayer.PlayerUpperBodyOverlayLayer), PostureWhenOverlay = postureType, IsSight = state.GetActionKeepState() == ActionKeepInConfig.Sight || state.GetNextActionKeepState() == ActionKeepInConfig.Sight, IsIntoSight = state.GetNextActionKeepState() == ActionKeepInConfig.Sight, SightHorizontalShift = /*appearanceP1.SightShift.Buff * */ player.firstPersonAppearance.SightHorizontalShift, SightVerticalShift = /*appearanceP1.SightShift.Buff * */ player.firstPersonAppearance.SightVerticalShift, SightShiftBuff = player.oxygenEnergyInterface.Oxygen.SightShiftBuff, IKActive = IKFilter.FilterPlayerIk(action, nextAction, keepAction, posture, nextPosture, movement), HeadPitch = player.characterBone.PitchHeadAngle, HeadYaw = player.characterBone.RotHeadAngle, CurrentHandPitch = player.characterBone.CurrentPitchHandAngle, WeaponRot = player.characterBone.WeaponRot, IsFire = action == ActionInConfig.Fire, IsServer = SharedConfig.IsServer, FirstPersonPositionOffset = player.characterBone.FirstPersonPositionOffset, FirstPersonRotationOffset = player.characterBone.FirstPersonRotationOffset, FirstPersonSightOffset = player.characterBone.FirstPersonSightOffset }; // DebugUtil.MyLog("SightVerticalShift:"+param.SightVerticalShift + "||SightVerticalShift:"+param.SightVerticalShift); if (!SharedConfig.IsServer) { characterBone.WeaponRotUpdate(param, _deltaTime); } else { characterBone.WeaponRotPlayback(param); } characterBone.Update(param); }
public static void UpdateTransform(PlayerEntity player, NetworkAnimatorComponent networkAnimator, PredictedAppearanceComponent appearance, OrientationComponent orientation) { if (!player.hasAppearanceInterface) { return; } //Logger.InfoFormat("replay pose, networkAnimatior:BaseClientTime{0}, server Time:{1}", networkAnimator.BaseClientTime, networkAnimator.BaseServerTime); // Animation Animator.ClearAnimatorJobContainer(); PoseReplayer.ReplayPose(networkAnimator.AnimatorLayers, networkAnimator.AnimatorParameters, player.thirdPersonAnimator.UnityAnimator); Animator.BatchUpdate(); Animator.ClearAnimatorJobContainer(); // equipment(pan) var appearanceInterface = player.appearanceInterface; appearanceInterface.Appearance.SyncLatestFrom(player.latestAppearance); appearanceInterface.Appearance.SyncPredictedFrom(appearance); appearanceInterface.Appearance.TryRewind(); var characterBoneInterface = player.characterBoneInterface; var thirdPersonAppearance = player.thirdPersonAppearance; var characterBone = player.characterBone; var characterControllerInterface = player.characterControllerInterface; characterBoneInterface.CharacterBone.Peek(thirdPersonAppearance.PeekDegree); var param = new CodeRigBoneParam { PitchAmplitude = orientation.Pitch, OverlayAnimationWeight = networkAnimator.AnimatorLayers[NetworkAnimatorLayer.PlayerUpperBodyOverlayLayer].Weight, PostureWhenOverlay = thirdPersonAppearance.Posture, // 预测时,IK不生效 IKActive = ActiveIK(thirdPersonAppearance.Action, thirdPersonAppearance.Posture, thirdPersonAppearance.NextPosture, thirdPersonAppearance.Movement), HeadPitch = characterBone.PitchHeadAngle, HeadYaw = characterBone.RotHeadAngle, HandPitch = characterBone.PitchHandAngle, HeadRotProcess = characterBone.HeadRotProcess, WeaponRot = characterBone.WeaponRot, IsProne = thirdPersonAppearance.Posture == ThirdPersonPosture.Prone, IsHeadRotCW = characterBone.IsHeadRotCW, FirstPersonPositionOffset = characterBone.FirstPersonPositionOffset, FirstPersonRotationOffset = characterBone.FirstPersonRotationOffset, FirstPersonSightOffset = characterBone.FirstPersonSightOffset }; // code controlled pose characterBoneInterface.CharacterBone.WeaponRotPlayback(param); characterBoneInterface.CharacterBone.Update(param); player.characterContoller.Value.SetCurrentControllerType( ThirdPersonPostureTool.ConvertToPostureInConfig(thirdPersonAppearance.Posture)); // 更新包围盒 if (thirdPersonAppearance.NeedUpdateController) { characterControllerInterface.CharacterController.SetCharacterControllerHeight(thirdPersonAppearance .CharacterHeight, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController, thirdPersonAppearance.CharacterStandHeight); characterControllerInterface.CharacterController.SetCharacterControllerCenter(thirdPersonAppearance .CharacterCenter, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController); characterControllerInterface.CharacterController.SetCharacterControllerRadius(thirdPersonAppearance .CharacterRadius, player.characterContoller.Value.GetCurrentControllerType() == CharacterControllerType.UnityCharacterController); } }
public void WeaponRotPlayback(CodeRigBoneParam param) { RotateWeaponPlayback(param); }