//---------------------------------------------------------------------------------------------------- /// <summary> /// 投げる /// </summary> /// <param name="target">ターゲット</param> /// <param name="aura">オーラ</param> public void Throw(GameObject target, AuraAttribute aura) { //使用中 if (m_countTravelTime != -1) { return; } //オーラ switch (aura) { case AuraAttribute.Heat: HeatAuraBall.SetActive(true); break; case AuraAttribute.Elasticity: ElasticityAuraBall.SetActive(true); break; case AuraAttribute.Electrical: ElectricalAuraBall.SetActive(true); break; } m_countTravelTime = 0; m_target = target; m_aura = aura; transform.position = Pitcher.position; }
//---------------------------------------------------------------------------------------------------- /// <summary> /// スペシャルを制御する /// </summary> void ControlSpecials() { //スペシャルの制限を設ける m_isKeepPressingAButton &= (m_isUseSp && !m_isFalling) && !m_isKeepPressingBButton && !m_isKeepPressingXButton; m_isKeepPressingBButton &= (m_isUseSp && !m_isFalling) && !m_isKeepPressingAButton && !m_isKeepPressingXButton; m_isKeepPressingXButton &= (m_isUseSp && !m_isFalling) && !m_isKeepPressingAButton && !m_isKeepPressingBButton; //スペシャル時間 m_countSpTime += (m_isKeepPressingAButton || m_isKeepPressingBButton || m_isKeepPressingXButton) ? Time.deltaTime : (-Time.deltaTime * m_spRecoveryRate); //スペシャル時間の上限下限 if (m_countSpTime > m_spTime) { m_countSpTime = m_spTime; m_isUseSp = false; } if (m_countSpTime < 0) { m_countSpTime = 0; m_isUseSp = true; } //オーラの纏 m_aura = m_isKeepPressingAButton ? AuraAttribute.Heat : m_isKeepPressingBButton ? AuraAttribute.Electrical : m_isKeepPressingXButton ? AuraAttribute.Elasticity : AuraAttribute.Non; WrappingUpAura(m_aura); }
//---------------------------------------------------------------------------------------------------- /// <summary> /// 投げる /// </summary> /// <param name="target">ターゲット</param> /// <param name="aura">オーラ</param> /// <param name="isReduceSpGauge">SPゲージを減らす</param> public void ThrowAuraBall(GameObject target, AuraAttribute aura, bool isReduceSpGauge = true) { //タンクが満タンでない if (GetPercentageOfRemainingSpGauge() < 1f) { return; } //投げる AuraBall.Throw(target, aura); m_countSpTime += isReduceSpGauge ? m_spTime : 0; m_countSpTime = (m_countSpTime > m_spTime ? m_spTime : m_countSpTime); m_isUseSp = false; }
//---------------------------------------------------------------------------------------------------- /// <summary> /// 投げる /// </summary> /// <param name="target">ターゲット</param> /// <param name="aura">オーラ</param> public void ThrowAuraBall(GameObject target, AuraAttribute aura) { //SPゲージが満タンでない if (NetPlayerSetting2.SpGauge < 1f) { return; } //投げる if (hasAuthority) { CmdAuraBall(aura); CmdAuraBallTarget(target); } }
//---------------------------------------------------------------------------------------------------- /// <summary> /// オーラをまとう /// </summary> /// <param name="aura">オーラ</param> public void WrappingUpAura(AuraAttribute aura) { m_aura = aura; //オーラが変わった if (m_aura != m_auraPrev) { //前回のオーラ switch (m_auraPrev) { case AuraAttribute.Heat: HeatAura.SetActive(false); break; case AuraAttribute.Elasticity: ElasticityAura.SetActive(false); break; case AuraAttribute.Electrical: ElectricalAura.SetActive(false); break; } //今回のオーラ switch (aura) { case AuraAttribute.Heat: HeatAura.SetActive(true); MySoundManager.Instance.Play(SeCollection.FlameAura, true, false, transform.position); break; case AuraAttribute.Elasticity: ElasticityAura.SetActive(true); MySoundManager.Instance.Play(SeCollection.LightningAura, true, false, transform.position); break; case AuraAttribute.Electrical: ElectricalAura.SetActive(true); MySoundManager.Instance.Play(SeCollection.EarthAura, true, false, transform.position); break; } m_auraPrev = aura; } }
//---------------------------------------------------------------------------------------------------- /// <summary> /// プレイヤー変数の管理 /// </summary> void ManagingPlayerVariables() { //オーラボール if (IsInfoToThrowAuraBall()) { Player.ThrowAuraBall(m_auraBallTarget, m_auraBall, hasAuthority); //権限のないものが何発も打てないように if (!hasAuthority) { m_auraBallTarget = null; m_auraBall = AuraAttribute.Non; } } //権限を持ったプレイヤーでない if (!hasAuthority) { return; } //オーラ if (Player.Aura != m_aura) { CmdAura(Player.Aura); } //オーラボールの投げる情報ありandSpゲージがリセットする量 if (IsInfoToThrowAuraBall() && (NetPlayerSetting2.SpGauge >= Player.SpRatioToResetAuraBall && NetPlayerSetting2.SpGauge < 1f)) { ResetAuraBall(); } //隕石破壊フラグ if (Player.IsMeteoriteDestruction) { //隕石破壊 Player.IsMeteoriteDestruction = false; CmdMeteoriteDestructionNum(m_meteoriteDestructionNum + 1); } }
void SyncAura(AuraAttribute aura) { m_aura = aura; Player.WrappingUpAura(m_aura); }
void CmdAura(AuraAttribute aura) { m_aura = aura; }
void SyncAuraBall(AuraAttribute aura) { m_auraBall = aura; }
void CmdAuraBall(AuraAttribute aura) { m_auraBall = aura; }