Пример #1
0
        public void SyncTo(IGameComponent characterBoneComponent)
        {
            var value = characterBoneComponent as CharacterBoneComponent;

            if (null == value)
            {
                return;
            }
            value.PitchHeadAngle        = FollowRotHelper.PitchHeadAngle();
            value.RotHeadAngle          = FollowRotHelper.YawHeadAngle();
            value.CurrentPitchHandAngle = _currentHandPitch;
        }
Пример #2
0
 private void CalcWeaponRotAngle(Transform rightClavicle)
 {
     if (FollowRotHelper.CanRotWeapon() && Physics.Raycast(rightClavicle.position, _characterP3.transform.forward,
                                                           ClavicleWeaponDistance, UnityLayers.SceneCollidableLayerMask))
     {
         _weaponPitchPercent = -1;
     }
     else
     {
         _weaponPitchPercent = 0;
     }
 }
Пример #3
0
        public void SyncTo(IGameComponent characterBoneComponent)
        {
            var value = characterBoneComponent as CharacterBoneComponent;

            if (null == value)
            {
                return;
            }
            value.PitchHeadAngle = FollowRotHelper.PitchHeadAngle();
            value.RotHeadAngle   = FollowRotHelper.YawHeadAngle();
            value.HeadRotProcess = FollowRotHelper.HeadRotProcess();
            value.PitchHandAngle = FollowRotHelper.PitchHandAngle();
            value.IsHeadRotCW    = FollowRotHelper.IsHeadRotCw();
        }
Пример #4
0
        public void SyncTo(ICharacterBoneState state)
        {
            //state.NeckP3Pitch = FollowPitch(FollowRotHelper.PitchHeadAngle(), _neckP3);
            //state.HeadP3Pitch = FollowPitch(FollowRotHelper.PitchHeadAngle(), _headP3);
            //var yaw = SlerpHeadRot(FollowRotHelper.HeadRotProcess(), FollowRotHelper.YawHeadAngle(), FollowRotHelper.IsHeadRotCW());
            //state.NeckP3Yaw = FollowYaw(yaw, _neckP3);
            //state.HeadP3Yaw = FollowYaw(yaw, _headP3);

            state.PitchHeadAngle = FollowRotHelper.PitchHeadAngle();
            state.RotHeadAngle   = FollowRotHelper.YawHeadAngle();
            state.HeadRotProcess = FollowRotHelper.HeadRotProcess();
            state.PitchHandAngle = FollowRotHelper.PitchHandAngle();
            state.IsHeadRotCW    = FollowRotHelper.IsHeadRotCw();
        }
Пример #5
0
        public void PreUpdate(FollowRotParam param, ICharacterBone characterBone)
        {
            //人物正向和载具正向相差180度
            var curAngle    = param.CameraFreeYaw;
            var needReverse = FollowRotHelper.NeedReverse();

            if (needReverse)
            {
                curAngle = curAngle + (curAngle > 0 ? -180 : 180);
            }

            if (curAngle * characterBone.LastHeadRotAngle < _horizontalHeadRotMax * _horizontalHeadRotMin
                ) //头部水平旋转角穿过+-180度(暂定最大旋转角度为+-60)
            {
                characterBone.LastHeadRotSlerpTime = param.ClientTime;
                characterBone.IsHeadRotCW          = curAngle > 0;
//                    needReverse
//                    ? curAngle < 0
//                    : curAngle > 0;
            }

            if (FollowRotHelper.ForbidRot())
            {
                characterBone.ForbidRot = true;
            }
            else if (param.CameraFreeNowMode != (byte)ECameraFreeMode.On &&
                     param.CameraEulerAngle == Vector3.zero)
            {
                characterBone.ForbidRot = false;
            }

            if (characterBone.ForbidRot)
            {
                characterBone.LastHeadRotAngle = 0;
            }
            else
            {
                characterBone.LastHeadRotAngle = curAngle;
            }
        }
Пример #6
0
        public void PreUpdate(FollowRotParam param, ICharacterBone characterBone, float deltaTime)
        {
            //人物正向和载具正向相差180度
            var curAngle    = param.CameraFreeYaw;
            var needReverse = FollowRotHelper.NeedReverse();

            if (needReverse)
            {
                curAngle = curAngle + (curAngle > 0 ? -180 : 180);
            }

            if (curAngle > NoHeadRotStart)
            {
                curAngle = 0;
            }
            if (curAngle < -NoHeadRotStart)
            {
                curAngle = 0;
            }

            if (FollowRotHelper.ForbidRot())
            {
                characterBone.ForbidRot = true;
            }
            else
            {
                characterBone.ForbidRot = false;
            }

            var aimAngle = characterBone.ForbidRot ? 0 : curAngle;

            characterBone.LastHeadRotAngle =
                CalcuStepRotAngle(aimAngle,
                                  characterBone.LastHeadRotAngle, deltaTime);

            CalcCurrentHandPitch(FollowRotHelper.PitchHandAngle(), deltaTime);
        }