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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                小滿(bill man)個人原創,歡迎轉載,轉載請注明地址,小滿(bill man)的專欄地址http://blog.csdn.net/bill_man 在游戲中我們經常要加入物理碰撞等和物理有關的內容,在游戲中加入物理引擎可以使我們的游戲更加真實,為玩家展示一個更真實的世界,cocos2d-x支持兩個物理引擎Box2d和Chipmunk,本文介紹box2d。 Box2D?是用可移植的?C++?來寫成的。引擎中定義的大部分類型都有?b2?前綴,可以把它和我們游戲中的其他元素區分開來。 Box2d中有很多概念。 1.剛體 ??即是物理學中的質點,只有位置,沒有大小,它又可以區分為以下幾類 ??靜態剛體:靜態剛體沒有質量,沒有速度,只可以手動來改變他的位置 ??棱柱剛體:棱柱剛體沒有質量,但是可以有速度,可以自己更新位置 ??動態剛體:動態剛體有質量也有速度 物理引擎需要首先定義一個描述類,然后再根據描述類通過世界創建某個對象。創建剛體時需要有兩個步驟,一是生成一個剛體定義,二是根據剛體定義生成剛體。在剛體創建時定義中的信息會被復制,也就是說創建完成后剛體只要沒被釋放掉,就還可以重復使用。 ~~~ //定義剛體 b2BodyDef?groundBodyDef; groundBodyDef.position.Set(screenSize.width/2/PTM_RATIO,?screenSize.height/2/PTM_RATIO); //生成剛體 b2Body*?groundBody?=?world->CreateBody(&groundBodyDef); ~~~ 2.形狀 ??通過關聯添加到剛體上,碰撞可以根據形狀來判定,具有摩擦和恢復等材料特性。 ~~~ b2PolygonShape?groundBox; //?bottom groundBox.SetAsBox(screenSize.width/2/PTM_RATIO,?0,?b2Vec2(0,?-screenSize.height/2/PTM_RATIO),?0); ~~~ 3.關聯 ?關聯是一種附加在剛體上的屬性,一個剛體可以有多個關聯,創建關聯時,需要定義關聯的信息,然后通過剛體創建關聯,當關聯被創建時關聯定義中的信息也會被保留,也可以重用 ~~~ //定義并創建關聯 b2FixtureDef?fixtureDef; fixtureDef.shape?=?&dynamicBox; fixtureDef.density?=?1.0f; fixtureDef.friction?=?0.3f; body->CreateFixture(&fixtureDef); ~~~ 4.鏈接 鏈接可以聯系多個缸體,使得剛體之間相互影響,同樣的,也需要首先定義信息,之后通過世界創建鏈接,同樣的,信息也可以被保留,從而重用 另外鏈接還支持限制和馬達,限制就是限制物體運動的角度,馬達就是依照關節中的限制來約束物體 鏈接有旋轉,棱柱和距離等 ~~~ b2RevoluteJointDef?rjd; rjd.Initialize(m_attachment,?m_platform,?b2Vec2(0.0f,?5.0f)); rjd.maxMotorTorque?=?50.0f; rjd.enableMotor?=?true; m_world->CreateJoint(&rjd); ~~~ 5.約束 ??一個約束就是消除物體自由度的物理連接。在?2D?中,一個物體有?3?個自由度。如果我 們把一個物體釘在墻上(像擺錘那樣),那我們就把它約束到了墻上。這樣,此物體就只能繞著這個釘子旋轉,所以這個約束消除了它?2?個自由度。 還有一種不須你創建的接觸約束,一個防止剛體穿透,以及用于模擬摩擦和恢復的特殊約束。 6.世界 ??世界是遵循物理的空間,以上的所有都存在于世界中,可以創建多個世界,但很少這樣用 創建世界需要兩個步驟,一是生成重力向量,二是根據重力生成世界對象 ~~~ //生成重力向量 b2Vec2?gravity; gravity.Set(0.0f,?-10.0f); //生成世界對象 bool?doSleep?=?true; world?=?new?b2World(gravity); world->SetAllowSleeping(doSleep); world->SetContinuousPhysics(true); ~~~ 剛開始研究此引擎,如有錯誤之處,希望大家多多指正 下一篇繼續深入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>

                              哎呀哎呀视频在线观看