Beispiel #1
0
    private void SetChainSpawnTimeScale(float newTimeScale)
    {
        List <Tween> chainTweens = DOTween.TweensById(SPAWN_CHAIN_SEQUENCE);

        if (chainTweens == null)
        {
            return;
        }
        foreach (var tween in chainTweens)
        {
            tween.timeScale = newTimeScale;
        }
    }
Beispiel #2
0
    void Update()
    {
        RaycastHit hit;
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit, 100f))
        {
            CubeController hitCube = hit.transform.GetComponentInParent <CubeController>();

            // Target switched
            if (hitCube != null && hitCube != previousTarget)
            {
                if (hitCube != blueCube)
                {
                    // Light up new target
                    DOTween.Kill(hitCube);
                    hitCube.GetComponentInChildren <MeshRenderer>().material.DOColor(emissiveColor, "_EmissiveColor", tweenDuration).SetId(hitCube).SetEase(tweenEaseType);

                    Light light = hitCube.GetComponentInChildren <Light>();
                    light.enabled = true;
                    light.DOIntensity(0f, tweenDuration).From().SetId(hitCube).SetEase(tweenEaseType)
                    .OnComplete(() =>
                    {
                        AssignBlueCube(hitCube);
                    });
                }


                // Unlight the previous target
                if (previousTarget != null && previousTarget != blueCube)
                {
                    List <Tween> tweens        = DOTween.TweensById(previousTarget);
                    float        tweenDuration = tweens[0].Elapsed();
                    DOTween.Kill(previousTarget);

                    previousTarget.GetComponentInChildren <MeshRenderer>().material.DOColor(Color.black, "_EmissiveColor", tweenDuration * tweenFadeOutMultiplier).SetId(previousTarget).SetEase(Ease.InSine);
                    Light light = previousTarget.GetComponentInChildren <Light>();
                    light.DOIntensity(0f, tweenDuration * tweenFadeOutMultiplier).From().SetId(previousTarget).SetEase(Ease.InSine)
                    .OnComplete(() =>
                    {
                        light.enabled   = false;
                        light.intensity = lightIntensity;
                    });
                }


                // Update reference to currentTarget
                previousTarget = hitCube;
            }
        }
    }
Beispiel #3
0
    private void InitializeLogin()
    {
        copyrightTween    = DOTween.TweensById("CopyrightTween", false)[0];
        closingPanelTween = DOTween.TweensById("ClosingPanelTween", false)[0];
        //loadingMessageTween = DOTween.TweensById ("LoadingMessageTween", false)[0];

        // show copy right after a bit of a delay
        Sequence cleanupSequence = DOTween.Sequence();

        cleanupSequence.Append(copyrightTween);
        cleanupSequence.Append(closingPanelTween);
        //cleanupSequence.Append (loadingMessageTween);
        cleanupSequence.OnComplete(VerifyFBAuthentication);
    }
Beispiel #4
0
    private void TestSequenceSpeedupCallback()
    {
        _testTimeScale += 0.1f;
        List <Tween> _tweens = DOTween.TweensById("TESTTEST");

        if (_tweens == null)
        {
            return;
        }
        for (int i = 0; i < _tweens.Count; i++)
        {
            var _tween = _tweens[i];
            _tween.timeScale = _testTimeScale;
        }
    }
    private void KillTweentToID(string tweenid)
    {
        var killtween = DOTween.TweensById(tweenid);

        if (killtween != null)
        {
            killtween.ForEach((tween) =>
            {
                if (tween != null)
                {
                    tween.Complete();
                }
            });
        }
    }
Beispiel #6
0
    public List <Tween> GetAllHellspawnTweens()
    {
        List <Tween> hellspawns       = DOTween.TweensById(HellSpawn.HELLSPAWN_DOTWEEN_ID, true);
        List <Tween> hellspawnBullets = DOTween.TweensById(HellSpawnBullet.HELLSPAWN_BULLET_DOTWEEN_ID, true);
        List <Tween> result           = new List <Tween>();

        if (hellspawns != null)
        {
            result.AddRange(hellspawns);
        }
        if (hellspawnBullets != null)
        {
            result.AddRange(hellspawnBullets);
        }
        return(result);
    }
Beispiel #7
0
    private void ResolveTouchEnd(IPuzzle puzzle, IOperation op)
    {
        IQuad        quad     = puzzle[op.row, op.column];
        string       tid      = Style.QuadUnifiedScaleId + "_" + quad.row + "_" + quad.column;
        List <Tween> playings = DOTween.TweensById(tid, true);

        if (playings != null)
        {
            playings.ForEach((Tween each) => each.Kill(true));
        }
        DOTween.To(
            () => quad.localScale,
            x => quad.localScale = x,
            Vector3.one,
            Style.QuadTouchScaleDuration
            ).SetId(tid);
    }
Beispiel #8
0
    public static void CreateSequence(string sequenceId, GameObject[] targetObjects, Action afterCompleteAnimation = null, float timeBetweenAnimations = 0, float delay = 0)
    {
        if (DOTween.TweensById(sequenceId, true) != null)
        {
            return;
        }

        float currentTime = 0 + delay;

        Sequence mySequence = DOTween.Sequence();

        mySequence.SetId(sequenceId);
        foreach (GameObject targetObject in targetObjects)
        {
            mySequence.Insert(currentTime, AssignTween(targetObject, "scale"));
            currentTime += timeBetweenAnimations;
        }
        mySequence.OnComplete(() => afterCompleteAnimation());
    }
Beispiel #9
0
    // Use this for initialization
    void Start()
    {
        LoadStatus  = 0;
        LoadingText = LoadingTextGameObject.GetComponent <Text> ();

        loadingTweens = DOTween.TweensById("Loading", false);
        LoadingTween  = loadingTweens [0];

        loadingBallTweens     = DOTween.TweensById("LoadingBallOne", false);
        LoadingBallOneTween   = loadingBallTweens [0];
        loadingBallTweens     = DOTween.TweensById("LoadingBallTwo", false);
        LoadingBallTwoTween   = loadingBallTweens [0];
        loadingBallTweens     = DOTween.TweensById("LoadingBallThree", false);
        LoadingBallThreeTween = loadingBallTweens [0];

        treeLineTweens = DOTween.TweensById("TreeLine", false);
        TreeLineTween  = treeLineTweens [0];

        CircleOne = GameObject.Find(CIRCLE_ONE_ID);
        CircleOne.SetActive(false);
        CircleOne.transform.localScale = new Vector3(0.0f, 0.0f, 0.0f);
        circleFrameTweens   = DOTween.TweensById(CIRCLE_ONE_ID + "FrameTween", false);
        CircleOneFrameTween = circleFrameTweens [0];

        CircleTwo = GameObject.Find(CIRCLE_TWO_ID);
        CircleTwo.SetActive(false);
        CircleTwo.transform.localScale = new Vector3(0.0f, 0.0f, 0.0f);
        circleFrameTweens   = DOTween.TweensById(CIRCLE_TWO_ID + "FrameTween", false);
        CircleTwoFrameTween = circleFrameTweens [0];

        CircleThree = GameObject.Find(CIRCLE_THREE_ID);
        CircleThree.SetActive(false);
        CircleThree.transform.localScale = new Vector3(0.0f, 0.0f, 0.0f);
        circleFrameTweens     = DOTween.TweensById(CIRCLE_THREE_ID + "FrameTween", false);
        CircleThreeFrameTween = circleFrameTweens [0];

        CircleFour = GameObject.Find(CIRCLE_FOUR_ID);
        CircleFour.SetActive(false);
        CircleFour.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
        circleFrameTweens    = DOTween.TweensById(CIRCLE_FOUR_ID + "FrameTween", false);
        CircleFourFrameTween = circleFrameTweens [0];

        CircleFive = GameObject.Find(CIRCLE_FIVE_ID);
        CircleFive.SetActive(false);
        CircleFive.transform.localScale = new Vector3(0.0f, 0.0f, 0.0f);
        circleFrameTweens    = DOTween.TweensById(CIRCLE_FIVE_ID + "FrameTween", false);
        CircleFiveFrameTween = circleFrameTweens [0];

        if (InSplashScene)
        {
            // TODO: Add the story scene and bulliten message scene (info message is something I might need all users to be aware ASAP)
            //       to the list of possible sceens shown right after splash
            GameState.Instance.CurrentScene = (string)GameManager.Instance.GetLastSceneInBreadCrumb();
            Debug.Log("Loading the following Scene: " + GameState.Instance.CurrentScene);
            LoadNextScene(GameState.Instance.CurrentScene, false);
        }
        else
        {
            if (LoadingSceneCamera != null)
            {
                LoadingSceneCamera.enabled = false;
            }
            if (LoadingSceneCanvas != null)
            {
                LoadingSceneCanvas.enabled = false;
            }
            if (QuickLoadImage != null)
            {
                QuickLoadImage.SetActive(false);
            }
        }
    }
    private void FixedUpdate()
    {
        if (Input.GetKey("escape"))
        {
            Application.Quit();
        }
        if (!sceneChanging)
        {
            if (touching)
            {
                touchHold(Input.mousePosition);
            }
            if (Input.GetMouseButtonDown(0) && !touching)
            {
                touching = true;
                touchBegin(Input.mousePosition);
            }

            if (Input.GetMouseButtonUp(0))
            {
                touching = false;
                touchEnd(Input.mousePosition);
            }
            if (Input.touchCount > 0)
            {
                if (Input.GetTouch(0).phase == TouchPhase.Began)
                {
                    touching = true;
                    touchBegin(Input.GetTouch(0).position);
                }
                if (Input.GetTouch(0).phase == TouchPhase.Moved)
                {
                    touchHold(Input.GetTouch(0).position);
                }
                if (Input.GetTouch(0).phase == TouchPhase.Ended)
                {
                    touching = false;
                    touchEnd(Input.GetTouch(0).position);
                }
            }

            //Camera di chuyển theo phương X
            if (PlanetContainer != null)
            {
                for (int i = 0; i < PlanetContainer.childCount - 1; i++)
                {
                    if (Camera.main.transform.position.y > PlanetContainer.GetChild(i).position.y&& Camera.main.transform.position.y < PlanetContainer.GetChild(i + 1).position.y)
                    {
                        float ratio = (Camera.main.transform.position.y - PlanetContainer.GetChild(i).position.y) / (PlanetContainer.GetChild(i + 1).position.y - PlanetContainer.GetChild(i).position.y);
                        if (DOTween.TweensById("MoveX", true) != null)
                        {
                            foreach (Tween tween in DOTween.TweensById("MoveX", true))
                            {
                                tween.Kill();
                            }
                        }
                        Camera.main.transform.DOMoveX(PlanetContainer.GetChild(i).position.x + ratio * (PlanetContainer.GetChild(i + 1).position.x - PlanetContainer.GetChild(i).position.x), 0.2f).SetId("MoveX");
                        break;
                    }
                }
                // Camera di chuyển theo phuong Y
                if (Camera.main.transform.position.y - ScrollVelocity.y >= limitDown && Camera.main.transform.position.y - ScrollVelocity.y <= limitUp)
                {
                    if (DOTween.TweensById("MoveY", true) != null)
                    {
                        foreach (Tween tween in DOTween.TweensById("MoveY", true))
                        {
                            tween.Kill();
                        }
                    }
                    Camera.main.transform.DOMoveY((Camera.main.transform.position.y - ScrollVelocity.y), 0.1f).SetId("MoveY");
                    if (!touching)
                    {
                        ScrollVelocity = Vector2.Lerp(ScrollVelocity, Vector2.zero, 0.125f);
                    }
                }
                else if (Camera.main.transform.position.y - ScrollVelocity.y < limitDown)
                {
                    Camera.main.transform.DOMoveY(limitDown, 0.1f);
                }
                else
                {
                    Camera.main.transform.DOMoveY(limitUp, 0.1f);
                }
            }
        }
    }
Beispiel #11
0
    async void Start()
    {
        //Position 移動到座標
        transform.DOMove(Vector3.one, 2);
        transform.DOLocalMoveX(1, 2);
        transform.DOLocalMoveY(1, 2);

        //Rotate 旋轉
        transform.DORotate(new Vector3(0, 0, 180), 2);
        transform.DOLocalRotate(new Vector3(0, 90, 0), 2);
        transform.DORotateQuaternion(new Quaternion(0.1f, 0.1f, 0.1f, 0.1f), 2);
        transform.DOLookAt(Vector3.one, 2);

        //縮放 Scale
        transform.DOScale(Vector3.one * 2, 2);

        //震動 + 彈性
        //第一個參數 punch:方向 力的大小
        //第二個參數 duration:持續時間
        //第三個參數 Vibrato: 震動頻率
        //第四個參數 Elasticity 彈性
        transform.DOPunchPosition(new Vector3(0, 1, 0), 2, 10, 10);

        //Shake 震動
        transform.DOShakePosition(2, Vector3.one, 20, 0);

        //Blend(座標位置增加或減少)
        transform.DOBlendableMoveBy(Vector3.one, 2);
        transform.DOBlendableMoveBy(-Vector3.one * 2, 2);

        //Material 材質Tint顏色變化
        Material material = GetComponent <MeshRenderer>().material;

        material.DOColor(Color.red, "_Color", 2);

        //Alpha 透明
        material.DOFade(0, 2);

        //Gradient 顏色和透明度漸變
        material.DOGradientColor(_gradient, "_Color", 2);
        material.DOVector(Color.clear, "_Color", 2);

        //顏色混合
        material.DOBlendableColor(Color.red, "_Color", 2);
        material.DOBlendableColor(Color.green, "_Color", 2);

        //隊列執行
        Sequence quence = DOTween.Sequence();

        quence.Append(transform.DOMove(Vector3.one, 2)); //0~2秒
        quence.AppendInterval(1);                        //2~3秒
        quence.AppendCallback(AppendCallBack);
        quence.Join(transform.DOScale(Vector3.one * 2, 2));
        quence.Append(transform.DOMove(new Vector3(1, 0, 0), 2));        //3~5秒
        quence.Join(transform.DOScale(Vector3.one, 2));
        //插入執行(會覆蓋當前秒數的執行)
        quence.Insert(2, transform.DOMove(-Vector3.one, 1));        //2秒開始
        //插入方法執行
        quence.InsertCallback(5, InsertCallBack);

        //多種方法調用
        transform.DOMove(Vector3.one, 1).SetLoops(-1, LoopType.Yoyo).SetEase(Ease.Linear);

        //結束點到起點
        transform.DOMove(Vector3.one, 2).From();

        //延遲調用
        transform.DOMove(Vector3.one, 2).SetDelay(3);

        //移動速度
        transform.DOMove(Vector3.one, 10).SetSpeedBased();

        //以ID調用
        transform.DOMove(Vector3.one, 10).SetId("ID");
        DOTween.Play("ID");

        //增量移動
        transform.DOMove(Vector3.one, 2).SetRelative(true);

        //幀函數
        transform.DOMove(Vector3.one, 2).SetUpdate(UpdateType.Normal, true);

        //Flash運動曲線 漸大或漸小
        transform.DOMove(Vector3.one, 2).SetEase(Ease.Flash, 10, 1);
        transform.DOMove(Vector3.one, 2).SetEase(Ease.Flash, 10, -1);

        //結合AnimationCurve使用
        transform.DOMove(Vector3.one * 2, 2).SetEase(_curve);

        //曲線運動 自訂義函數設置
        transform.DOMove(Vector3.one * 2, 2).SetEase(EaseFun);

        //回調函數
        transform.DOMove(Vector3.one * 2, 2).OnComplete(() => { Debug.Log("OnComplete"); });
        transform.DOMove(Vector3.one * 2, 2).OnKill(() => { Debug.Log("OnKill"); });
        transform.DOMove(Vector3.one * 2, 2).OnPlay(() => { Debug.Log("OnPlay"); });
        transform.DOMove(Vector3.one * 2, 2).OnPause(() => { Debug.Log("OnPause"); });
        transform.DOMove(Vector3.one * 2, 2).OnStart(() => { Debug.Log("OnStart"); });
        transform.DOMove(Vector3.one * 2, 2).OnStepComplete(() => { Debug.Log("OnStepComplete"); });
        transform.DOMove(Vector3.one * 2, 2).OnUpdate(() => { Debug.Log("OnUpdate"); });
        transform.DOMove(Vector3.one * 2, 2).OnRewind(() => { Debug.Log("OnRewind"); });

        //常見方法
        transform.DOMove(Vector3.one * 2, 2);
        await Task.Delay(TimeSpan.FromSeconds(0.0001f));

        transform.DOPause();
        transform.DOPlay();
        transform.DORestart();
        transform.DORewind();
        transform.DOSmoothRewind();
        transform.DOPlayBackwards();
        await Task.Delay(TimeSpan.FromSeconds(0.5f));

        transform.DOPlayForward();
        transform.DOTogglePause();

        //獲取數據
        var list1 = DOTween.PausedTweens();
        var list2 = DOTween.PlayingTweens();
        var list3 = DOTween.TweensById("ID");
        var list4 = DOTween.TweensByTarget(transform, true);
        var list5 = DOTween.IsTweening("ID");
        var list6 = DOTween.TotalPlayingTweens();

        //修改移動模式
        var tweener = transform.DOMove(Vector3.one * 2, 2);
        await Task.Delay(TimeSpan.FromSeconds(1));

        Debug.Log(tweener.fullPosition);
        await Task.Delay(TimeSpan.FromSeconds(0.5f));

        tweener.fullPosition = 0;

        var tweener1 = transform.DOMove(Vector3.one * 2, 1).SetLoops(3);
        await Task.Delay(TimeSpan.FromSeconds(1.1f));

        Debug.Log(tweener1.CompletedLoops());        //1.1秒
        await Task.Delay(TimeSpan.FromSeconds(1.1f));

        Debug.Log(tweener1.CompletedLoops());        //2.2秒
        await Task.Delay(TimeSpan.FromSeconds(1.1f));

        Debug.Log(tweener1.CompletedLoops());        //3.3秒

        //獲取時間數據
        var tweener2 = transform.DOMove(Vector3.one * 2, 1).SetLoops(3);

        tweener2.Delay();                        //延遲
        tweener2.Duration();                     //持續時間
        tweener2.Elapsed();                      //已經播放的時間
        tweener2.ElapsedDirectionalPercentage(); //過去方向百分比
        tweener2.ElapsedPercentage();            //過去百分比


        //協程 指定循環次數
        _tweener = transform.DOMove(Vector3.one * 2, 1).SetLoops(3);
        StartCoroutine(Wait());
    }