• <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)的呢?下面我給大家講解一下具體實現(xiàn)原理,我做的是一個地圖編輯器,不過原理是一樣的

             
            首先我們應(yīng)該知道我們的這個游戲有幾層我們先創(chuàng)建一個枚舉類型
            enum MAPTYPE
            {
                ForeGround ,
            //前景層
                Ground,//地圖層
                BackGround,//背景層
                FundusGround,//背景最后層
            }
            ;
            然后創(chuàng)建一個基類我們這里就叫做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;        //子對象碰撞檢測
                virtual bool ShowActive() = 0;        //子對象是否顯示
                virtual void Logic(float _dt) = 0;    //子對象邏輯
                virtual void Render() = 0;            //子對象渲染
                STRMAP StrMap;        //地圖屬性
            protected:
                
            int ID;
                
            float PosX,PosY;    //對象位置
                static HGE* g_pHGE;    //HGE指針
                int Width,Height;            //對象寬和高度
                static float StrWidth,StrHeight;    //當(dāng)前卷動寬度
                static float ForeWidth,ForeHeight;    //前景層卷動寬和高度
                static float FundusWidth,FundusHeight;//最后一層背景卷動寬度和高度
                static float BackWidth,BackHeight;//背景卷動寬度和高度
                static float Speed;//卷動速度
            }
            ;

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

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

            我們在派生類里可以定義一個變量float x,float y;來存放這個對象的左上角坐標(biāo);
            通過枚舉在我們創(chuàng)建這個地圖對象的時候給它賦值不同的視圖坐標(biāo)~就是我們先前定義的那3個視圖坐標(biāo)~
            這樣就實現(xiàn)了多卷軸視差效果~

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

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


             
            精品无码久久久久国产动漫3d| 一本久道久久综合狠狠爱| 久久国产精品99精品国产| 亚洲狠狠婷婷综合久久蜜芽| 久久福利青草精品资源站免费 | 亚洲精品无码专区久久同性男| 性高朝久久久久久久久久| 奇米综合四色77777久久| 精品久久久久久国产| 国产精品99精品久久免费| 久久亚洲AV无码精品色午夜| 91久久精品91久久性色| 国产午夜精品久久久久九九| 亚洲人成网亚洲欧洲无码久久 | 欧美亚洲色综久久精品国产| 欧美久久精品一级c片片| 国产精品成人久久久| 久久精品亚洲男人的天堂| 久久久久亚洲AV无码麻豆| 久久人做人爽一区二区三区 | 77777亚洲午夜久久多喷| 久久99国产综合精品| 亚洲va久久久噜噜噜久久男同 | 久久笫一福利免费导航 | 国产2021久久精品| 久久99精品久久久久婷婷| 亚洲综合熟女久久久30p| 中文字幕久久久久人妻| 欧美一区二区三区久久综| 久久无码AV中文出轨人妻| 久久久久久夜精品精品免费啦 | 久久国产成人午夜AV影院| 国产精品免费看久久久| 国产精品岛国久久久久| 欧美一区二区久久精品| 久久综合88熟人妻| 国产精品内射久久久久欢欢| 久久av高潮av无码av喷吹| 久久久国产视频| 99久久精品无码一区二区毛片 | 久久久久久久人妻无码中文字幕爆 |