/// <summary> /// 平移注视视野 /// </summary> /// <param name="position">目标位置</param> /// <param name="damping">阻尼缓动模式</param> public void SetPosition(Vector3 position, bool damping = true) { if (_isKeepTrack) { return; } if (NeedLimit) { position = GlobalTools.Clamp(position, XMinLimit, YMinLimit, ZMinLimit, XMaxLimit, YMaxLimit, ZMaxLimit); } if (_moveTweener != null) { _moveTweener.Kill(); _moveTweener = null; } if (damping) { _moveTweener = Target.transform.DOMove(position, DampingTime); } else { Target.transform.position = position; } }
private void ApplyPosition() { if (NeedLimit) { Target.transform.position = GlobalTools.Clamp(Target.transform.position, XMinLimit, YMinLimit, ZMinLimit, XMaxLimit, YMaxLimit, ZMaxLimit); } }
/// <summary> /// 刷新 /// </summary> public void OnRefresh() { if (!CanControl) { return; } if (!IsCanOnUGUI && GlobalTools.IsPointerOverUGUI()) { return; } if (Main.m_Input.GetButton(InputButtonType.MouseMiddle)) { if (_moveTweener != null) { _moveTweener.Kill(); _moveTweener = null; } Target.transform.Translate(transform.right * Main.m_Input.GetAxis(InputAxisType.MouseX) * XSpeed * MR.Distance * -1); Target.transform.Translate(transform.up * Main.m_Input.GetAxis(InputAxisType.MouseY) * YSpeed * MR.Distance * -1); MR.NeedDamping = false; } else if (Main.m_Input.GetAxisRaw(InputAxisType.Horizontal) != 0 || Main.m_Input.GetAxisRaw(InputAxisType.Vertical) != 0 || Main.m_Input.GetAxisRaw(InputAxisType.UpperLower) != 0) { if (_moveTweener != null) { _moveTweener.Kill(); _moveTweener = null; } Target.transform.Translate(transform.right * Main.m_Input.GetAxis(InputAxisType.Horizontal) * XSpeed); Target.transform.Translate(transform.forward * Main.m_Input.GetAxis(InputAxisType.Vertical) * ZSpeed); Target.transform.Translate(transform.up * Main.m_Input.GetAxis(InputAxisType.UpperLower) * YSpeed); MR.NeedDamping = false; } else { MR.NeedDamping = true; } if (NeedLimit) { Target.transform.position = GlobalTools.Clamp(Target.transform.position, XMinLimit, YMinLimit, ZMinLimit, XMaxLimit, YMaxLimit, ZMaxLimit); } }
private void SwitchAngle(bool damping) { //摄像机插值变换到新的位置 if (damping) { transform.rotation = Quaternion.Lerp(transform.rotation, _rotation, Time.deltaTime * _damping); transform.position = Vector3.Lerp(transform.position, _position, Time.deltaTime * _damping); } //摄像机直接变换到新的位置 else { transform.rotation = _rotation; transform.position = _position; } //摄像机位置限制 if (NeedLimit) { transform.position = GlobalTools.Clamp(transform.position, XMinLimit, YMinLimit, ZMinLimit, XMaxLimit, YMaxLimit, ZMaxLimit); } }