• <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>

            Codejie's C++ Space

            Using C++

            SnakeGo : Scaling Screen and Moving Camera

             

                敲了幾晚SnakeGo, 原型出來了, 大家來看看不...

             

            123

             

                不錯(cuò), 這貨就是---貪吃蛇...哈哈...別急, 這還是原型, 好玩的在后面呢...(以我敲字速度, 大約再等不到六個(gè)月應(yīng)該可以完成了...)

             

                今天這里記錄下使用LIBGDX過程中碰到的兩個(gè)問題:

                    1. 調(diào)整屏幕比例;

                    2. 移動(dòng)觀察鏡頭;

             

            一, 調(diào)整屏幕比例

                LIBGDX是跨平臺(tái)的, 一大好處就是直接在PC上測(cè)試, 那是非常的方便, 但這有兩個(gè)問題需要考慮, 一, 手機(jī)是1280x768, 但我PC只有1280x1024的, 而且真要開個(gè)跟手機(jī)一樣大小的一樣大小的屏幕, 那還怎么看log輸出呢? 二就是不同的手機(jī)有著不同的分辨率, 長(zhǎng)寬比也不一致, 那怎么保證圖形不變形呢?

                這個(gè)問題不難解決, 只需要在屏幕尺寸發(fā)生變化時(shí), 即resize()(第一次啟動(dòng)也會(huì)調(diào)用此函數(shù))中, 重新調(diào)整鏡頭(Camera)的參數(shù)即可. 如下代碼:

            	@Override
            	public void resize(int width, int height) {
            		Vector2 size = Scaling.fit.apply(WIDTH, HEIGHT, width, height);
            		
            		camera = new OrthographicCamera(size.x, size.y);
            		camera.update();
            
            		batch.setProjectionMatrix(camera.combined);
            	    
                          int viewportX = (int)(width - size.x) / 2;
            	       int viewportY = (int)(height - size.y) / 2;
            	       int viewportWidth = (int)size.x;
            	       int viewportHeight = (int)size.y;
            	    
            		Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight);
            
            		super.resize(width, height);
            	}

                這里采用的是重新創(chuàng)建camera實(shí)例的方式, 另外用改變已有camera實(shí)例的參數(shù)方式也是一樣的. 很簡(jiǎn)單, 而且這樣一次就解決了上面兩個(gè)問題 -- PC機(jī)上使用任何尺寸的窗口, 都可以獲得跟設(shè)置等比例的窗口, 手機(jī)上亦是如此. 像I;P就是采用的這種方式來保持其在任意手機(jī)上都是1280:768的比例.

                這種方法只是改變了'視圖'的大小, 但并不會(huì)改變其中的圖形的大小, 這樣為了保持圖形顯示比例, 需要在輸出圖形時(shí)做相應(yīng)的比例放縮. 可以在resize()獲得這個(gè)比例, 染在圖形輸出時(shí)使用這個(gè)比例.

                          screenScaling = new Vector2((size.x / WIDTH), (size.y / HEIGHT));
                          ...
                          ...
                          batch.draw(img, (- WIDTH / 2) * screenScaling.x, (- HEIGHT / 2) * screenScaling.y, WIDTH * screenScaling.x, HEIGHT * screenScaling.y);
             

            二, 移動(dòng)觀察鏡頭

                在SnakeGo中, 為了不讓Snake'跑出'屏幕, 需要鏡頭camera跟Snake本身保持'同步'移動(dòng), 這樣看起來Snake保持在屏幕的中間, 但其它Object是移動(dòng)的. 根據(jù)'相對(duì)運(yùn)行'原理, 使整個(gè)看起來像是Snake在Object中穿行. 所以, 移動(dòng)camaera是必須的, 代碼也簡(jiǎn)單, 如下:

                          ...
            		final OrthographicCamera camera = game.getCamera();
            		camera.translate(0.0f, 32.0f, 0.0f);
            		camera.update();
            		game.getSpriteBatch().setProjectionMatrix(camera.combined);
                          ...

             

            <----心煩意亂的分割線---->

                這幾天在找工作, 前面去面了一次, 其中沒一個(gè)App或者Game的問題, 倒全是C++相關(guān)的, 登時(shí)就傻眼了...雖說咱也是C++'出身'的(不然Blog也不會(huì)在這里不是), 但也許真的是'老'了, 才三年不用C++,竟然忘記的只剩下個(gè)auto_ptr了...更悲劇的是咱用的C++98標(biāo)準(zhǔn)已經(jīng)變成C++11了, auto_ptr變成smart_ptr了...

                都說現(xiàn)在是個(gè)'跨界'的時(shí)代, 但咱這還沒有跨界, 只是同行轉(zhuǎn)個(gè)方向而已, 為啥就這么悲劇了...好吧, 估計(jì)學(xué)藝不精才是根本...

                同學(xué)"'大數(shù)據(jù)'的博士"周五來電, 問我要不要跟她一起做個(gè)'圖像搜索', 有些猶豫, 要說三年前, 也許就干了, 但現(xiàn)在...再轉(zhuǎn)次嘛...

                恰逢I;P敲完, 心煩意亂的一周, 只好趕緊抓起SnakeGo來, 夜夜瘋敲, 來安撫砰砰躁動(dòng)的心...是的, 至少敲字可以讓自己平靜些...

             

                吐槽而已, 這里想說 ---- 程序員們啊, 轉(zhuǎn)行要趁著年輕趕緊啊...

            posted on 2014-05-18 19:24 codejie 閱讀(2078) 評(píng)論(2)  編輯 收藏 引用 所屬分類: 隨筆而已心情痕跡SnakeGo

            評(píng)論

            # re: SnakeGo : Scaling Screen and Moving Camera 2014-05-19 21:43 放屁阿狗

            轉(zhuǎn)啥行呢,寫代碼可以寫到退休  回復(fù)  更多評(píng)論   

            # re: SnakeGo : Scaling Screen and Moving Camera 2014-05-19 23:14 codejie

            @放屁阿狗
            ...問題是年紀(jì)大了, 允許敲新鮮事務(wù)的的機(jī)會(huì)就沒了...  回復(fù)  更多評(píng)論   

            公告

            Using C++

            導(dǎo)航

            統(tǒng)計(jì)

            留言簿(73)

            隨筆分類(513)

            積分與排名

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久亚洲色一区二区三区| 伊人情人综合成人久久网小说| 国产精品久久久久免费a∨| 精品久久人人做人人爽综合| 久久国产亚洲精品麻豆| 东京热TOKYO综合久久精品| 久久亚洲精品人成综合网| 亚洲精品乱码久久久久66| 狠狠色噜噜色狠狠狠综合久久| 久久天天躁夜夜躁狠狠| 久久天天躁狠狠躁夜夜2020一| 久久久噜噜噜久久中文字幕色伊伊| 伊人久久一区二区三区无码| 国产香蕉久久精品综合网| 亚洲精品无码久久久久| 99精品久久精品| 国内精品久久久久久麻豆| 无码乱码观看精品久久| 久久www免费人成看片| 久久久无码精品亚洲日韩按摩| 久久精品国产99国产精偷| 99热热久久这里只有精品68| 久久综合视频网站| 久久亚洲精品中文字幕| 久久亚洲国产欧洲精品一| 日韩欧美亚洲综合久久影院Ds| 亚洲中文字幕无码久久精品1| 2021少妇久久久久久久久久| 精品久久久久一区二区三区| 国产精品久久久久久久app| 狠狠88综合久久久久综合网| 久久乐国产精品亚洲综合| 欧美亚洲色综久久精品国产| 国产成人综合久久久久久| 久久中文字幕人妻熟av女| 久久99中文字幕久久| 久久亚洲中文字幕精品一区| 久久精品国产秦先生| 亚洲va久久久噜噜噜久久男同 | 国产精品99久久不卡| 国产精品亚洲综合久久|