//---------------------------------------------------------------------------------------------------- /// <summary> /// 落下の開始 /// </summary> /// <param name="reason">理由</param> public void StartOfFall(ReasonForFalling reason) { //理由 switch (reason) { case ReasonForFalling.WaterRunsOut: ReasonForFallingImage.sprite = ReasonForFallings[0]; break; case ReasonForFalling.CollisionWithPlayers: ReasonForFallingImage.sprite = ReasonForFallings[1]; break; case ReasonForFalling.Thunderbolt: ReasonForFallingImage.sprite = ReasonForFallings[2]; StartThunder(); break; case ReasonForFalling.Meteorite: ReasonForFallingImage.sprite = ReasonForFallings[3]; break; case ReasonForFalling.AuraBall: ReasonForFallingImage.sprite = ReasonForFallings[4]; break; } Falling.SetActive(true); }
//---------------------------------------------------------------------------------------------------- /// <summary> /// 重なり始め判定 /// </summary> /// <param name="other">重なったもの</param> void OnTriggerEnter(Collider other) { //オーラボール if (other.transform.IsChildOf(AuraBall.transform)) { return; } //重なったもののタグ switch (other.transform.tag) { case ItemInfo.TAG: //枚数増加 m_numOfCoins++; break; case StageInfo.THUNDER_TAG: //被雷 if (m_aura != AuraAttribute.Electrical) { m_isFalling = true; m_reasonForFalling = ReasonForFalling.Thunderbolt; } break; case AuraInfo.HEAT_TAG: //温熱オーラ if (m_aura == AuraAttribute.Elasticity || m_aura == AuraAttribute.Non) { m_isFalling = true; m_reasonForFalling = ReasonForFalling.AuraBall; } break; case AuraInfo.ELASTICITY_TAG: //弾性オーラ if (m_aura == AuraAttribute.Electrical || m_aura == AuraAttribute.Non) { m_isFalling = true; m_reasonForFalling = ReasonForFalling.AuraBall; } break; case AuraInfo.ELECTRICAL_TAG: //電気オーラ if (m_aura == AuraAttribute.Heat || m_aura == AuraAttribute.Non) { m_isFalling = true; m_reasonForFalling = ReasonForFalling.AuraBall; } break; } }
//---------------------------------------------------------------------------------------------------- /// <summary> /// ジェットを調べる /// </summary> void ExamineJet() { //スペシャルの制御 ControlSpecials(); //飛んでいるand落下していない if (m_isFly && !m_isFalling) { //ジェットの上昇(加速含む)・下降・滞在(加速含む)によってジェットの燃料が減る if (m_isKeepPressingRButton) { m_countJetUseTime += Time.deltaTime * m_consumptionRateAtJetAcceleration * (m_aura == AuraAttribute.Heat ? m_variableMagnificationByAura : 1); } else if (m_isKeepPressingLButton) { m_countJetUseTime += Time.deltaTime * m_consumptionRateAtJetDeceleration; } else { m_countJetUseTime += Time.deltaTime * (m_horizontalTravelDistance != Vector3.zero && m_aura == AuraAttribute.Heat ? m_variableMagnificationByAura : 1); } //オーラによる回復 if (m_aura == AuraAttribute.Elasticity) { m_countJetUseTime = Mathf.Max(0f, m_countJetUseTime - Time.deltaTime * m_variableMagnificationByAura); } } else if (!m_isFalling) { //地面の上 m_countJetUseTime = 0; } //ジェットの燃料切れ if (m_countJetUseTime > m_jetUseTime) { m_isFalling = true; m_reasonForFalling = ReasonForFalling.WaterRunsOut; m_countJetUseTime = m_jetUseTime; } //水の残量 foreach (var gauge in WaterGauges) { gauge.localScale = Vector3.Scale(gauge.localScale, Vector3.right + Vector3.up) + Vector3.forward * ((m_jetUseTime - m_countJetUseTime) / m_jetUseTime); } }
//---------------------------------------------------------------------------------------------------- /// <summary> /// 隕石の当たり判定 /// </summary> void MeteoriteCollisionEnter() { //加速移動していない if (!(m_aura == AuraAttribute.Heat && (m_horizontalTravelDistance != Vector3.zero || m_isKeepPressingRButton))) { m_isFalling = true; m_reasonForFalling = ReasonForFalling.Meteorite; } else { //隕石の破壊 m_isMeteoriteDestruction = true; } }
//---------------------------------------------------------------------------------------------------- /// <summary> /// プレイヤーの当たり判定 /// </summary> /// <param name="other">当たったもの</param> void PlayerCollisionEnter(Collision other) { //落下中andプレイヤークラス所持 if (m_isFalling && other.gameObject.GetComponent <MyPlayer>() != null) { AuraBall.SetHitPlayerName(other.gameObject.GetComponent <MyPlayer>().m_name); return; } //加速移動していないor落下中プレイヤー if (!(m_aura == AuraAttribute.Heat && (m_horizontalTravelDistance != Vector3.zero || m_isKeepPressingRButton)) || (other.gameObject.GetComponent <MyNetPlayerSetting>() && other.gameObject.GetComponent <MyNetPlayerSetting>().State == PlayerBehaviorStatus.Falling)) { m_isFalling = true; m_reasonForFalling = ReasonForFalling.CollisionWithPlayers; } }