<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                本篇文章繼續介紹cocos2D-x?2.1的新特性:CCPhysicsSprite?和CCPhysicsDebugNode,從名稱上就可以看出來這兩個類是和物理引擎相關的類,和之前介紹的CCDrawNode一樣,CCPhysicsSprite?沒有提供新功能,而是對之前功能的一個封裝。 CCPhysicsSprite?定義一個物理類綁定的精靈,它繼承自CCSprite精靈類,它的使用來看一下TestCpp項目,CCPhysicsSprite?支持目前cocos2D-x中的box2D和chipmunk兩個物理引擎,但是你只能使用定義預編譯的宏變量CC_ENABLE_CHIPMUNK_INTEGRATION?或CC_ENABLE_CHIPMUNK_INTEGRATION中的一個來使用**box2D或chipmunk****其中的一個**,你可以通過兩種方式來設置CC_ENABLE_CHIPMUNK_INTEGRATION?或CC_ENABLE_CHIPMUNK_INTEGRATION的值,一種是在xcode的building?setting中設置,如圖所示 ![](https://box.kancloud.cn/2016-04-26_571f3f15a6831.png) 另一種是在Config.h文件中設置,如圖所示 ![](https://box.kancloud.cn/2016-04-26_571f3f15cbd2d.png) 對于TestCpp這個項目,這里需要說一句就是把引擎變成box2D后編譯項目會報錯,是因為沒有對ChipmunkTest項目加入預編譯的判斷,對于該部分,我做了修改,下載地址:http://download.csdn.net/detail/bill_man/5012842 回到正題,介紹CCPhysicsSprite?和CCPhysicsDebugNode的使用,CCPhysicsSprite?只需要按照CCSprite的方法定義,然后將之前按照Chipmunk方式定義的body設置給精靈就可以了,代碼如下: ~~~ CCPhysicsSprite?*sprite?=?CCPhysicsSprite::createWithTexture(m_pSpriteTexture,?CCRectMake(posx,?posy,?85,?121)); parent->addChild(sprite); sprite->setBody(body); sprite->setPosition(pos); ~~~ 可以打開2.1?之前的版本的相同位置的文件(名稱可能不同),可以看到當時我們要自己定義一個精靈類并且完成坐標的對應,有了CCPhysicsSprite之后就會更方便的使用。 CCPhysicsDebugNode是為了更方便debug的類,將它設置為顯示之后,在場景內定義的精靈的碰撞形狀塊就顯示出來了,如圖所示 ![](https://box.kancloud.cn/2016-04-26_571f3f15e49ae.png) 在這個例子中,點擊Toggle?debug就可以切換CCPhysicsDebugNode的顯示和隱藏,定義CCPhysicsDebugNode的代碼如下: ~~~ m_pDebugLayer?=?CCPhysicsDebugNode::create(m_pSpace); this->addChild(m_pDebugLayer,?Z_PHYSICS_DEBUG); ~~~ 傳入的參數是cpSpaceNew類實例,默認創建的一個CCPhysicsDebugNode是顯示的,可以通過setVisible函數來控制它的顯示與隱藏,需要說明的是CCPhysicsDebugNode目前只支持Chipmunk。 CCPhysicsSprite在Box2D中的使用和Chipmunk類似(在TestCpp中的Box2DTest中),只是多了一個函數需要設置,就是PTMRatio,即“cocos2D-x中的像素到box2D中的meters單位的轉換比率” ~~~ CCPhysicsSprite?*sprite?=?CCPhysicsSprite::createWithTexture(m_pSpriteTexture,CCRectMake(32?*?idx,32?*?idy,32,32)); parent->addChild(sprite); sprite->setBody(body); sprite->setPTMRatio(PTM_RATIO); sprite->setPosition(?ccp(?p.x,?p.y)?); ~~~ 在Box2DTest中還保留著之前為了使用box2D而定義的精靈類的代碼,可以對比一下現在的使用,確實是方便很多了 對于CCPhysicsSprite的使用,有一些限制: 1)Scale?和Skew屬性是忽略的,也就是說setScale或者setSkew后碰撞的形狀塊大小等不會改變。 2)Position?和rotation屬性是有效的,如果你手動設置Position?和rotation,負責控制碰撞的形狀塊的位置和旋轉角度會改變。 3)一個項目中同時只能支持Chipmunk和Box2D中的一個 如有錯誤,請多多指教,歡迎大牛拍磚
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看