Пример #1
0
        private void FixedUpdate()
        {
            if (Target == null || Player == null)
            {
                return;
            }

            var playerPos = Player.position + PlayerOffset;
            var targetPos = Target.position + TargetOffset;

            var p2TDir     = targetPos - playerPos;
            var p2TDirFlat = new Vector3(p2TDir.x, 0, p2TDir.z).normalized;
            var p2CDir     = Trans.position - playerPos;
            var p2CDirFlat = new Vector3(p2CDir.x, 0, p2CDir.z).normalized;
            var right      = Mathf.Sign(Vector3.Cross(p2CDirFlat, p2TDirFlat).y);
            var xAxis      = Vector3.Cross(p2TDirFlat, Vector3.up * right).normalized;

            p2TDirFlat = -p2TDirFlat;
            var c2W = new Matrix4x4(
                new Vector4(xAxis.x, 0, xAxis.z, 0),
                new Vector4(0, 1, 0, 0),
                new Vector4(p2TDirFlat.x, 0, p2TDirFlat.z, 0),
                new Vector4(playerPos.x, playerPos.y, playerPos.z, 1));
            var scrollDelta = ControlSys.RequireKey("Axis3", 0).Axis.x *ScrollSensitive;

            _TargetShoulderScale = Mathf.Clamp(_TargetShoulderScale - scrollDelta, 0, MaxShoulderScale);
            ShoulderScale        = Mathf.Lerp(ShoulderScale, _TargetShoulderScale, SmoothFactor);

            _TargetPos = (c2W * (ShoulderOffset * ShoulderScale).ToV4Pos()).ToV3Pos();
            _TargetRot = Quaternion.LookRotation(p2TDir * StaringFactor + playerPos - _TargetPos);
        }
Пример #2
0
        private void FixedUpdate()
        {
            if (Target == null)
            {
                return;
            }
            var deltaAxis = ControlSys.RequireKey("Axis2", 0).Axis *Sensitive;

            _TargetRot.y += deltaAxis.x;
            _TargetRot.x -= deltaAxis.y;

            var tempAngle = LimitAngle / 2;

            _TargetRot.x = Mathf.Clamp(_TargetRot.x, -tempAngle, tempAngle);

            _FixedRot = Quaternion.Lerp(_FixedRot, Quaternion.Euler(_TargetRot), SmoothFactor);

            var scrollDelta = ControlSys.RequireKey("Axis3", 0).Axis.x *Sensitive;

            _TargetFollowRange = Mathf.Clamp(_TargetFollowRange - scrollDelta, 0, MaxFollowRange);
            FollowRange        = Mathf.Lerp(FollowRange, _TargetFollowRange, SmoothFactor);

            deltaAxis     = _FixedRot * Vector3.back * FollowRange;
            _PreTargetPos = Vector3.Lerp(_PreTargetPos, Target.position + TargetOffset, SmoothFactor);
            _FixedPos     = _PreTargetPos + deltaAxis;
        }
Пример #3
0
        protected override ControlInfo GetMoveControl()
        {
            var ctrl = ControlSys.RequireKey(CtrlKeys.GetKey(MoveKey));

            ctrl.HandleRawAxis();
            ctrl.Axis = Trans.localToWorldMatrix * ctrl.Axis;

            return(ctrl);
        }
Пример #4
0
        public void ReadCtrl()
        {
            if (ControlSys.RequireKey(CtrlKeys.GetKey(BuildingModeStartKey)).Down)
            {
                StartingBuildingMode();
                return;
            }

            if (ControlSys.RequireKey(CtrlKeys.GetKey(BuildingModeEndKey)).Down)
            {
                EndingBuildingMode();
            }
        }
Пример #5
0
        private void MoveCtrl()
        {
            var ctrlInfo = ControlSys.RequireKey(CtrlKeys.GetKey(MoveKey));

            ctrlInfo.HandleRawAxis();
            _MoveSyner.Set(ctrlInfo);

            ctrlInfo = ControlSys.RequireKey(CtrlKeys.GetKey(FastMoveKey));
            _FastMoveSyner.Set(ctrlInfo);

            ctrlInfo = ControlSys.RequireKey(CtrlKeys.GetKey(ScrollHeightKey));
            _ScrollHeightSyner.Set(ctrlInfo);
        }
Пример #6
0
        private void Update()
        {
            var autoReload = Fire(ControlSys.RequireKey(CtrlKeys.GetKey(FireKey)));

            Reload(ControlSys.RequireKey(CtrlKeys.GetKey(ReloadKey)), autoReload);

            if (ControlSys.RequireKey(CtrlKeys.GetKey(AimKey)).Down)
            {
                _AimScope.Switch();
            }
            if (ControlSys.RequireKey(CtrlKeys.GetKey(SwitchFireKey)).Down)
            {
            }
            //MachineGunFireControl.LoopBurstMode();

            _Animator.SetBool(RELOAD, _StickyInputDic.GetBool(RELOAD));
        }
Пример #7
0
        private void PlayerCtrl()
        {
            if (ControlSys.RequireKey(CtrlKeys.GetKey(PutKey)).Down)
            {
                if (Put())
                {
                    Debug.Log("Success");
                }
            }

            if (ControlSys.RequireKey(CtrlKeys.GetKey(RotateKey)).Down)
            {
                Rotate(true);
            }

            if (ControlSys.RequireKey(CtrlKeys.GetKey(CancelKey)).Down)
            {
                Cancel();
            }
        }
Пример #8
0
        /// <summary>
        /// 检测玩家输入,做出相应操作
        /// </summary>
        public void InputCheck()
        {
            if (ControlSys.RequireKey(CtrlKeys.GetKey(PreWeaponKey)).Down)
            {
                SwitchWeaponToPre();
            }
            else
            {
                foreach (var pairs in
                         _Keys.Where(pairs =>
                                     ControlSys.RequireKey(pairs.Key, SHIELD_VALUE).Down))
                {
                    SwitchWeapon(pairs.Value);
                    break;
                }
            }

            if (ControlSys.RequireKey(CtrlKeys.GetKey(DropWeaponKey)).Down)
            {
                DropCurrentWeapon();
            }
        }
Пример #9
0
        private void FixedUpdate()
        {
            //if (Target == null) return;
            //Vector3 targetPos = Target.position + TargetOffset;
            //Vector3 dir = (_TargetDir - targetPos).normalized * Radius;
            //Vector3 input = ControlSys.RequireKey("Axis2", 0).Axis;
            //dir = Quaternion.AngleAxis(Sensitive * input.x, Vector3.up)*dir;
            //_TargetDir = dir + targetPos;
            //float preEulerx = Trans.localEulerAngles.x;
            //if (preEulerx >= 270) preEulerx -= 360;

            //dir = Vector3.Cross(Vector3.down, dir);
            //dir = Quaternion.AngleAxis(OffsetAngle, Vector3.up) * dir;

            //Trans.rotation = Quaternion.LookRotation(dir, Vector3.up);
            //// Trans.localEulerAngles += input.y * Sensitive * Vector3.right;

            //float angle = input.y * -Sensitive + preEulerx;
            //angle = Mathf.Clamp(angle, -UpAngleLimit, UpAngleLimit);
            //dir = Trans.localEulerAngles;
            //dir.x = angle;
            //Trans.localEulerAngles = dir;
            //Debug.Log(Trans.localEulerAngles);

            //// y
            //if (Target == null) return;
            //Vector3 targetPos = Target.position + TargetOffset;
            //Vector3 dir = (_TargetDir - targetPos).normalized * Radius;
            //Vector3 input = ControlSys.RequireKey("Axis2", 0).Axis;
            //float yRotAngle = Sensitive * input.x;
            //Quaternion targetRot = Quaternion.AngleAxis(yRotAngle, Vector3.up);
            //dir = targetRot * dir;
            //_TargetDir = dir + targetPos;
            //Trans.localRotation *= targetRot;

            //// x
            //float preEulerx = Trans.localEulerAngles.x;
            //if (preEulerx >= 270) preEulerx -= 360;
            //float angle = input.y * -Sensitive + preEulerx;
            //angle = Mathf.Clamp(angle, -UpAngleLimit, UpAngleLimit);
            //dir = Trans.localEulerAngles;
            //dir.x = angle;
            //Trans.localEulerAngles = dir;

            //if (Target == null) return;
            //Vector3 input = ControlSys.RequireKey("Axis2", 0).Axis;
            //float yRotAngle = Sensitive * input.x;
            //_TargetDir = Quaternion.AngleAxis(yRotAngle, Vector3.up) * _TargetDir;
            //Vector3 eulerAngle = Trans.eulerAngles;
            //eulerAngle += Vector3.up * yRotAngle;
            //eulerAngle.y %= 360;

            //if (eulerAngle.x >= 270) eulerAngle.x -= 360;
            //eulerAngle.x = Mathf.Clamp(input.y * -Sensitive + eulerAngle.x, -UpAngleLimit, UpAngleLimit);
            //Trans.eulerAngles = eulerAngle;

            //if (Target == null) return;
            //Vector3 input = ControlSys.RequireKey("Axis2", 0).Axis;
            //float yRotAngle = Sensitive * input.x;
            //_TargetDir = Quaternion.AngleAxis(yRotAngle, Vector3.up) * _TargetDir;
            //Vector3 dir = Vector3.Cross(_TargetDir, Vector3.up);
            //dir = Quaternion.AngleAxis(OffsetAngle, Vector3.up) * dir;

            //_TargetRot.y = Vector3.SignedAngle(Vector3.forward, dir,Vector3.up);
            //if (_TargetRot.x >= 270) _TargetRot.x -= 360;
            //_TargetRot.x = Mathf.Clamp(input.y * -Sensitive + _TargetRot.x, -UpAngleLimit, UpAngleLimit);
            //_TargetRot.z = 0;

            if (Target == null)
            {
                return;
            }
            var input     = ControlSys.RequireKey("Axis2", 0).Axis;
            var yRotAngle = Sensitive * input.x;

            _TargetDir = Quaternion.AngleAxis(yRotAngle, Vector3.up) * _TargetDir;
            var dir = Vector3.Cross(_TargetDir, Vector3.up);

            dir = Quaternion.AngleAxis(OffsetAngle, Vector3.up) * dir;

            _TargetRot.y = Vector3.SignedAngle(Vector3.forward, dir, Vector3.up);
            if (_TargetRot.x >= 270)
            {
                _TargetRot.x -= 360;
            }
            _TargetRot.x = Mathf.Clamp(input.y * -Sensitive + _TargetRot.x, -UpAngleLimit, UpAngleLimit);
            _TargetRot.z = 0;

            _TargetPos = Target.position;
        }
Пример #10
0
 protected override ControlInfo GetSquatControl()
 {
     return(ControlSys.RequireKey(CtrlKeys.GetKey(SquatKey)));
 }
Пример #11
0
 protected override ControlInfo GetJumpControl()
 {
     return(ControlSys.RequireKey(CtrlKeys.GetKey(JumpKey)));
 }
Пример #12
0
 private void Update()
 {
     _InteractiveSyn.Set(ControlSys.RequireKey(Config.InteractiveKeyName, 0));
     WeaponBelt.InputCheck();
 }