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>(); }
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); } } }
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>(); }
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); }