/// <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); } } }
/// <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); } } }
//炸弹所有人都攻击 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); } }
/// <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); } } }
/* * 伤害计算过程 * 1:伤害对象判定 * 2:伤害数值确定 */ void DoDamage(GameObject g) { Log.Sys("DoDamage: " + g + " runner " + runner); runner.DoDamage(g); }