/// <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"); } }
/// <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; }
KatamariStatus KatamariSize; //塊のサイズ /// <summary> /// スタート関数 /// </summary> void Start() { PlayerDirection = GetComponent <PlayerMove>(); KatamariSize = GetComponent <KatamariStatus>(); }