コード例 #1
0
    /// <summary>
    /// コライダ衝突時のイベント
    /// </summary>
    /// <param name="collision">衝突対象</param>
    private void OnCollisionEnter(Collision collision)
    {
        // マグネット以外は処理対象外
        if (collision.transform.tag != GameUtil.Const.TAG_MAGNET)
        {
            return;
        }

        // 衝突対象のマグネを取得
        MagnetController colMagController = collision.transform.GetComponent <MagnetController>();

        // 衝突対象が落下状態で、自身がタワー(マグネット)状態の場合
        if (status == State.TOWER_MG && colMagController.status == State.DROP)
        {
            // マグネ結合処理
            if (GetComponent <Magnet>().attract)
            {
                // 落下マグネの高さ以外の位置・回転を合わせる
                collision.transform.GetComponent <Rigidbody>().velocity = Vector3.zero;
                collision.transform.rotation = Quaternion.Euler(0.0f, transform.localEulerAngles.y % 360.0f - 180.0f, 0.0f);

                // タワー(非マグネット)状態に遷移
                colMagController.status = State.TOWER_MG;
                collision.transform.GetComponent <Magnet>().enable         = true;
                collision.transform.GetComponent <Rigidbody>().isKinematic = true;
                // 自身のマグネットを無効化
                status = State.TOWER;
                GetComponent <Magnet>().enable = false;
                // カメラターゲットを変更
                cameraController.SetLookTarget(collision.gameObject);
                // スコアを加算する
                gameSceneManager.AddScore();
            }
        }
    }