//【特殊武器】使用后(武器)硬直计时 IEnumerator SpecialGunShowTiming() { float specialGunShowTiming = 0; while (true) { specialGunShowTiming += Time.deltaTime; if (specialGunShowTiming >= 0.3f) { break; } yield return(0); } //更新当前使用左/右手 m_CurrentUseGunis = UseLeftOrRightGun.LeftGun; //【特殊武器】使用完之后(主武器显示,特殊武器消失) //计时结束,消失特殊武器,展现主武器 //特殊武器关闭(开启使用)【关闭Renderer进行显示,关闭(开启可用)Enable】 AllGunCDic[RightGunType].IfGunCanUse(false); AllGunCDic[RightGunType].SpriteRendererEnabled = false; AllGunDic[RightGunType].GetComponent <BoxCollider2D>().enabled = false; //主武器可用【开启Renderer进行显示,开启(开启可用)Enable】 AllGunCDic[LeftGunType[m_CurrentLeftGunIndex]].SpriteRendererEnabled = true; AllGunCDic[LeftGunType[m_CurrentLeftGunIndex]].IfGunCanUse(true); AllGunDic[LeftGunType[m_CurrentLeftGunIndex]].GetComponent <BoxCollider2D>().enabled = true; }
/// <summary> /// 创建子弹 /// </summary> /// <param name="ButtleName">子弹名字</param> /// <param name="Pos">子弹初始位置</param> /// <param name="Rotate">子弹初始旋转</param> /// <param name="Scatte">散射度数</param> /// <param name="ButtleSpeed">子弹速度</param> /// <param name="AttackDistance">子弹飞行距离</param> /// <param name="DemageNums">子弹伤害</param> private void CreateBullet(string ButtleName, Vector3 Pos, Vector3 Rotate, float Scatte, uint ButtleSpeed, float AttackDistance, float DemageNums) { //生成子弹(调整位置与角度) //【判断当前使用左/右手】 GunType currentGunType = m_CurrentLeftGunType; switch (m_CurrentUseGunis) { case UseLeftOrRightGun.LeftGun: currentGunType = m_CurrentLeftGunType; break; case UseLeftOrRightGun.RightGun: currentGunType = RightGunType; break; } //【判断当前是否核心攻击】 string currentBulletName = "Bullet/" + currentGunType + "/" + ButtleName; CoreAttribute currentCoreAttribute = CoreAttribute.Initial; if (m_CurrentBaseCore != null) { switch (m_CurrentBaseCore.Element) { case BaseCore.CoreElement.Primary: currentBulletName = "Bullet/Core/Initial/" + m_CoreBullet[0].name; currentCoreAttribute = CoreAttribute.Initial; break; case BaseCore.CoreElement.Fire: currentBulletName = "Bullet/Core/Fire/" + m_CoreBullet[1].name; currentCoreAttribute = CoreAttribute.Fire; break; case BaseCore.CoreElement.Amethyst: currentBulletName = "Bullet/Core/Amethyst/" + m_CoreBullet[2].name; currentCoreAttribute = CoreAttribute.Amethyst; break; case BaseCore.CoreElement.Ice: currentBulletName = "Bullet/Core/Frozen/" + m_CoreBullet[3].name; currentCoreAttribute = CoreAttribute.Frozen; break; } } //currentBulletName = ButtleName;//敌人子弹测试 GameObject buttleGameObject = ObjectPool.Instance.Spawn(currentBulletName); buttleGameObject.transform.position = Pos; buttleGameObject.transform.rotation = Quaternion.Euler( Rotate + new Vector3(0, 0, Scatte)); //子弹数据填充 Bullet buttle = buttleGameObject.GetComponent <Bullet>(); float currentDeamge = DemageNums * m_CurrentButtleDemagePercent;//伤害比例加成 buttle.BulletStart(ButtleSpeed, AttackDistance, currentDeamge, AllGunCDic[currentGunType].Gun_Data.HardStraight, AllGunCDic[currentGunType].Gun_Data.BeatBack, currentGunType.ToString(), currentCoreAttribute); //更新当前使用左/右手 m_CurrentUseGunis = UseLeftOrRightGun.LeftGun; //当前为火箭系统 if (m_RocketGunState) { UseRocketGun(true); } }
/// <summary> /// -------------------------------------------------------------------------------------------------------------------important!!! /// 特殊武器使用时,状态检测 /// 判断当前特殊武器是否可以射击 /// 1、特殊武器,判断是否是消耗Mp为不是Hp /// </summary> /// <returns>是否可以射击</returns> public bool SpecialGunCheckOut() { //判断特殊武器是否违背Hp不可用原则 //【并且更新特殊武器GunSpecialEnable】 bool ifSpecialGunCanUse;//特殊武器是否可以用 MpAndHpListener(out ifSpecialGunCanUse); //如果特殊武器可以用【开启Renderer进行显示】 if (ifSpecialGunCanUse) { //特殊武器可以用【开启Renderer进行显示,开启(开启可用)Enable】 AllGunCDic[RightGunType].SpriteRendererEnabled = true; AllGunCDic[RightGunType].IfGunCanUse(true); AllGunDic[RightGunType].GetComponent <BoxCollider2D>().enabled = true; //主武器不可用【关闭Renderer进行显示,关闭(开启可用)Enable】 AllGunCDic[LeftGunType[m_CurrentLeftGunIndex]].SpriteRendererEnabled = false; AllGunCDic[LeftGunType[m_CurrentLeftGunIndex]].IfGunCanUse(false); AllGunDic[LeftGunType[m_CurrentLeftGunIndex]].GetComponent <BoxCollider2D>().enabled = false; } else//特殊武器不能用 { return(false); } //--------------------------------------------------- //【特殊武器可以用情况下】 //当前使用的是右手(特殊武器) m_CurrentUseGunis = UseLeftOrRightGun.RightGun; //判断当前特殊武器种类 switch (RightGunType) { //以下等待攻击结束才切回主武器 case GunType.AK47Gun: break; case GunType.Sword: break; case GunType.Hammer: break; case GunType.RocketGun: break; //---------------------------- //todo 以下会自身【硬直】0.3s才切回主武器 case GunType.RevolverGun: StartCoroutine(SpecialGunShowTiming()); break; case GunType.ShotGun: StartCoroutine(SpecialGunShowTiming()); break; case GunType.AWMGun: StartCoroutine(SpecialGunShowTiming()); break; } return(true); }