コード例 #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
 void Start()
 {
     m_Size = GetComponent <SpiritStatus>();
 }
コード例 #3
0
ファイル: MobAction.cs プロジェクト: kimch2/SphereRaceProject
 // Use this for initialization
 void Start()
 {
     StartPos      = transform.position;
     Gimmick_State = Action.WAIT;
     Size          = GetComponent <SpiritStatus>();
 }