コード例 #1
0
 /// <summary>
 /// 操作中のダイスを移動先に格納する
 /// </summary>
 private void Dice_Storage()
 {
     //ダイスの個数分だけ処理を繰り返す
     for (int dice_count = g_zero_Count; dice_count < g_work_dices.Length; dice_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();
         //現在の位置―移動回数をして移動先の高さを計算
         int fall_high = g_dice_high - g_min_counter;
         //ダイス格納
         g_game_Con_Script.Storage_Obj(g_dice_ver, g_dice_side, fall_high, g_work_dices[dice_count]);
         //ダイスのタイプ格納
         g_game_Con_Script.Storage_Obj_Type(g_dice_ver, g_dice_side, fall_high, 100);
         //格納先のポジション取得
         Vector3 dice_pos = g_game_Con_Script.Get_Pos(g_dice_ver, g_dice_side, fall_high);
         //ダイス移動
         g_work_dices[dice_count].transform.position = dice_pos;
         //子オブジェクトが保持している指標を更新する
         g_child_Script.Storage_This_Index(g_dice_ver, g_dice_side, fall_high);
         //全方位を調べて、くっつくダイスがあるか調べる
         g_child_Script.All_Check();
     }
 }
コード例 #2
0
    /// <summary>
    /// 移動前を空にして移動先にオブジェクトとタイプを格納する処理
    /// </summary>
    /// <param name="ver">縦</param>
    /// <param name="side">横</param>
    /// <param name="high">高さ</param>
    /// <param name="pointer">子オブジェクト配列の指標</param>
    public void Reset_And_Storage_Obj()
    {
        //動かすダイスの個数分繰り返す
        for (int child_pointer = g_zero_Count; child_pointer < g_work_children.Length; child_pointer++)
        {
            //ダイスのスクリプト取得
            g_child_Script = g_work_children[child_pointer].GetComponent <Dice_Squares>();
            //移動前の位置を取得
            (g_child_Ver, g_child_Side, g_child_High) = g_check_Script.Get_Before_Pointer();
            //移動先の位置を取得
            (g_next_ver, g_next_side, g_next_high) = g_check_Script.Get_After_Pointer();

            //元々格納されていたオブジェクトを空にする
            g_game_Con_Script.Storage_Reset(g_child_Ver, g_child_Side, g_child_High);
            //子オブジェクトを回転に格納
            g_game_Con_Script.Storage_Obj(g_next_ver, g_next_side, g_next_high, g_work_children[child_pointer]);
            //タイプを回転先に格納
            g_game_Con_Script.Storage_Obj_Type(g_next_ver, g_next_side, g_next_high, 100);
            //移動先のポジション取得
            Vector3 pos = g_game_Con_Script.Get_Pos(g_next_ver, g_next_side, g_next_high);
            //ポジション移動
            g_work_children[child_pointer].transform.position = pos;
            //子オブジェクトが保持している指標を更新する
            g_child_Script.Storage_This_Index(g_next_ver, g_next_side, g_next_high);
            //サイコロのマス目を変更
            g_child_Script.Change_Squares(g_now_para);
            //ダイスの全方向を調べて、くっつくダイスがあるか調べる
            g_child_Script.All_Check();
        }
        //ダイス落下処理
        g_dice_fall_Script.All_Dice_Fall(g_work_children, g_center_Dice);
    }
コード例 #3
0
ファイル: Player_Move.cs プロジェクト: sakurai-desu/DiceGame
    /// <summary>
    /// 指定したパラメータと位置に応じてプレイヤーを移動させる
    /// </summary>
    /// <param name="ver">縦</param>
    /// <param name="side">横</param>
    /// <param name="high">高さ</param>
    /// <param name="para">移動方向パラメータ</param>
    public void PlayerMove(int para)
    {
        if (g_play_con_Script.Get_MoveFlag())
        {
            return;
        }
        //プレイヤーの現在のポインター取得
        (g_player_ver, g_player_side, g_player_high) = g_play_con_Script.Get_Player_Pointer();
        //移動前のプレイヤーの向きを取得(ジャンプ判定用)
        int before_direction = g_direction_Script.Get_Player_Direction();

        //プレイヤーオブジェクトの向きをパラメータに応じて変更する
        g_direction_Script.Player_Direction_Change(para);
        //移動後のプレイヤーの向きを取得(ジャンプ判定用)
        int after_direction = g_direction_Script.Get_Player_Direction();

        //移動する向きに応じて処理を変える
        switch (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;
        }
        //移動が可能か調べる
        g_is_move = Move_Check(g_player_ver, g_player_side, g_player_high);
        //移動不可状態なら
        if (!g_is_move)
        {
            //移動処理中止
            return;
        }
        //移動先に格納されているオブジェクトのタイプ
        int type = g_game_con_Script.Get_Obj_Type(g_player_ver, g_player_side, g_player_high);

        //取得したオブジェクトのタイプに応じて処理
        //空白の時
        //プレイヤーを移動させる
        if (type == 0)
        {
            //落下可能か調べる
            g_is_move = Fall_Check(g_player_ver, g_player_side, g_player_high);
            //落下不可能の時
            if (!g_is_move)
            {
                //移動処理中止
                return;
            }
            //移動先が今と同じ高さなら
            if (g_player_high - g_check_high == 0)
            {
                //移動アニメーション再生
                g_anim_Script.Player_Move_Anim();
            }
            //移動先が自分のいる場所より低い位置なら
            else if (g_player_high - g_check_high != 0)
            {
                //落下モーションを再生
                g_anim_Script.Player_Jump_Anim();
            }
            //移動先の高さの指標を変更する
            g_player_high = g_check_high;

            //移動先のポジション取得
            Vector3 get_pos = g_game_con_Script.Get_Pos(g_player_ver, g_player_side, g_player_high);
            //取得した位置にプレイヤーを移動させる
            g_appearance_move_Script.Player_Move(get_pos);
            //プレイヤーの現在地を更新する
            g_play_con_Script.Storage_Player_Pointer(g_player_ver, g_player_side, g_player_high);
        }
        //移動先が移動前の向いている方向と同じなら
        //ジャンプするか調べる
        else if (before_direction == after_direction)
        {
            //ジャンプできるか調べる
            //条件を満たせばジャンプさせる
            Jump();
        }
    }
コード例 #4
0
ファイル: Undo_Script.cs プロジェクト: sakurai-desu/DiceGame
    /// <summary>
    /// 保持している情報をもとに一手前の状態に戻す
    /// </summary>
    public void Undo_Play()
    {
        if (!g_is_undo)
        {
            return;
        }
        if (g_player_con_Script.Get_MoveFlag())
        {
            return;
        }
        g_is_undo = false;
        //プレイヤーの移動先取得
        Vector3 _player_pos = g_game_con_Script.Get_Pos(g_player_ver, g_player_side, g_player_high);

        //プレイヤー移動
        g_player_obj.transform.position = _player_pos;
        //プレイヤーの保持する指標変更
        g_player_con_Script.Storage_Player_Pointer(g_player_ver, g_player_side, g_player_high);
        //プレイヤーの向きを変更
        g_direction_Script.Player_Direction_Change(g_player_direction);

        //ダイス配列用の指標
        int _dice_pointer = 0;
        //縦・横・高さ配列用の指標
        int _point_pointer = 0;

        //保持している親の数分繰り返す
        for (int i = 0; i < g_undo_parents.Length; i++)
        {
            //親オブジェクト取得
            GameObject _work_parent = g_undo_parents[i];
            //親の子オブジェクトの数取得
            int _work_count = g_undo_dice_counters[i];

            //子オブジェクトの数分繰り返す
            for (int j = 0; j < _work_count; j++)
            {
                //子オブジェクト取得
                GameObject _work_dice = g_undo_dices[j + _dice_pointer];
                //子オブジェクトの親を今保持している親に変更
                _work_dice.transform.parent = _work_parent.transform;
                //縦の指標取得
                g_work_ver = g_dice_pointers[_point_pointer];
                //横の指標取得
                g_work_side = g_dice_pointers[_point_pointer + 1];
                //高さの指標取得
                g_work_high = g_dice_pointers[_point_pointer + 2];
                //元に戻す位置を取得
                Vector3 _undo_pos = g_game_con_Script.Get_Pos(g_work_ver, g_work_side, g_work_high);
                //子オブジェクトを移動
                _work_dice.transform.position = _undo_pos;

                //ダイスのスクリプト取得
                g_squares_Script = _work_dice.GetComponent <Dice_Squares>();
                //ダイスの移動前の指標取得
                (g_before_ver, g_before_side, g_before_high) = g_squares_Script.Get_Dice_Pointer();
                //オブジェクトの種類を取得
                int _type = g_game_con_Script.Get_Obj_Type(g_before_ver, g_before_side, g_before_high);
                //大元の配列からダイスを除去
                g_game_con_Script.Storage_Reset(g_before_ver, g_before_side, g_before_high);

                //移動後の縦・横・高さの指標に変更
                g_squares_Script.Storage_This_Index(g_work_ver, g_work_side, g_work_high);
                //大元の配列にダイス格納
                g_game_con_Script.Storage_Obj(g_work_ver, g_work_side, g_work_high, _work_dice);
                //大元の配列に種類格納
                g_game_con_Script.Storage_Obj_Type(g_work_ver, g_work_side, g_work_high, _type);

                //ダイスの移動後のマス目を取得
                g_work_after_squares = g_squares_Script.Get_Dice_Squares();
                //配列に保持しているマス目を取得する
                g_work_before_squares = Get_Dice_Squares();
                //ダイスが保持しているマス目を保持していたマス目に変更する
                g_squares_Script.Storage_Squares(g_work_before_squares);
                //変更後のマス目に応じてダイスを回転させる
                g_dice_create_Script.Undo_Squares_Change(_work_dice, g_work_before_squares, g_work_after_squares);

                //縦・横・高さ配列の指標を3つ進める
                _point_pointer += 3;
            }
            //ダイス用の配列の指標を取り出した個数分進める
            _dice_pointer += _work_count;
        }
        //手数を戻す
        g_trouble_Script.Trouble_Plus();
        //保持する変数を全て初期化
        Array_Reset();
    }
コード例 #5
0
    /// <summary>
    /// オブジェクトを指定した位置に生成して、配列に格納
    /// </summary>
    /// <param name="ver">縦</param>
    /// <param name="side">横</param>
    /// <param name="high">高さ</param>
    /// <param name="type">種類</param>
    public void Spawn_Block(int ver, int side, int high, int type, int[] json_dices)
    {
        //タイプに応じて生成するプレハブを変更する
        switch (type)
        {
        //空白
        case g_null_para:
            g_block_Obj = BlockCreator(g_null_Prefab);
            break;

        //スタート
        case g_start_para:
            g_block_Obj = BlockCreator(g_start_Prefab);
            Vector3    player_pos = g_game_Con_Script.Get_Pos(ver, side, high);
            GameObject player     = g_player_sporn.PlayerCreator(player_pos);
            g_player_sporn.GetComponent <Player_Direction>().Start_Direction(player);
            break;

        //ゴール
        case g_goal_para:
            g_block_Obj = BlockCreator(g_goal_Prefab);
            break;

        //床
        case g_ground_para:
            //g_block_Obj = BlockCreator(g_floor_Prefab);
            g_block_Obj = BlockCreator(Ground_Creator(ver, side, high));
            break;

        //ダイス
        case g_dice_para:
            g_block_Obj = Dice_Creator(g_dice_Prefab);
            //生成した位置をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_This_Index(ver, side, high);
            //生成段階のマス目をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_Squares(json_dices);
            //生成時のマス目になるようにダイスを回転させる
            g_dice_create_Script.Start_Squares_Change(g_block_Obj, json_dices);
            break;

            #region 全面同じ数字のダイス生成
        case g_dice_1_para:
            type        = 100;
            g_block_Obj = Dice_Creator(g_all_dices[0]);
            //生成した位置をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_This_Index(ver, side, high);
            break;

        case g_dice_2_para:
            type        = 100;
            g_block_Obj = Dice_Creator(g_all_dices[1]);
            //生成した位置をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_This_Index(ver, side, high);
            break;

        case g_dice_3_para:
            type        = 100;
            g_block_Obj = Dice_Creator(g_all_dices[2]);
            //生成した位置をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_This_Index(ver, side, high);
            break;

        case g_dice_4_para:
            type        = 100;
            g_block_Obj = Dice_Creator(g_all_dices[3]);
            //生成した位置をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_This_Index(ver, side, high);
            break;

        case g_dice_5_para:
            type        = 100;
            g_block_Obj = Dice_Creator(g_all_dices[4]);
            //生成した位置をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_This_Index(ver, side, high);
            break;

        case g_dice_6_para:
            type        = 100;
            g_block_Obj = Dice_Creator(g_all_dices[5]);
            //生成した位置をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_This_Index(ver, side, high);
            break;
            #endregion
        }
        if (type > 110)
        {
            g_block_Obj = Dice_Creator(g_dice_Prefab);
            //生成した位置をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_This_Index(ver, side, high);
            //生成段階のマス目をダイスが保持
            g_block_Obj.GetComponent <Dice_Squares>().Storage_Squares(json_dices);
            //生成時のマス目になるようにダイスを回転させる
            g_dice_create_Script.Start_Squares_Change(g_block_Obj, json_dices);
            if (g_hintScript.GetHint())
            {
                switch (type)
                {
                case g_yellow_dice_para:
                    g_block_Obj.GetComponent <Renderer>().material = g_dice_sprite_array[0];
                    break;

                case g_green_dice_para:
                    g_block_Obj.GetComponent <Renderer>().material = g_dice_sprite_array[1];
                    break;

                case g_orange_dice_para:
                    g_block_Obj.GetComponent <Renderer>().material = g_dice_sprite_array[2];
                    break;

                case g_purple_dice_para:
                    g_block_Obj.GetComponent <Renderer>().material = g_dice_sprite_array[3];
                    break;

                case g_blue_dice_para:
                    g_block_Obj.GetComponent <Renderer>().material = g_dice_sprite_array[4];
                    break;

                case g_green_yellow_dice_para:
                    g_block_Obj.GetComponent <Renderer>().material = g_dice_sprite_array[5];
                    break;
                }
            }
            type = 100;
        }
        //ポジション取得
        Vector3 g_sporn_Pos = g_game_Con_Script.Get_Pos(ver, side, high);
        //生まれたブロックのポジションを変更する
        g_block_Obj.transform.position = g_sporn_Pos;
        //配列にオブジェクトを格納する
        g_game_Con_Script.Storage_Obj(ver, side, high, g_block_Obj);
        //配列にタイプを格納
        g_game_Con_Script.Storage_Obj_Type(ver, side, high, type);
    }