using Adon.Game.BO; using Adon.Game.Helper; using AdonGameKit; using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 怪物陷阱 /// public class MonsterTrapBullet : MonoBehaviour { public float m_AttackAngle = 360;//攻击角度 public float m_AttackSight = 0.8f;//攻击范围 public string m_SkillID; private BaseMonsterAdon m_BaseMonsterAdon; bool isFire; float fireIntervalsTimer; float m_FireIntervalsTime = 1; float fireLifeTimer; float fireLife = 4; // Start is called before the first frame update void Start() { fireIntervalsTimer = m_FireIntervalsTime; } // Update is called once per frame void Update() { //先检测玩家是否进入范围 ///检测范围内的英雄 if (PlayerHelperAdon.GetNearEnemyHero(m_AttackSight, m_AttackAngle, gameObject) != null) { isFire = true; } else { isFire = false; } //if (m_BaseMonsterAdon.time == null) //{ // return; //} fireLifeTimer += m_BaseMonsterAdon.time.deltaTime; if (fireLifeTimer >= fireLife) isFire = false; if (isFire) { //计时,周期发送伤害 if (fireIntervalsTimer >= m_FireIntervalsTime) { fireIntervalsTimer = 0; ///检测范围内的英雄 List heros = PlayerHelperAdon.GetNearEnemyHero(m_AttackSight, m_AttackAngle, gameObject); for (int i = 0; i < heros.Count; i++) { BaseHero component = heros[i].GetComponent(); //发送战斗信息,等待后台处理逻辑返回数据 //X2Battle.X2BattleManager.Instance.mBulletModel.OnCastSkill( // m_BaseMonsterAdon.mData.UID, m_SkillID, // false, X2Battle.EBulletCastPoint.ECAST_POINT_DEFLUAT, component.mData.UID, false); BulletMessage.catSkillFun(m_BaseMonsterAdon.mData.UID, m_SkillID, false, (int)X2Battle.EBulletCastPoint.ECAST_POINT_DEFLUAT, component.mData.UID, false); //实例化克隆爆炸光效 //Transform effobj = Instantiate(m_BombEff); //effobj.position = monster.m_HitObj.position;//设置爆炸位置 //effobj.gameObject.SetActive(true); } } fireIntervalsTimer += m_BaseMonsterAdon.time.deltaTime; } } public void SetMonster(BaseMonsterAdon monster) { m_BaseMonsterAdon = monster; } #if UNITY_EDITOR /// /// 绘制打击配置 /// private void OnDrawGizmosSelected() { Vector3 forward = transform.forward; UnityEditor.Handles.color = new Color(1.0f, 0.0f, 0.0f, 0.1f); Vector3 rotatedForward = Quaternion.Euler(0, -m_AttackAngle * 0.5f, 0) * transform.forward; UnityEditor.Handles.DrawSolidArc(transform.position, Vector3.up, rotatedForward, m_AttackAngle, m_AttackSight); } #endif }