Пример #1
0
    private void set_block2(int id, Vector3Int set_index)
    {
        //サイズ更新
        if (set_index.x > max_size.x)
        {
            max_size.x = set_index.x;
        }
        if (set_index.y > max_size.y)
        {
            max_size.y = set_index.y;
        }
        if (set_index.z > max_size.z)
        {
            max_size.z = set_index.z;
        }

        if (set_index.x < min_size.x)
        {
            min_size.x = set_index.x;
        }
        if (set_index.y < min_size.x)
        {
            min_size.y = set_index.y;
        }
        if (set_index.z < min_size.x)
        {
            min_size.z = set_index.z;
        }



        //ブロック生成
        Block b = new Block();

        b.draw_frag = true;
        b.id        = id;
        b.obj       = Instantiate(draw_obj, new Vector3(0, 0, 0), Quaternion.identity);
        b.obj.transform.localScale    = transform.localScale;
        b.obj.transform.parent        = transform;
        b.obj.transform.localPosition = new Vector3(set_index.x * Define.BLOCK_SIZE, set_index.y * Define.BLOCK_SIZE, set_index.z * Define.BLOCK_SIZE);
        block_mgr b_m = b.obj.GetComponent <block_mgr>();

        b_m.block_mat = mat;
        b_m.index     = set_index;
        b_m.data      = b;
        //ログ追加
        b_log.Add(new block_log(false, set_index, b));
    }
Пример #2
0
    // Start is called before the first frame update
    void Start()
    {
        //stage_size.Set(5, 5, 5);
        //block = new Block[stage_size.z, stage_size.y, stage_size.x];


        ////オブジェクト生成
        //for (int z = 0; z < stage_size.z; z++)
        //{
        //	for (int y = 0; y < stage_size.y; y++)
        //	{
        //		for (int x = 0; x < stage_size.x; x++)
        //		{
        //			block[z, y, x].draw_frag = true;
        //			block[z, y, x].obj = Instantiate(draw_obj, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity);
        //			block[z, y, x].obj.transform.localScale = transform.localScale;
        //			block[z, y, x].obj.transform.parent = transform;
        //			block[z, y, x].obj.transform.localPosition = new Vector3((1.0f * x) - (stage_size.x / 2), (1.0f * y) - (stage_size.y / 2), (1.0f * z) - (stage_size.z / 2));
        //			block_mgr mgr = block[z, y, x].obj.GetComponent<block_mgr>();
        //			mgr.block_mat = mat;
        //			mgr.data = block[z, y, x];
        //			mgr.index = new Vector3Int(x, y, z);
        //		}
        //	}
        //}

        //中心設定



        //ブロック生成
        Block b = new Block();

        b.draw_frag = true;
        b.id        = 0;
        b.obj       = Instantiate(draw_obj, new Vector3(0, 0, 0), Quaternion.identity);
        b.obj.transform.localScale    = transform.localScale;
        b.obj.transform.parent        = transform;
        b.obj.transform.localPosition = new Vector3(0, 0, 0);
        block_mgr b_m = b.obj.GetComponent <block_mgr>();

        b_m.block_mat = mat;
        b_m.index     = new Vector3Int(0, 0, 0);
        b_m.data      = b;
    }
Пример #3
0
    // Update is called once per frame
    void Update()
    {
        ray = m_camera.ScreenPointToRay(Input.mousePosition);

        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            GameObject obj = hit.collider.gameObject;
            block_mgr  mgr = obj.GetComponent <block_mgr>();
            mgr.hit_frag = true;
            Block b = mgr.data;

            if (mode == Define.MODE_NUM.MAIN)
            {
                //置く
                if (Input.GetMouseButtonDown(0))
                {
                    Vector3 inst = hit.point - hit.collider.gameObject.transform.localPosition;

                    Vector3Int index_pos = mgr.index;
                    //int list_index_pos = mgr.list_index;

                    if (inst.x >= 0.5)
                    {
                        Vector3Int set_index = new Vector3Int(index_pos.x + 1, index_pos.y, index_pos.z);
                        //if (set_index.x < stage_size.x && !block[set_index.z, set_index.y, set_index.x].draw_frag)
                        //{
                        //	set_block(set_index);

                        //}
                        if (b.draw_frag)
                        {
                            set_block2(1, set_index);
                        }
                    }
                    else if (inst.x <= -0.5)
                    {
                        Vector3Int set_index = new Vector3Int(index_pos.x - 1, index_pos.y, index_pos.z);
                        //if (set_index.x >= 0 && !block[set_index.z, set_index.y, set_index.x].draw_frag)
                        //{
                        //	set_block(set_index);

                        //}
                        if (b.draw_frag)
                        {
                            set_block2(1, set_index);
                        }
                    }
                    else if (inst.y >= 0.5)
                    {
                        Vector3Int set_index = new Vector3Int(index_pos.x, index_pos.y + 1, index_pos.z);
                        //if (set_index.y < stage_size.y && !block[set_index.z, set_index.y, set_index.x].draw_frag)
                        //{
                        //	set_block(set_index);

                        //}
                        if (b.draw_frag)
                        {
                            set_block2(1, set_index);
                        }
                    }
                    else if (inst.y <= -0.5)
                    {
                        Vector3Int set_index = new Vector3Int(index_pos.x, index_pos.y - 1, index_pos.z);
                        //if (set_index.y >= 0 && !block[set_index.z, set_index.y, set_index.x].draw_frag)
                        //{
                        //	set_block(set_index);

                        //}
                        if (b.draw_frag)
                        {
                            set_block2(1, set_index);
                        }
                    }
                    else if (inst.z >= 0.5)
                    {
                        Vector3Int set_index = new Vector3Int(index_pos.x, index_pos.y, index_pos.z + 1);
                        //if (set_index.z < stage_size.y && !block[set_index.z, set_index.y, set_index.x].draw_frag)
                        //{
                        //	set_block(set_index);

                        //}
                        if (b.draw_frag)
                        {
                            set_block2(1, set_index);
                        }
                    }
                    else if (inst.z <= -0.5)
                    {
                        Vector3Int set_index = new Vector3Int(index_pos.x, index_pos.y, index_pos.z - 1);
                        //if (set_index.z >= 0 && !block[set_index.z, set_index.y, set_index.x].draw_frag)
                        //{
                        //	set_block(set_index);

                        //}
                        if (b.draw_frag)
                        {
                            set_block2(1, set_index);
                        }
                    }

                    //block[index_pos.z, index_pos.y, index_pos.x].draw_frag = false;
                    //Destroy(hit.collider.gameObject);
                }

                //削る
                if (Input.GetMouseButtonDown(1))
                {
                    if (b.id != 0)
                    {
                        Vector3Int index_pos = mgr.index;
                        //int list_index_pos = mgr.list_index;

                        b_log.Add(new block_log(true, index_pos, b));
                        Destroy(hit.collider.gameObject);
                    }
                }
            }
            else if (mode == Define.MODE_NUM.MAT_SET)
            {
                //色変更
                if (Input.GetMouseButtonDown(0))
                {
                    //int index_pos = hit.collider.gameObject.GetComponent<block_mgr>().list_index;
                    b.obj.GetComponent <MeshRenderer>().material.color = c;
                    //hit.collider.gameObject.GetComponent<MeshRenderer>().material.color = c;
                }
            }
            //Debug.Log(hit.collider.gameObject.transform.position);
        }


        if (b_log.Count > 20)
        {
            b_log.RemoveAt(0);
        }
    }
Пример #4
0
    public void back()
    {
        int max_index = b_log.Count - 1;

        if (max_index < 0)
        {
            return;
        }
        //生成
        if (b_log[max_index].del_frag)
        {
            //サイズ更新
            if (b_log[max_index].index_pos.x > max_size.x)
            {
                max_size.x = b_log[max_index].index_pos.x;
            }
            if (b_log[max_index].index_pos.y > max_size.y)
            {
                max_size.y = b_log[max_index].index_pos.y;
            }
            if (b_log[max_index].index_pos.z > max_size.z)
            {
                max_size.z = b_log[max_index].index_pos.z;
            }

            if (b_log[max_index].index_pos.x < min_size.x)
            {
                min_size.x = b_log[max_index].index_pos.x;
            }
            if (b_log[max_index].index_pos.y < min_size.x)
            {
                min_size.y = b_log[max_index].index_pos.y;
            }
            if (b_log[max_index].index_pos.z < min_size.x)
            {
                min_size.z = b_log[max_index].index_pos.z;
            }



            //ブロック生成
            Block b = new Block();
            b.draw_frag = true;
            b.id        = b_log[max_index].date.id;
            b.obj       = Instantiate(draw_obj, new Vector3(0, 0, 0), Quaternion.identity);
            b.obj.transform.localScale    = transform.localScale;
            b.obj.transform.parent        = transform;
            b.obj.transform.localPosition = new Vector3(b_log[max_index].index_pos.x * Define.BLOCK_SIZE, b_log[max_index].index_pos.y * Define.BLOCK_SIZE, b_log[max_index].index_pos.z * Define.BLOCK_SIZE);
            block_mgr b_m = b.obj.GetComponent <block_mgr>();
            b_m.block_mat = mat;
            b_m.index     = b_log[max_index].index_pos;
            b_m.data      = b;
            //block[b_log[max_index].index_pos.z, b_log[max_index].index_pos.y, b_log[max_index].index_pos.x].draw_frag = true;
            //block[b_log[max_index].index_pos.z, b_log[max_index].index_pos.y, b_log[max_index].index_pos.x].obj = Instantiate(draw_obj, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity);
            //block[b_log[max_index].index_pos.z, b_log[max_index].index_pos.y, b_log[max_index].index_pos.x].obj.transform.localScale = transform.localScale;
            //block[b_log[max_index].index_pos.z, b_log[max_index].index_pos.y, b_log[max_index].index_pos.x].obj.transform.parent = transform;
            //block[b_log[max_index].index_pos.z, b_log[max_index].index_pos.y, b_log[max_index].index_pos.x].obj.transform.localPosition = new Vector3((1.0f * b_log[max_index].index_pos.x) - (stage_size.x / 2), (1.0f * b_log[max_index].index_pos.y) - (stage_size.y / 2), (1.0f * b_log[max_index].index_pos.z) - (stage_size.z / 2));
            //block_mgr mgr_c = block[b_log[max_index].index_pos.z, b_log[max_index].index_pos.y, b_log[max_index].index_pos.x].obj.GetComponent<block_mgr>();
            //mgr_c.block_mat = mat;
            //mgr_c.data = block[b_log[max_index].index_pos.z, b_log[max_index].index_pos.y, b_log[max_index].index_pos.x];
            //mgr_c.index = new Vector3Int(b_log[max_index].index_pos.x, b_log[max_index].index_pos.y, b_log[max_index].index_pos.z);
        }
        else
        {
            //block_mgr mgr = obj.GetComponent<block_mgr>();
            //Vector3Int index_pos = hit.collider.gameObject.GetComponent<block_mgr>().index;
            //block[b_log[max_index].index_pos.z, b_log[max_index].index_pos.y, b_log[max_index].index_pos.x].draw_frag = false;
            Destroy(b_log[max_index].date.obj);
        }
        b_log.RemoveAt(max_index);
    }
Пример #5
0
    // Update is called once per frame
    void Update()
    {
        /*//回転
         * if (Input.GetKey(KeyCode.W))
         * {
         *
         *      transform.Rotate(new Vector3(5, 0, 0), Space.World);
         * }
         * if (Input.GetKey(KeyCode.S))
         * {
         *      transform.Rotate(new Vector3(-5, 0, 0), Space.World);
         * }
         * if (Input.GetKey(KeyCode.D))
         * {
         *      transform.Rotate(new Vector3(0, -5, 0), Space.World);
         * }
         * if (Input.GetKey(KeyCode.A))
         * {
         *      transform.Rotate(new Vector3(0, 5, 0), Space.World);
         * }
         *
         * //拡縮
         * float scroll = Input.GetAxis("Mouse ScrollWheel");
         * Vector3 pos_inst = camera.transform.position + new Vector3(0, 0, scroll * Define.ZOOM_SPEED);
         * if (scroll > 0 && pos_inst.z > Define.ZOOM_MAX)
         * {
         *      pos_inst.z = Define.ZOOM_MAX;
         * }
         * else if (scroll < 0 && pos_inst.z < Define.ZOOM_MIN)
         * {
         *      pos_inst.z = Define.ZOOM_MIN;
         * }
         * camera.transform.position = pos_inst;
         *
         *
         * Ray ray = camera.ScreenPointToRay(Input.mousePosition);*/

        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            GameObject obj = hit.collider.gameObject;
            obj.GetComponent <block_mgr>().hit_frag = true;
            if (Input.GetMouseButtonDown(0))
            {
                Instantiate(ef_obj, hit.point, Quaternion.identity);
                //Instantiate(ef_b_obj, hit.point, Quaternion.identity);
                block_mgr mgr = obj.GetComponent <block_mgr>();
                if (!mgr.data.correct)
                {
                    Vector3Int index_pos = hit.collider.gameObject.GetComponent <block_mgr>().index;
                    block[index_pos.z, index_pos.y, index_pos.x].draw_frag = false;
                    Instantiate(ef_b_obj, hit.collider.gameObject.transform.position, hit.collider.gameObject.transform.rotation);
                    Destroy(hit.collider.gameObject);
                    miss_count--;
                }
                else
                {
                    game_over = true;
                }
            }
            //Debug.Log(hit.collider.gameObject.transform.position);
        }

        if (miss_count <= 0)
        {
            clear = true;
        }

        //Debug.Log(block[0,0,0].obj.transform.position);
    }
Пример #6
0
    public void load()
    {
        //オブジェクト削除
        for (int z = 0; z < stage_size.z; z++)
        {
            for (int y = 0; y < stage_size.y; y++)
            {
                for (int x = 0; x < stage_size.x; x++)
                {
                    Destroy(block[z, y, x].obj);
                }
            }
        }
        //変数初期化
        correct_count         = 0;
        miss_count            = 0;
        transform.position    = Vector3.zero;
        transform.eulerAngles = Vector3.zero;
        //配列解放
        block = null;

        FileStream fs = new FileStream("Assets/save",
                                       FileMode.Open,
                                       FileAccess.Read);
        BinaryReader br = new BinaryReader(fs);

        if (Define.VERSION != br.ReadInt32())
        {
            return;
        }
        stage_size.Set(br.ReadInt32(), br.ReadInt32(), br.ReadInt32());

        //ブロック
        block = new Block[stage_size.z, stage_size.y, stage_size.x];
        for (int z = 0; z < stage_size.z; z++)
        {
            for (int y = 0; y < stage_size.y; y++)
            {
                for (int x = 0; x < stage_size.x; x++)
                {
                    block[z, y, x].correct   = br.ReadBoolean();
                    block[z, y, x].draw_frag = br.ReadBoolean();
                    //block[z, y, x].hint = br.ReadInt32();

                    //オブジェクト生成
                    if (block[z, y, x].draw_frag)
                    {
                        block[z, y, x].obj = Instantiate(draw_obj, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity);
                        block[z, y, x].obj.transform.localScale    = transform.localScale;
                        block[z, y, x].obj.transform.parent        = transform;
                        block[z, y, x].obj.transform.localPosition = new Vector3((1.0f * x) - (stage_size.x / 2), (1.0f * y) - (stage_size.y / 2), (1.0f * z) - (stage_size.z / 2));
                        block_mgr mgr = block[z, y, x].obj.GetComponent <block_mgr>();

                        mgr.data  = block[z, y, x];
                        mgr.index = new Vector3Int(x, y, z);
                        if (mgr.data.correct)
                        {
                            correct_count++;
                        }
                        else
                        {
                            miss_count++;
                        }
                    }
                }
            }
        }

        //ヒント判定
        for (int z = 0; z < stage_size.z; z++)
        {
            for (int y = 0; y < stage_size.y; y++)
            {
                for (int x = 0; x < stage_size.x; x++)
                {
                    block_mgr mgr = block[z, y, x].obj.GetComponent <block_mgr>();
                    hint_counter(new Vector3Int(x, y, z));
                    mgr.block_mat = num_mat[block[z, y, x].hint];
                }
            }
        }
        //k.correct = br.ReadBoolean();
        //k.draw_frag = br.ReadBoolean();

        fs.Close();
    }