public bool OnCombine(bool isMain) { if (isMain) { type = Util.getGenerateType(type); GameObject fakeMask = GameObject.Instantiate(this.gameObject, this.transform.position, this.transform.rotation, this.transform); fakeMask.GetComponent <Element> ().onFly = false; fakeMask.transform.localPosition = Vector3.zero; fakeMask.transform.localScale = Vector3.one; fakeMask.GetComponent <Element>().fakeMaskScale = 10f; fakeMask.GetComponent <SpriteRenderer> ().sortingOrder = 5; fakeMask.GetComponent <Element> ().FadeOut(delay: 1f); Destroy(fakeMask, destoryTime); GetComponent <SpriteRenderer>().sprite = Util.getElementSprite(type); //anim } else { afterFly = AfterFly.combine; Destroy(this.gameObject, destoryTime); //anim } //Debug.Log ("onCombine "+isMain); return(true); }
public bool OnKill(bool isMain = false) { if (isMain) { afterFly = AfterFly.explo; //anim(attacker) } else { //MoveTo (Vector3.zero, 1f, true); afterFlyTimer = -1f; afterFly = AfterFly.explo; killCircle.transform.localPosition = Vector3.zero; GameObject.Instantiate(killCircle, this.transform); //anim } //Debug.Log ("onkill"); Destroy(this.gameObject, destoryTime); return(true); }
// Update is called once per frame void Update() { if (onFly) { if (timer < flyTime) { timer += Time.deltaTime; } else { this.GetComponent <SpriteRenderer> ().sortingOrder = 2; timer = flyTime; onFly = false; onAfterFly = true; } if (timer >= 0) { this.transform.position = Vector3.Lerp(srcPos, tarPos, timer / flyTime); } } if (onFade) { if (fadeTimer < fadeTime) { fadeTimer += Time.deltaTime; } else { fadeTimer = fadeTime; onFade = false; } if (fadeTimer >= 0) { if (onFinish) { finishCircle.transform.position = this.transform.position; GameObject.Instantiate(finishCircle); onFinish = false; } this.GetComponent <SpriteRenderer> ().color = new Color(1, 1, 1, 1 - fadeTimer / fadeTime); this.transform.Rotate(new Vector3(0, 0, 15) * Time.deltaTime); this.transform.localScale = Vector3.Lerp(new Vector3(0.1f * fakeMaskScale, 0.1f * fakeMaskScale, 1), new Vector3(0.03f * fakeMaskScale, 0.03f * fakeMaskScale, 1), fadeTimer / fadeTime); } } if (onAfterFly) { if (afterFlyTimer < afterFlyTime) { afterFlyTimer += Time.deltaTime; } else { afterFlyTimer = afterFlyTime; //onFade = false; } if (afterFlyTimer >= 0) { switch (afterFly) { case AfterFly.explo: this.GetComponent <SpriteRenderer> ().color = new Color(1, 1, 1, 1 - afterFlyTimer / afterFlyTime); this.transform.localScale = (Vector3.one + new Vector3(1, 1, 0) * afterFlyTimer / afterFlyTime * 0.5f) * 0.1f; break; case AfterFly.combine: this.FadeOut(); afterFly = AfterFly.idle; break; default: break; } } } }