示例#1
0
    /// <summary>
    /// 当たった瞬間の処理
    /// </summary>
    /// <param name="OtherCollider">当たった対象のコライダー</param>
    //void OnCollisionEnter(Collision OtherCollider){
    void OnControllerColliderHit(ControllerColliderHit OtherCollider)
    {
        //設定したタグとぶつかった場合くっつける
        if (OtherCollider.gameObject.CompareTag(m_StickTagName))
        {
            KatamariStatus      MyKatamariStatus = GetComponent <KatamariStatus>();                                                             //塊のステータス
            CharacterController MayCharaCon      = GetComponent <CharacterController>();                                                        //自分のキャラコン

            GameObject   OtherObject      = OtherCollider.gameObject;
            SpiritStatus OtherSpritStatus = OtherCollider.gameObject.GetComponent <SpiritStatus>();                                             //スピリットのステータス

            //塊よりくっつけるものが大きい場合
            if (MyKatamariStatus.KatamariSize < OtherSpritStatus.m_Size)
            {
                return;
            }

            //Rigidbodyを親だけにしたいのでくっ付けるオブジェクトのRigidbodyを消す
            Destroy(OtherObject.GetComponent <Rigidbody>());

            //相手の親を自分にする
            OtherObject.transform.parent = m_StickSpiritList.transform;

            //くっつけたオブジェクトのタグとレイヤーを変更する
            OtherObject.layer = LayerMask.NameToLayer("Katamari");
            OtherObject.tag   = "Player";

            //塊の最適化をスタートさせる
            OtherObject.GetComponent <SpiritOptimaize>().OptimaizeTime = 0.0f;
            OtherObject.GetComponent <SpiritOptimaize>().StartOptimaize(MayCharaCon.radius);

            //くっつけるオブジェクトが塊の凹凸に影響を与えるか
            //if(!OtherSpritStatus.m_Convex) OtherCollider.collider.enabled = false;	//与えない場合当たり判定を消す

            //塊が大きくなった分当たり判定を大きく
            MyKatamariStatus.KatamariSize += OtherSpritStatus.m_Size * 0.1f;
            MayCharaCon.radius             = (int)MyKatamariStatus.KatamariSize / 1 * 0.1f + 0.1f;

            //塊のサイズが1の倍数になったらエフェクトをだす
            if (m_OldKatamariSize % 1 + (MyKatamariStatus.KatamariSize - m_OldKatamariSize) % 1 >= 1.0f)
            {
                m_GlitterEffect.SendMessage("StartGlitter");
            }

            //古い大きさとして保存しておく
            m_OldKatamariSize = MyKatamariStatus.KatamariSize;

            //カメラの距離を変える
            m_CameraController.ChangeOffset((int)MyKatamariStatus.KatamariSize);

            SoundManager.Instance.PlaySE("cling");
        }
    }
示例#2
0
 /// <summary>
 /// 初期化
 /// </summary>
 void Start()
 {
     m_KatamariSize = GameObject.Find("Player").GetComponent <KatamariStatus>();
     m_fOldSize     = m_KatamariSize.m_Size;
     Effect         = GetComponent <ParticleSystem>();
 }
    KatamariStatus m_KatamariSize;   //現在の塊サイズ取得用

    /// <summary>
    /// 初期化
    /// </summary>
    void Start()
    {
        //塊ステータス取得
        m_KatamariSize = GameObject.Find("Player").GetComponent <KatamariStatus>();
        m_fOldSize     = m_KatamariSize.m_Size;
    }
示例#4
0
    KatamariStatus KatamariSize;                   //塊のサイズ


    /// <summary>
    /// スタート関数
    /// </summary>
    void Start()
    {
        PlayerDirection = GetComponent <PlayerMove>();
        KatamariSize    = GetComponent <KatamariStatus>();
    }