Exemplo n.º 1
0
    // 产生数字 wz_ss_=产生位置 sz_=数字
    void copy_sz_(Vector2 wz_ss_, int sz_)
    {
        bool cs_ok_ = false;

        if (cs_ok_)
        {
            // msz_=数字 复制组件
            Transform szs_ = Instantiate(msz_, new Vector3(wz_ss_.x, 0.2f, wz_ss_.y), Quaternion.Euler(0, 0, 0)) as Transform;
            // 将新组件物体层级修改到原来组件层
            szs_.parent = msz_.parent;
            // 获取附带在组件的脚本
            _ge ge_ = szs_.GetComponent <_ge>();
            // 将类 tag 改成 jjgam 方便以后群体删除
            szs_.tag = "jjgam";
            // 设置数值
            ge_.xfg_ = sz_;
        }
    }
Exemplo n.º 2
0
    void Update()
    {
        // A*算法寻路
        if (Input.GetKeyUp(KeyCode.Space))
        {
            // 开始点、结束点 必须在地图上
            Vector3 v3_begin = _begin.position, v3_end = _end.position;
            if (v3_begin.x >= -10 && v3_begin.x <= 10 && v3_begin.z >= -10 && v3_begin.z <= 10 && v3_end.x >= -10 && v3_end.x <= 10 && v3_end.z >= -10 && v3_end.z <= 10)
            {
                // 调用公式,返回路程数组
                Vector2[] ok_v2_ = _Asuan_gs_(wt_yn_, new Vector2(v3_begin.x, v3_begin.z), new Vector2(v3_end.x, v3_end.z));
                int       bcc_   = ok_v2_.Length;
                if (bcc_ > 0)
                {
                    Debug.Log("步长:" + bcc_);
                    if ((int)ok_v2_[0].x == (int)v3_end.x && (int)ok_v2_[0].y == (int)v3_end.z)
                    {
                        for (int vxy_ = 0; vxy_ < bcc_; vxy_++)
                        {
                            // Debug.Log("vxy_:" + vxy_ + " x:" + ok_v2_[vxy_].x + " y:" + ok_v2_[vxy_].y);

                            // msz_=数字 复制组件
                            Transform szs_ = Instantiate(lsz_, new Vector3(ok_v2_[vxy_].x, 0.2f, ok_v2_[vxy_].y), Quaternion.Euler(0, 0, 0)) as Transform;
                            // 将新组件物体层级修改到原来组件层
                            szs_.parent = msz_.parent;
                            // 将类 tag 改成 jjgam 方便以后群体删除
                            szs_.tag = "jjgam";
                        }
                        Debug.Log("A*算法完成 QQ:23331122 小健 2014-04-06");
                    }
                    else
                    {
                        Debug.Log("无解_A_ QQ:23331122 小健 2014-04-06");
                    }
                }
                else
                {
                    Debug.Log("无解_B_ QQ:23331122 小健 2014-04-06");
                }
            }
            else
            {
                Debug.Log("无解 _ 开始点、结束点 必须在地图上 QQ:23331122 小健 2014-04-06");
            }
        }

        // 产生随机物体
        if (Input.GetKeyUp(KeyCode.A))
        {
            Initialize_we_(); // 初始化物体位置

            //地图大小 20*20 中心点 0,0  从 -10,-10 到 10,10
            for (int zc_ = 0; zc_ < wtsl_; zc_++)
            {
                bool gok_ = true;
                while (gok_)
                {
                    sjx_ = suiji(0, 20);
                    sjy_ = suiji(0, 20);
                    if (wt_yn_[sjx_, sjy_] == false)
                    {
                        wt_yn_[sjx_, sjy_] = true;
                        gok_ = false;
                        break; // 跳出
                    }
                }
                // 复制组件
                xso_[zc_] = Instantiate(copy_wt_, new Vector3(sjx_ - 10, 0.2f, sjy_ - 10), Quaternion.Euler(0, 0, 0)) as Transform;
                // 将新组件物体层级修改到原来组件层
                xso_[zc_].parent = copy_wt_.parent;
                // 获取附带在组件的脚本
                _ge ge_ = xso_[zc_].GetComponent <_ge>();
                // 设置数值
                ge_.xfg_ = suiji(0, 99);
            }
        }

        if (Input.GetMouseButtonUp(0))    // 左键按下
        {
            Vector2 xxyy_ = PlayerMove(); // 获取世界坐标
            // Debug.Log("xxyy_x_" + xxyy_.x + " xxyy_y_" + xxyy_.y);
            if ((int)xxyy_.x != -99 && wt_yn_[(int)xxyy_.x + 10, (int)xxyy_.y + 10] == false)
            {
                _begin.position = new Vector3(xxyy_.x, 0.2f, xxyy_.y);
            }
        }
        if (Input.GetMouseButtonUp(1))    // 右键按下
        {
            Vector2 xxyy_ = PlayerMove(); // 获取世界坐标
            // Debug.Log("xxyy_x_" + xxyy_.x + " xxyy_y_" + xxyy_.y);
            if ((int)xxyy_.x != -99 && wt_yn_[(int)xxyy_.x + 10, (int)xxyy_.y + 10] == false)
            {
                _end.position = new Vector3(xxyy_.x, 0.2f, xxyy_.y);
            }
        }
    }