123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using Adon.Game.BO;
- using Adon.Game.Helper;
- using AdonGameKit;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- /// <summary>
- /// 怪物陷阱
- /// </summary>
- 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<GameObject> heros = PlayerHelperAdon.GetNearEnemyHero(m_AttackSight, m_AttackAngle, gameObject);
- for (int i = 0; i < heros.Count; i++)
- {
- BaseHero component = heros[i].GetComponent<BaseHero>();
- //发送战斗信息,等待后台处理逻辑返回数据
- //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
- /// <summary>
- /// 绘制打击配置
- /// </summary>
- 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
- }
|