//=====被攻击触发器==== 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); } } }
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); }
//=====被攻击收到伤害===== 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); } } }
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); } } }
private DamageNum AddDamageNum() { GameObject damageNumGameObject = Instantiate(DamageNumPrefab, Vector3.zero, Quaternion.identity, transform); DamageNum damageNumScript = damageNumGameObject.GetComponent <DamageNum>(); DamageNumList.Add(damageNumScript); return(damageNumScript); }
public void AddDamageObj(DamageNum obj, int n) { if (CheckDamageObj(obj)) { return; } obj.damage = n; damageObj.Add(obj); }
public bool CheckDamageObj(DamageNum obj) { for (int i = 0; i < damageObj.Count; i++) { if (damageObj[i].Equals(obj)) { return(true); } } return(false); }
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; }
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); }
private DamageNum GetDamageNum() { DamageNum damageNum = null; foreach (DamageNum popup in DamageNumList) { if (popup.IsAvailable()) { damageNum = popup; break; } } return(damageNum); }
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; } } }
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); } }
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 } } }
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(); }); }
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); } }