Exemplo n.º 1
0
 //=====被攻击触发器====
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.tag == "bullet")
     {
         print("aaaaaaaaaaa");
         FlashRed(0.2f);
         hp1 -= 5;
         DamageNum damage = Instantiate(damgeCanvas, transform.position, Quaternion.identity).GetComponent <DamageNum>();
         damage.ShowUIDamage(5);
         if (hp1 <= 0)
         {
             state = State.Death;
         }
     }
     if (collision.tag == "AttackShape2")
     {
         if (isAttacked1 == false)
         {
             print("爆浆虫被攻击了");
             FlashRed(0.2f);
             isAttacked1 = true;
             StartCoroutine(isAttackCo());
             hp1 -= JunkMan.instance.attack;
             DamageNum damage = Instantiate(damgeCanvas, transform.position, Quaternion.identity).GetComponent <DamageNum>();
             damage.ShowUIDamage(JunkMan.instance.attack);//显示伤害
             print("拾荒者攻击力:" + JunkMan.instance.attack);
             if (hp1 <= 0)
             {
                 state = State.Death;
             }
             print("爆浆虫的hp:" + hp1);
         }
     }
 }
Exemplo n.º 2
0
    public static void CreateDamageNum(Vector3 pos, float distance, int damage, Vector3 attackdir, bool isCrit = false, bool isDodge = false)
    {
        pos.y += distance;
        Vector3 screenPos = Camera.main.WorldToScreenPoint(pos);

        screenPos.z = 0f;

        // 使用UI摄像机转换到NGUI的世界坐标
        Vector3 nguiPos = UICamera.currentCamera.ScreenToWorldPoint(screenPos);
        UILabel label   = NGUITools.AddChild <UILabel>(ObjectManager.damageNumPanel);

        label.bitmapFont = ObjectManager.font;
        label.gameObject.transform.position = nguiPos;

        string txt = "";

        if (isDodge)
        {
            txt = "闪避";
        }
        else
        {
            txt = damage.ToString();
        }

        label.text     = txt;
        label.fontSize = 16;

        DamageNum dn = label.gameObject.AddComponent <DamageNum>();

        dn.setDir(attackdir);
    }
Exemplo n.º 3
0
 //=====被攻击收到伤害=====
 private void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.tag == "fireBullet")
     {
         print("sssssssssssss");
         FlashRed(0.2f);
         hp -= 5;
         DamageNum damage = Instantiate(damageCanvas, transform.position, Quaternion.identity).GetComponent <DamageNum>();
         damage.ShowUIDamage(5);
         if (hp <= 0)
         {
             state = State.Death;
         }
     }
     if (collision.tag == "AttackShape1")
     {
         if (isAttacked2 == false)
         {
             print("拾荒者被攻击了");
             FlashRed(0.2f);
             isAttacked2 = true;
             StartCoroutine(isAttackCo());
             hp -= Spider.instance.attack;
             DamageNum damage = Instantiate(damageCanvas, transform.position, Quaternion.identity).GetComponent <DamageNum>();
             damage.ShowUIDamage(Spider.instance.attack);
             print("爆浆虫攻击力:" + Spider.instance.attack);
             if (hp <= 0)
             {
                 state = State.Death;
             }
             print("拾荒者的hp:" + hp);
         }
     }
 }
Exemplo n.º 4
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.CompareTag("Enemy"))
        {
            //Debug.Log("We hit the enemy");
            attackDamage = Random.Range(minDamage, maxDamage) + PlayerMovement.instance.strength;

            //Critic
            if (Random.Range(0f, 100f) <= PlayerMovement.instance.criticRate * 100)
            {
                attackDamage *= PlayerMovement.instance.cirticBonus;
            }

            //score
            scoreF    += Mathf.Floor(attackDamage);
            score.text = scoreF.ToString();

            Enemy enemy = other.gameObject.GetComponent <Enemy>();

            if (!enemy /*!other.gameObject.GetComponent<Enemy>()*/.isAttacked)
            {
                enemy /*other.gameObject.GetComponent<Enemy>()*/.TakenDamage(attackDamage);

                DamageNum damagable = Instantiate(damageCanvas, other.transform.position, Quaternion.identity).GetComponent <DamageNum>();
                damagable.ShowUIDamage(Mathf.RoundToInt(attackDamage));
                //can also Mathf.CeliToInt

                //the repel effect
                //move in the direction of (PlayerPos -> EnemyPos)(EnemyPos - PlayerPos)
                Vector2 difference = other.transform.position - transform.position;
                other.transform.position = new Vector2(other.transform.position.x + difference.x / 2,
                                                       other.transform.position.y + difference.y / 2);
            }
        }
    }
Exemplo n.º 5
0
    private DamageNum AddDamageNum()
    {
        GameObject damageNumGameObject = Instantiate(DamageNumPrefab, Vector3.zero, Quaternion.identity, transform);
        DamageNum  damageNumScript     = damageNumGameObject.GetComponent <DamageNum>();

        DamageNumList.Add(damageNumScript);
        return(damageNumScript);
    }
Exemplo n.º 6
0
 public void AddDamageObj(DamageNum obj, int n)
 {
     if (CheckDamageObj(obj))
     {
         return;
     }
     obj.damage = n;
     damageObj.Add(obj);
 }
Exemplo n.º 7
0
 public bool CheckDamageObj(DamageNum obj)
 {
     for (int i = 0; i < damageObj.Count; i++)
     {
         if (damageObj[i].Equals(obj))
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 8
0
    public void Damage(DataUnitParam _attack, MasterSkillParam _skill, MasterWeaponParam _weapon)
    {
        int damage = _attack.CalcDamage(dataUnitParam, _skill, _weapon);

        dataUnitParam.hp -= damage;

        DamageNum script = PrefabManager.Instance.MakeScript <DamageNum>(GameMain.Instance.m_prefDamageNum, m_enemyBody.gameObject);

        script.Initialize(damage, true);
        script.transform.parent = script.transform.parent.parent.parent;
    }
Exemplo n.º 9
0
    public void ShowHud(string _str, Color _color, Action _callBack)
    {
        GameObject go = GameObject.Instantiate <GameObject>(BattleControl.Instance.damageNumResources);

        go.transform.SetParent(transform.parent, false);

        go.transform.position = transform.position;

        DamageNum damageNum = go.GetComponent <DamageNum>();

        damageNum.Init(_str, _color, _callBack);
    }
Exemplo n.º 10
0
    private DamageNum GetDamageNum()
    {
        DamageNum damageNum = null;

        foreach (DamageNum popup in DamageNumList)
        {
            if (popup.IsAvailable())
            {
                damageNum = popup;
                break;
            }
        }
        return(damageNum);
    }
Exemplo n.º 11
0
 public void PopDamageObj(DamageNum obj)
 {
     if (!CheckDamageObj(obj))
     {
         return;
     }
     for (int i = 0; i < damageObj.Count; i++)
     {
         if (damageObj[i].Equals(obj))
         {
             damageObj.RemoveAt(i);
             break;
         }
     }
 }
Exemplo n.º 12
0
    public static void Release(DamageNum damageNum)
    {
        if (damageNum == null)
        {
            Debug.Log("被回收对象是空的,不要忽悠我。");
            return;
        }

        var intPattern = (int)damageNum.pattern;

        if (pools.ContainsKey(intPattern))
        {
            pools[intPattern].Release(damageNum.gameObject);
        }
    }
Exemplo n.º 13
0
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject.tag == "Enemy")
        {
            //Debug.Log("1");
            AttackDamage = Random.Range(minDamage, maxDamage);
            Enemy enemy = other.gameObject.GetComponent <Enemy>();
            if (!enemy.IsAttacked)
            {
                //other.gameObject.GetComponent<Enemy>().TakenDamage(AttackDamage);
                enemy.TakenDamage(AttackDamage);
                DamageNum damagable = Instantiate(damageCanvas, other.transform.position, Quaternion.identity).GetComponent <DamageNum>();
                damagable.ShowUIDamage(Mathf.RoundToInt(AttackDamage));

                #region 击退效果 反向移动 从角色中心店【当前位置】向敌人位置方向【目标点】移动
                Vector2 difference = other.transform.position - transform.position;
                other.transform.position = new Vector2(other.transform.position.x + difference.x, other.transform.position.y + difference.y);
                #endregion
            }
        }
    }
Exemplo n.º 14
0
    public void Heal(bool _bIsPlayer, int _iHeal, Action _onFinished)
    {
        GameObject root = null;

        if (_bIsPlayer)
        {
            root = m_goBattleChara;
        }
        else
        {
            root = m_goBattleEnemy;
        }
        DamageNum script = PrefabManager.Instance.MakeScript <DamageNum>(m_prefHealNum, root);

        //Debug.Log(script.gameObject.transform.localPosition);
        script.gameObject.transform.localPosition = new Vector3(0.0f, -1.5f, -1.5f);

        script.Action(_iHeal, () =>
        {
            _onFinished.Invoke();
        });
    }
Exemplo n.º 15
0
    private void DoDamage(IEnumerator _enumerator, BinaryReader _br)
    {
        KeyValuePair <int, KeyValuePair <int, int>[]> pair = (KeyValuePair <int, KeyValuePair <int, int>[]>)_enumerator.Current;

        KeyValuePair <int, int>[] targets = pair.Value;

        for (int i = 0; i < targets.Length; i++)
        {
            GameObject go = GameObject.Instantiate <GameObject> (Resources.Load <GameObject> ("Attack"));

            go.GetComponent <SpriteRenderer> ().color = Color.black;

            go.transform.SetParent(arrowContainer, false);

            go.transform.localPosition = new Vector3(mapUnitDic [pair.Key].transform.localPosition.x, mapUnitDic [pair.Key].transform.localPosition.y, arrowZFix);

            go.transform.localScale = new Vector3(mapUnitScale, mapUnitScale, mapUnitScale);

            Action <float> delX = delegate(float obj) {
                go.transform.localPosition = new Vector3(obj, go.transform.localPosition.y, go.transform.localPosition.z);
            };

            Action <float> delY = delegate(float obj) {
                go.transform.localPosition = new Vector3(go.transform.localPosition.x, obj, go.transform.localPosition.z);
            };

            Vector3 targetPos = mapUnitDic [targets[i].Key].transform.localPosition;

            go.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2(targetPos.y - go.transform.localPosition.y, targetPos.x - go.transform.localPosition.x) * 180 / Mathf.PI);

            int heroPos = targets[i].Key;

            int damage = targets[i].Value;

            Action over;

            if (i == 0)
            {
                Action doNext = delegate() {
                    DoAttackReal(_enumerator, _br);
                };

                over = delegate() {
                    GameObject.Destroy(go);

                    heroDic [heroPos].SetHp(battle.heroMapDic [heroPos].nowHp);

                    GameObject damageGo = GameObject.Instantiate <GameObject>(Resources.Load <GameObject>("DamageNum"));

                    damageGo.transform.SetParent(arrowContainer, false);

                    damageGo.transform.localPosition = heroDic [heroPos].transform.localPosition;

                    DamageNum damageNum = damageGo.GetComponent <DamageNum>();

                    damageNum.Init(-damage, doNext);

                    RefreshData();

//					SuperTween.Instance.DelayCall(1,doNext);
                };
            }
            else
            {
                over = delegate() {
                    GameObject.Destroy(go);

                    heroDic [heroPos].SetHp(battle.heroMapDic [heroPos].nowHp);

                    GameObject damageGo = GameObject.Instantiate <GameObject>(Resources.Load <GameObject>("DamageNum"));

                    damageGo.transform.SetParent(arrowContainer, false);

                    damageGo.transform.localPosition = heroDic [heroPos].transform.localPosition;

                    DamageNum damageNum = damageGo.GetComponent <DamageNum>();

                    damageNum.Init(-damage, null);
                };
            }

            SuperTween.Instance.To(go.transform.localPosition.x, targetPos.x, 1, delX, over);

            SuperTween.Instance.To(go.transform.localPosition.y, targetPos.y, 1, delY, null);
        }
    }