Esempio n. 1
0
        /// <summary>
        ///子弹伤害计算也交给skillLayoutRunner执行
        /// </summary>
        /// <param name="other">Other.</param>
        private void DoDamage(Collider other)
        {
            var oattr = NetworkUtil.GetAttr(other.gameObject);

            if (oattr != null && SkillLogic.IsEnemyForBullet(attacker, oattr.gameObject) && !missileData.DontHurtObject)
            {
                //MakeSound();
                if (runner != null)
                {
                    runner.DoDamage(oattr.gameObject);
                }
            }
        }
Esempio n. 2
0
 /// <summary>
 ///子弹伤害计算也交给skillLayoutRunner执行
 /// </summary>
 /// <param name="other">Other.</param>
 void DoDamage(Collider other)
 {
     if (SkillLogic.IsEnemy(runner.stateMachine.attacker, other.gameObject))
     {
         var skillData = runner.stateMachine.skillFullData.skillData;
         if (!string.IsNullOrEmpty(skillData.HitSound))
         {
             BackgroundSound.Instance.PlayEffect(skillData.HitSound);
         }
         if (runner != null)
         {
             runner.DoDamage(other.gameObject);
         }
     }
 }
Esempio n. 3
0
        //炸弹所有人都攻击
        void DoDamage(Collider other)
        {
            var tarPos = other.transform.position + new Vector3(0, 1, 0);
            var mePos  = transform.position + new Vector3(0, 0.1f, 0);
            var dir    = tarPos - mePos;

            dir.Normalize();
            RaycastHit hitInfo;
            var        hit = Physics.Raycast(mePos, dir, out hitInfo, bombData.AOERadius, SkillDamageCaculate.GetBlockerLayer());

            Log.Sys("TestBlock: " + mePos + " dir " + dir + " tarpos " + tarPos + " radius " + bombData.AOERadius + " hit " + hit + " hitInfo " + hitInfo);

            //障碍物阻挡无法攻击目标
            if (hit)
            {
                var hitObj = hitInfo.collider.gameObject;
                Log.Sys("Block HitObjIs: " + hitObj + " other " + other.gameObject);
                if (hitObj != other.gameObject)
                {
                    Log.Sys("Bomb Block Hit: " + hitObj + " other " + other.gameObject);
                    return;
                }
            }

            if (!string.IsNullOrEmpty(skillData.HitSound))
            {
                BackgroundSound.Instance.PlayEffect(skillData.HitSound);
            }


            var attr = other.GetComponent <NpcAttribute>();

            if (attr == null)
            {
                attr = other.GetComponentInParent <NpcAttribute>();
            }

            if (runner != null && attr != null)
            {
                runner.DoDamage(attr.gameObject);
            }
        }
Esempio n. 4
0
        /// <summary>
        ///子弹伤害计算也交给skillLayoutRunner执行
        /// </summary>
        /// <param name="other">Other.</param>
        void DoDamage(Collider other)
        {
            var oattr = other.GetComponent <NpcAttribute>();

            if (oattr == null)
            {
                oattr = other.transform.parent.GetComponent <NpcAttribute>();
            }

            if (SkillLogic.IsEnemyForBullet(attacker, oattr.gameObject) && !missileData.DontHurtObject)
            {
                if (!string.IsNullOrEmpty(skillData.HitSound))
                {
                    BackgroundSound.Instance.PlayEffect(skillData.HitSound);
                }
                if (runner != null)
                {
                    runner.DoDamage(oattr.gameObject);
                }
            }
        }
Esempio n. 5
0
 /*
  * 伤害计算过程
  *  1:伤害对象判定
  *  2:伤害数值确定
  */
 void DoDamage(GameObject g)
 {
     Log.Sys("DoDamage: " + g + " runner " + runner);
     runner.DoDamage(g);
 }