Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
 public void SetInputValue(ViewItemData config)
 {
     Target = GameObject.Find(config.TargetID).transform;
 }