コード例 #1
0
ファイル: FollowRot.cs プロジェクト: zuojiashun/CsharpCode
        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;
            }
        }
コード例 #2
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);
        }