public static void SetParameter(ViewItemData config) { RotateSpeed = 1; ZoomSpeed = config.Distance; SummationX = config.ValueX; SummationY = config.ValueY; SummationZ = config.Distance; MaxDistance = 3f; MinDistance = 0.1f; ClampMaxX = 360; ClampMinX = -360; ClampMaxY = 90; if (config.ValueX > 0) { ClampMinY = 0; } else { ClampMinY = config.ValueX; } switch (config.TargetID) { case "Project_004_Rular": SummationY = GameObject.Find("Project_004_Rular").transform.eulerAngles.y + 180; SummationX = 0; break; case "Project_004_YBKC": SummationY = GameObject.Find("Project_004_Rular").transform.eulerAngles.y + 180; SummationX = 0; break; } }
private async void InitViewData() { _ViewDataDic.Clear(); var list = await XmlConfigHelper.LoadXml(ConfigType.ViewDataConfig); foreach (XmlNode item in list.NodeList) { ViewItemData data = new ViewItemData(); data.ID = item.Attributes["ID"].Value; data.ValueX = float.Parse(item.Attributes["X"].Value); data.ValueY = float.Parse(item.Attributes["Y"].Value); data.Distance = float.Parse(item.Attributes["Distance"].Value); data.TargetID = item.Attributes["TargetID"].Value; data.Precondition = item.Attributes["Precondition"].Value; _ViewDataDic.Add(data.ID, data); } }
public async ETTask MoveToTarget(ViewItemData config) { GameObject go = GameObject.Find(config.TargetID); Debug.LogError(config.TargetID); if (go == null) { Debug.LogError($"找不到对象{config.TargetID}"); return; } SetCamera(Game.Scene.GetComponent <MainCameraComponent>().Camera); Target = go.transform; _targetPos.transform.position = Target.position; _targetPos.transform.rotation = Target.rotation; InputParameter.SetParameter(config); _lastMoveTargetTween.Kill(); tokenSource.Cancel(); tokenSource = new CancellationTokenSource(); IsChangingTarget = true; SetInputValue(config); Vector3 initAngle = CurrentCamera.localEulerAngles; CurrentCamera.localEulerAngles = new Vector3(InputParameter.SummationX, InputParameter.SummationY); var endpos = CurrentCamera.rotation * new Vector3(0.0f, 0.0f, -InputParameter.SummationZ) + _targetPos.transform.position; CurrentCamera.localEulerAngles = initAngle; float time = Vector3.Distance(CurrentCamera.position, endpos) * 0.1f; if (time > 2) { time = 1; } if (time < 0.5f) { time = 0.5f; } _lastMoveTargetTween = CurrentCamera.DOLocalRotate(new Vector3(InputParameter.SummationX, InputParameter.SummationY), time); _lastMoveTargetTween = CurrentCamera.DOMove(endpos, time); _lastMoveTargetTween.onComplete += () => { if (CurrentCamera.parent.parent != null) { var _dragTarget = CurrentCamera.parent.parent; CurrentCamera.parent.SetParent(null); _dragTarget.transform.position = CurrentCamera.position; _dragTarget.transform.localEulerAngles = new Vector3(0, CurrentCamera.localEulerAngles.y, 0); CurrentCamera.parent.SetParent(_dragTarget.transform); } IsChangingTarget = false; }; while (IsChangingTarget) { await Game.Scene.GetComponent <TimerComponent>().WaitAsync(100, tokenSource.Token); } }
public void SetInputValue(ViewItemData config) { Target = GameObject.Find(config.TargetID).transform; }