protected void Awake()
    {
        DS_CG_Front  = BackgroundDiceSpriteFront.AddComponent <DicedSpriteRenderer>();
        DS_CG_Behide = BackgroundDiceSpriteBehide.AddComponent <DicedSpriteRenderer>();

        //DI_CG_Front = BackgroundDiceImageFront.AddComponent<Utage.DicingImage>();
        //DI_CG_Behide = BackgroundDiceImageBehide.AddComponent<Utage.DicingImage>();
    }
Beispiel #2
0
    protected virtual void HideObject(GameObject obj, BillboardOptions options)
    {
        if (obj != null)
        {
            //先找出這個Billboard 在哪個距離段, 再找出要淡出的位置
            //TODO: 這個設計不好
            options.toDistance = FindObjectInDistance(obj);

            // LeanTween doesn't handle 0 duration properly
            float durationFade = (options.fadeDuration > 0f) ? options.fadeDuration : float.Epsilon;
            // LeanTween doesn't handle 0 duration properly
            float durationMove = (options.moveDuration > 0f) ? options.moveDuration : float.Epsilon;

            GameObject toPos = null;

            DicedSpriteRenderer objRenderDice = obj.GetComponent <DicedSpriteRenderer>();
            SpriteRenderer      objRender     = obj.GetComponent <SpriteRenderer>();
            if (objRenderDice != null)
            {
                toPos = GetPosition(options.toDistance, options.toPosition);

                //淡出圖案
                DOTween.To(() => objRenderDice.Color, x => objRenderDice.Color = x, new Color(1, 1, 1, 0), durationFade).SetEase(tweenEaseType).OnComplete(() => {
                    if (objRenderDice != null)
                    {
                        Destroy(objRenderDice.gameObject);
                    }
                });
            }
            if (objRender != null)
            {
                toPos = GetPositionEnemy(options.toDistance, options.toPosition);

                //淡出圖案
                DOTween.To(() => objRender.color, x => objRender.color = x, new Color(1, 1, 1, 0), durationFade).SetEase(tweenEaseType).OnComplete(() => {
                    if (objRender != null)
                    {
                        Destroy(objRender.gameObject);
                    }
                });
            }

            Vector3 targetPos = new Vector3(toPos.transform.position.x, obj.transform.position.y, toPos.transform.position.z);

            //如果不勾選移動的話, 目標位置就是自己位置
            if (options.move == false)
            {
                targetPos = obj.transform.position;
            }

            obj.transform.DOMove(targetPos + new Vector3(0, 0, obj.transform.position.z), durationMove).SetEase(tweenEaseType);

            if (options.waitUntilFinished)
            {
                waitTimer = Mathf.Max(durationMove, durationFade);
            }
        }
    }
Beispiel #3
0
 public void FadeOutAllBillboard()
 {
     foreach (var item in OnStageBillboard)
     {
         if (item != null)
         {
             DicedSpriteRenderer oldRect = item.GetComponent <DicedSpriteRenderer>();
             if (oldRect != null)
             {
                 DOTween.To(() => oldRect.Color, x => oldRect.Color = x, new Color(1, 1, 1, 0), stage.FadeDuration).SetEase(tweenEaseType).OnComplete(() => {
                     Destroy(oldRect.gameObject);
                 });
             }
             SpriteRenderer oldRectEnemy = item.GetComponent <SpriteRenderer>();
             if (oldRectEnemy != null)
             {
                 DOTween.To(() => oldRectEnemy.color, x => oldRectEnemy.color = x, new Color(1, 1, 1, 0), stage.FadeDuration).SetEase(tweenEaseType).OnComplete(() => {
                     Destroy(oldRectEnemy.gameObject);
                 });
             }
         }
     }
     sortZ = 0;
 }
 private void Awake()
 {
     dicedSpriteRenderer = GetComponent <DicedSpriteRenderer>();
 }
Beispiel #5
0
    public virtual void ShowBillboardEnemy(BillboardOptions options)
    {
        //正常情況下,擷取 來自位置 以及 目標位置
        GameObject fromOb = GetPositionEnemy(options.toDistance, options.fromPosition);
        GameObject toOb   = GetPositionEnemy(options.toDistance, options.toPosition);

        // LeanTween doesn't handle 0 duration properly
        float durationFade = (options.fadeDuration > 0f) ? options.fadeDuration : float.Epsilon;
        // LeanTween doesn't handle 0 duration properly
        float durationMove = (options.moveDuration > 0f) ? options.moveDuration : float.Epsilon;

        //淡出已存在於位置上的舊立繪
        GameObject oldObj = GetBillboardOnStage(options.toPosition);

        if (oldObj != null)
        {
            DicedSpriteRenderer oldRect = oldObj.GetComponent <DicedSpriteRenderer>();
            if (oldRect != null)
            {
                DOTween.To(() => oldRect.Color, x => oldRect.Color = x, new Color(1, 1, 1, 0), durationFade).SetEase(tweenEaseType).OnComplete(() => {
                    Destroy(oldRect.gameObject);
                });
            }
            SpriteRenderer oldRectEnemy = oldObj.GetComponent <SpriteRenderer>();
            if (oldRectEnemy != null)
            {
                DOTween.To(() => oldRectEnemy.color, x => oldRectEnemy.color = x, new Color(1, 1, 1, 0), durationFade).SetEase(tweenEaseType).OnComplete(() => {
                    Destroy(oldRectEnemy.gameObject);
                });
            }
        }

        //新Enemy進來
        if (options.billboardSprite != null)
        {
            //以'來自位置'取出 Stage 上的 位置 , 並以此當作新的立繪存在於場景
            GameObject tempGO = null;

            //當選用座標偏移移動時,取代掉 from來自位置
            if (options.shiftIntoPlace && options.move)
            {
                //複製一份TO, 用以代替 from 來進行 offset 滑入
                tempGO = Instantiate(toOb) as GameObject;
                tempGO.transform.position =
                    new Vector2(tempGO.transform.position.x + options.shiftOffset.x,
                                tempGO.transform.position.y + options.shiftOffset.y);
            }
            else
            {
                //一般狀況, 使用 from 訊息
                tempGO = GameObject.Instantiate(fromOb);
            }

            tempGO.transform.SetParent(transform, false);
            tempGO.name = options.billboardSprite.name;
            tempGO.SetActive(true);
            //設置SortOrder, 以Z 軸來 sort
            IncreaseSortLayer();
            tempGO.transform.position += new Vector3(0, 0, sortZ);

            //設置立繪圖案,一開始給透明
            SpriteRenderer tempImage = tempGO.GetComponent <SpriteRenderer>();
            tempImage.sprite = options.billboardSprite;
            tempImage.color  = new Color(1f, 1f, 1f, 0f);

            //處理翻轉選項
            if (options.flipFace == true)
            {
                tempGO.transform.localScale = new Vector3(-tempGO.transform.localScale.x, tempGO.transform.localScale.y, tempGO.transform.localScale.z);
            }

            //Do Alpha Tween 淡入場璟
            DOTween.To(() => tempImage.color, x => tempImage.color = x, new Color(1, 1, 1, 1), durationFade).SetEase(tweenEaseType);

            //Do Move Tween 滑入場景
            tempGO.transform.DOMove(toOb.transform.position + new Vector3(0, 0, sortZ), durationMove).SetEase(tweenEaseType);
            if (options.waitUntilFinished)
            {
                waitTimer = Mathf.Max(durationMove, durationFade);
            }

            //Save Upload billboard to stage
            SetBillboardOnStage(options.toPosition, tempGO);
        }

        //Call Contunue with Wait until Finished
        FinishCommand(options);
    }