• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            象DNF~冒險(xiǎn)島等地圖他們都有很多層的地圖層并且移動(dòng)速度不同~那么是如何實(shí)現(xiàn)的呢?下面我給大家講解一下具體實(shí)現(xiàn)原理,我做的是一個(gè)地圖編輯器,不過原理是一樣的

             
            首先我們應(yīng)該知道我們的這個(gè)游戲有幾層我們先創(chuàng)建一個(gè)枚舉類型
            enum MAPTYPE
            {
                ForeGround ,
            //前景層
                Ground,//地圖層
                BackGround,//背景層
                FundusGround,//背景最后層
            }
            ;
            然后創(chuàng)建一個(gè)基類我們這里就叫做CMap

             

            class CMap
            {
            public:
                CMap(
            float _x,float _y,const int _ID,bool _bCheck = true);
                
            virtual ~CMap();
                
            void GameLogic(float _dt);//游戲主邏輯函數(shù)
                void GameRender();        //游戲主渲染函數(shù)
                void GameInit();            //游戲初始化函數(shù)
                void GameReleaser();        //游戲釋放函數(shù)
                virtual bool CheckActive()= 0;        //子對(duì)象碰撞檢測(cè)
                virtual bool ShowActive() = 0;        //子對(duì)象是否顯示
                virtual void Logic(float _dt) = 0;    //子對(duì)象邏輯
                virtual void Render() = 0;            //子對(duì)象渲染
                STRMAP StrMap;        //地圖屬性
            protected:
                
            int ID;
                
            float PosX,PosY;    //對(duì)象位置
                static HGE* g_pHGE;    //HGE指針
                int Width,Height;            //對(duì)象寬和高度
                static float StrWidth,StrHeight;    //當(dāng)前卷動(dòng)寬度
                static float ForeWidth,ForeHeight;    //前景層卷動(dòng)寬和高度
                static float FundusWidth,FundusHeight;//最后一層背景卷動(dòng)寬度和高度
                static float BackWidth,BackHeight;//背景卷動(dòng)寬度和高度
                static float Speed;//卷動(dòng)速度
            }
            ;

             從這里我們可以看到有3個(gè)卷動(dòng)坐標(biāo),我們可以認(rèn)為有3個(gè)視圖窗口,
            可以看圖理解

            我們可以通過CMap的派生類來創(chuàng)建地圖對(duì)象然后通過一個(gè)鏈表來管理這些對(duì)象
            但是雖然我們有3個(gè)視圖但是我們要統(tǒng)一他們的坐標(biāo)~也就是我們最后看到的屏幕左上的坐標(biāo),當(dāng)然也許你創(chuàng)建的地圖有2級(jí)緩存~有可能左上并不是0,0點(diǎn)。自已定義了;

            我們?cè)谂缮惱锟梢远x一個(gè)變量float x,float y;來存放這個(gè)對(duì)象的左上角坐標(biāo);
            通過枚舉在我們創(chuàng)建這個(gè)地圖對(duì)象的時(shí)候給它賦值不同的視圖坐標(biāo)~就是我們先前定義的那3個(gè)視圖坐標(biāo)~
            這樣就實(shí)現(xiàn)了多卷軸視差效果~

            posted on 2009-05-20 17:51 icecoldmoon 閱讀(1652) 評(píng)論(1)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


             
            色综合久久88色综合天天 | 久久精品aⅴ无码中文字字幕不卡| 2021最新久久久视精品爱 | www久久久天天com| 精品国产乱码久久久久软件| 午夜精品久久影院蜜桃| 久久人妻少妇嫩草AV蜜桃| 99国内精品久久久久久久| 青青草原综合久久| 国产精品一区二区久久不卡| 久久久婷婷五月亚洲97号色| 欧洲精品久久久av无码电影| 国内精品人妻无码久久久影院| 久久久久久久精品成人热色戒| 怡红院日本一道日本久久 | 久久国产亚洲精品无码| 国产精品99久久久精品无码| 国产成人精品综合久久久久| 久久婷婷激情综合色综合俺也去| 国内精品九九久久久精品| 成人久久精品一区二区三区| 久久狠狠色狠狠色综合| 久久久久国产亚洲AV麻豆| 一本色综合久久| 成人国内精品久久久久一区| 国产精品欧美久久久久天天影视| 日批日出水久久亚洲精品tv| 亚洲色欲久久久综合网| aaa级精品久久久国产片| 久久亚洲精品无码播放| 国产麻豆精品久久一二三| 国产精品综合久久第一页| 亚洲七七久久精品中文国产| 国产成年无码久久久久毛片| 三级片免费观看久久| 成人妇女免费播放久久久| 中文精品99久久国产| 精品久久久久香蕉网| 久久免费视频1| 亚洲精品国产成人99久久| 色欲久久久天天天综合网|