Example #1
0
 /// <summary>
 /// 与えられた引数の一つ下に床があるか調べる処理
 /// </summary>
 /// <param name="ver">縦</param>
 /// <param name="side">横</param>
 /// <param name="high">高さ</param>
 /// <returns>True:床が有る/False:床が無い</returns>
 public bool Obj_Ground_Check(int ver, int side, int high, GameObject dice_obj)
 {
     //落下先が埋まるか、配列の範囲外になるまで繰り返す
     for (int pointer = high - 1; pointer >= g_zero_Count; pointer--)
     {
         //同じ親フラグ初期化
         g_same_parent_flag = false;
         //検索先に埋まっているオブジェクトのタイプ取得
         int type = g_game_Con_Script.Get_Obj_Type(ver, side, pointer);
         //検索先がダイスの時、ダイスが検索用ダイスと同じ階層にあるか調べる
         if (type == 100)
         {
             //検索用ダイスの親オブジェクトを取得
             GameObject dice_parent = dice_obj.transform.parent.gameObject;
             //検索先のダイス取得
             GameObject next_dice = g_game_Con_Script.Get_Obj(ver, side, pointer);
             //検索先のダイスの親オブジェクトを取得
             GameObject next_parent = next_dice.transform.parent.gameObject;
             //ダイスが検索用ダイスと同じ階層にあるか調べる
             if (dice_parent == next_parent)
             {
                 //同じならフラグON
                 g_same_parent_flag = true;
             }
         }
         //移動先オブジェクトが空白ではないなら(床があるなら)
         if (type != 0 && !g_same_parent_flag)
         {
             //処理終了
             //床がある状態を返す
             return(true);
         }
     }
     return(false);
 }
Example #2
0
    /// <summary>
    /// ダイスをどれだけ落下させるか調べる処理
    /// </summary>
    private void Fall_Check()
    {
        //最小値初期化
        g_min_counter = g_min_Start;

        //ダイスの個数分だけ処理を繰り返す
        for (int dice_count = g_zero_Count; dice_count < g_work_dices.Length; dice_count++)
        {
            g_fall_counter = g_zero_Count;
            //ダイスのスクリプト取得
            g_child_Script = g_work_dices[dice_count].GetComponent <Dice_Squares>();
            //ダイスの現在位置取得
            (g_dice_ver, g_dice_side, g_dice_high) = g_child_Script.Get_Dice_Pointer();

            //落下先が埋まるか、配列の範囲外になるまで繰り返す
            for (int pointer = g_dice_high - 1; pointer >= g_zero_Count; pointer--)
            {
                //同じ親フラグ初期化
                g_same_parent_flag = false;
                //検索先に埋まっているオブジェクトのタイプ取得
                int type = g_game_Con_Script.Get_Obj_Type(g_dice_ver, g_dice_side, pointer);
                //検索先がダイスの時、ダイスが検索用ダイスと同じ階層にあるか調べる
                if (type >= 100)
                {
                    //検索用ダイスの親オブジェクトを取得
                    GameObject dice_parent = g_work_dices[dice_count].transform.parent.gameObject;
                    //検索先のダイス取得
                    GameObject next_dice = g_game_Con_Script.Get_Obj(g_dice_ver, g_dice_side, pointer);
                    //検索先のダイスの親オブジェクトを取得
                    GameObject next_parent = next_dice.transform.parent.gameObject;
                    //ダイスが検索用ダイスと同じ階層にあるか調べる
                    if (dice_parent == next_parent)
                    {
                        //同じならフラグON
                        g_same_parent_flag = true;
                    }
                }
                //移動先オブジェクトが空白ではないなら(床があるなら)
                if (type != 0 && !g_same_parent_flag)
                {
                    //処理終了
                    break;
                }
                //検索先の移動回数+1
                g_fall_counter++;
            }

            //移動回数が最小値より小さいなら
            if (g_fall_counter < g_min_counter)
            {
                //最小値上書き
                g_min_counter = g_fall_counter;
            }
        }
    }
Example #3
0
    public void Dice_Push()
    {
        if (g_play_con_Script.Get_MoveFlag())
        {
            return;
        }
        //プレイヤーが現在向いている方向を取得
        int direction_para = g_direction_Script.Get_Player_Direction();

        //プレイヤーの現在のポインター取得
        (g_player_ver, g_player_side, g_player_high) = g_play_con_Script.Get_Player_Pointer();
        //検索する向きに応じて処理を変える
        switch (direction_para)
        {
        //縦プラス方向
        case g_ver_plus_Para:
            g_player_ver = g_player_ver + 1;
            break;

        //縦マイナス方向
        case g_ver_minus_Para:
            g_player_ver = g_player_ver - 1;
            break;

        //横プラス方向
        case g_side_plus_Para:
            g_player_side = g_player_side + 1;
            break;

        //横マイナス方向
        case g_side_minus_Para:
            g_player_side = g_player_side - 1;
            break;
        }
        //検索先に格納されているオブジェクトのタイプ
        int type = g_game_con_Script.Get_Obj_Type(g_player_ver, g_player_side, g_player_high);

        //取得したオブジェクトのタイプに応じて処理
        //ダイスの時
        //ダイスを移動させる
        if (type >= 100)
        {
            //Debug.Log("ダイスを押す");
            //操作対象のダイスを取得
            GameObject dice_obj = g_game_con_Script.Get_Obj(g_player_ver, g_player_side, g_player_high);
            //取得したダイスを中心に回転させる
            g_dice_con_Script.Storage_Control_Obj(dice_obj, direction_para);
        }
    }
Example #4
0
    /// <summary>
    /// 指定した位置に格納されているオブジェクトのタイプを取得する
    /// </summary>
    /// <param name="this_ver">縦</param>
    /// <param name="this_side">横</param>
    /// <param name="this_high">高さ</param>
    private void Check_Type(int this_ver, int this_side, int this_high, int change_para)
    {
        //タイプ取得
        int type = g_game_Con_Script.Get_Obj_Type(this_ver, this_side, this_high);

        //取得したタイプがサイコロだった時
        if (type >= 100)
        {
            //接触された側のオブジェクトを取得
            g_next_dice_Obj = g_game_Con_Script.Get_Obj(this_ver, this_side, this_high);
            //接触された側のスクリプトを取得
            g_next_dice_Script = g_next_dice_Obj.GetComponent <Dice_Squares>();
            //移動側の接触面のパラメータを保持
            g_adhesive_para = change_para;
            //接触面を調べてくっつくか調べる
            Docking_Check();
        }
    }