Example #1
0
    // Update is called once per frame
    void Update()
    {
        lifeTime -= Time.deltaTime;
        if (lifeTime <= 0)
        {
            this.gameObject.SetActive(false);
            BattleInfo battle = GameObject.FindWithTag("BattleInfo").GetComponent <BattleInfo>();
            battle.CollectDamageText(this.transform);
            return;
        }

        if (floatTime > 0)
        {
            position.y += upSpeed * Time.deltaTime;
            position.x += horSpeed * Time.deltaTime;
            floatTime  -= Time.deltaTime;
        }
        Vector2       screenPos = Camera.main.WorldToScreenPoint(position);
        RectTransform rec       = this.transform as RectTransform;

        rec.position = screenPos;

        if (lifeTime < fadeTime)
        {
            float alpha = lifeTime / fadeTime;
            Text  txt   = GetComponent <Text>();
            txt.color = new Color(txt.color.r, txt.color.g, txt.color.b, alpha);
        }

        if (transform.localScale.x < maxScale)
        {
            scaleTime += Time.deltaTime;
            float scaleRate = scaleTime / maxScaleTime * (maxScale - minScale) + minScale;
            if (scaleRate > maxScale || Mathf.Abs(scaleRate - maxScale) < 0.1)
            {
                scaleRate = maxScale;
            }
            transform.localScale = new Vector3(scaleRate, scaleRate, scaleRate);
        }
    }