Exemple #1
0
    //----------------------------------------------------------------------------------------------------
    /// <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);
    }
Exemple #2
0
    //----------------------------------------------------------------------------------------------------
    /// <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;
        }
    }
Exemple #3
0
    //----------------------------------------------------------------------------------------------------
    /// <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);
        }
    }
Exemple #4
0
 //----------------------------------------------------------------------------------------------------
 /// <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;
     }
 }
Exemple #5
0
    //----------------------------------------------------------------------------------------------------
    /// <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;
        }
    }