void Update() { DestoryTime -= Time.deltaTime; if (DestoryTime <= 0) { ObjectPoor.Instance().Delete(transform.gameObject, Vector3.zero, Quaternion.identity); DestoryTime = 3f; } }
public static ObjectPoor Instance() { if (_instance == null) { _instance = new GameObject("ObjectPoor").AddComponent <ObjectPoor>(); PooLList = new Dictionary <string, Queue <GameObject> >(); } return(_instance); }
void Update() { if (Input.GetKeyDown(KeyCode.J)) { ObjectPoor.Instance().Create(prefab, transform.position, Quaternion.identity); } if (Input.GetKeyDown(KeyCode.K)) { ObjectPoor.Instance().Create(cube, transform.position, Quaternion.identity); } }
//如果攻击目标为空 则遍历敌人集合 找到最近的敌人 //如果最近的敌人超出攻击范围,则朝最近的敌人方向移动 //在攻击范围内。攻击 /// <summary> /// 攻击1判定 /// </summary> private void AttackOne(MMORPG_BaseObject_Player entity) { //获取攻击目标 //根据各个英雄攻击距离和攻击方式不同需要分为近战和远战 if (entity.FightObject == null) { entity.GetMinDistancePlayer(); } //float distance = Vector3.Distance(entity.transform.position, entity.FightObject.transform.position); //if (distance > entity.attackDistance) //{ // return; //} if (entity.CheckAttackDistance()) { //攻击范围内 entity.transform.LookAt(entity.FightObject.transform.position); } if (entity.myAnimation["AttackOne"].length > 0.7f) { switch (entity.playerType) { case MMORPG_BaseObject_Player.PlayerType.None: break; case MMORPG_BaseObject_Player.PlayerType.Sword: //近战攻击 //实例化特效 GameObject Effect = Resources.Load <GameObject>("Effect/Sword/Boy_Attack_01"); ObjectPoor.Instance().Create(Effect, entity.attackPos.position, entity.transform.rotation); break; case MMORPG_BaseObject_Player.PlayerType.Magic: //远战攻击 //实例化 弓箭、魔法球 GameObject Magic = Resources.Load <GameObject>("Effect/Magic/MagicAttack01"); if (entity.CheckAttackDistance()) { ObjectPoor.Instance().Create(Magic, entity.attackPos.position, entity.transform.rotation, entity.FightObject); } else { ObjectPoor.Instance().Create(Magic, entity.attackPos.position, entity.transform.rotation); } break; case MMORPG_BaseObject_Player.PlayerType.Assassin: //近战攻击 //实例化特效 break; case MMORPG_BaseObject_Player.PlayerType.Archer: //远战攻击 //实例化 弓箭、魔法球 GameObject Arrow = Resources.Load <GameObject>("Arrow"); GameObject arrow = GameObject.Instantiate(Arrow, entity.transform.position, Quaternion.identity) as GameObject; arrow.GetComponent <MMORPG_PlayerNormalAttack_Arrow>().target = entity.FightObject; break; default: break; } if (entity.CheckAttackDistance()) { //发送伤害消息 MessageDispatcher.Instance.DispatchMessage(0.5f, entity.transform, entity.FightObject.transform, (int)EnumDefine.MessageType.Hurt, EntityManager.Instance.GetEntityFromTransform(entity.transform), 10f, EnumDefine.BuffType.Fire, 100, 10); Debug.Log("<Color=red>远程攻击</Color>"); } } }
/// <summary> /// 攻击2判定 /// </summary> private void AttackTwo(MMORPG_BaseObject_Player entity) { List <GameObject> AttackList = entity.GetAoeAttackEnemy(); if (entity.myAnimation["AttackTwo"].length > 0.5f) { for (int i = 0; i < AttackList.Count; i++) { switch (entity.playerType) { case MMORPG_BaseObject_Player.PlayerType.None: break; case MMORPG_BaseObject_Player.PlayerType.Sword: //近战攻击 //实例化特效 GameObject Effect = Resources.Load <GameObject>("Effect/Sword/Boy_Attack_02"); ObjectPoor.Instance().Create(Effect, entity.attackPos.position, entity.transform.rotation); Debug.Log("生成特校"); break; case MMORPG_BaseObject_Player.PlayerType.Magic: //远战攻击 //实例化 弓箭、魔法球 GameObject Magic = Resources.Load <GameObject>("Effect/Magic/MagicAttack01"); float distance = Vector3.Distance(entity.transform.position, AttackList[i].transform.position); if (distance > entity.attackDistance) { ObjectPoor.Instance().Create(Magic, entity.attackPos.position, entity.transform.rotation, null); } else { ObjectPoor.Instance().Create(Magic, entity.attackPos.position, entity.transform.rotation, AttackList[i]); } break; case MMORPG_BaseObject_Player.PlayerType.Assassin: //近战攻击 //实例化特效 break; case MMORPG_BaseObject_Player.PlayerType.Archer: //远战攻击 //实例化 弓箭、魔法球 GameObject Arrow = Resources.Load <GameObject>("Arrow"); GameObject arrow = GameObject.Instantiate(Arrow, entity.transform.position, Quaternion.identity) as GameObject; arrow.GetComponent <MMORPG_PlayerNormalAttack_Arrow>().target = entity.FightObject; break; default: break; } if (entity.CheckAttackDistance()) { MessageDispatcher.Instance.DispatchMessage(0.5f, entity.transform, AttackList[i].transform, (int)EnumDefine.MessageType.Hurt, EntityManager.Instance.GetEntityFromTransform(entity.transform), 10f, EnumDefine.DeBuffType.Fire, 100, 10); Debug.Log("<Color=red>远程攻击</Color>"); } } } }