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); }
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; }
protected override ControlInfo GetMoveControl() { var ctrl = ControlSys.RequireKey(CtrlKeys.GetKey(MoveKey)); ctrl.HandleRawAxis(); ctrl.Axis = Trans.localToWorldMatrix * ctrl.Axis; return(ctrl); }
public void ReadCtrl() { if (ControlSys.RequireKey(CtrlKeys.GetKey(BuildingModeStartKey)).Down) { StartingBuildingMode(); return; } if (ControlSys.RequireKey(CtrlKeys.GetKey(BuildingModeEndKey)).Down) { EndingBuildingMode(); } }
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); }
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)); }
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(); } }
/// <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(); } }
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; }
protected override ControlInfo GetSquatControl() { return(ControlSys.RequireKey(CtrlKeys.GetKey(SquatKey))); }
protected override ControlInfo GetJumpControl() { return(ControlSys.RequireKey(CtrlKeys.GetKey(JumpKey))); }
private void Update() { _InteractiveSyn.Set(ControlSys.RequireKey(Config.InteractiveKeyName, 0)); WeaponBelt.InputCheck(); }