日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(老文章)Box2D新手入门顺阶教程

發布時間:2023/12/20 编程问答 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (老文章)Box2D新手入门顺阶教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注意:
本教程只適用于BOX2D 2.0以下版本,由于2.0版API的改動,所以有部分代碼會并不適用.但是主要思想還是一樣的.

一、 HelloWorld

開始之前,我假想你已經看過了HelloWorld的源代碼,并看了用戶手冊中關于HelloWorld的相關說明,而且已經大致明白了大多數內容。
其實HelloWorld已經用極其簡單的語言向你描述了Box2D物理引擎的運作機制,我們可以歸納一下步驟:
1、 建立一個世界,這個世界基于一個b2AABB框,并設立了一個g值和一個是否允許休眠的bool型變量。
2、 建立一個靜態剛體地表,這里講述了定義Box2D物理引擎中最為重要的一個東西——剛體的詳細過程:首先是定義一個形狀(可以是復合形狀,這個在第二部分講述),然后把形狀通過AddShape添加進剛體定義,創建這個剛體。
3、 重復創建剛體這個過程,直至你沒有需求了。
4、 在你的循環中加入世界的更新函數。
其實上面的步驟也是眾多物理引擎甚至于其他引擎采用的方式。
HelloWorld教程是相當簡單的,這個時候你甚至都不用去想世界是怎么運作的,你可以利用相關函數取得剛體的位置和旋轉角度,然后在游戲的渲染部分去更新渲染你的角色對象。
看完HelloWorld,你可以不去想整個世界是怎樣的,因為這個世界相對這時的你來說,確實是太復雜了,而你靜下心來時,不妨回頭看看我們用到的概念和數據類型,來溫顧一下。
概念
在這一個例子中有幾個概念,
世界(b2World):世界就是一個環境,所有物理運算都在這個里面進行。
形狀定義(b2ShapeDef):形狀定義是什么?說簡單點形狀定義就是定義你這個對象的樣子,它用來做什么?就是用來確定你的碰撞。
剛體定義(b2BodyDef):剛體定義就是設定剛體的初始具體,在目前來說,最大的功能就是把你定義好的形狀加到你想到的剛體上。
剛體(b2Body):剛體就是物理引擎里面的東西(對象),它可以受力的作用進行當前位置的變化旋轉等。你要在世界中使用的所有物體目前來說都是剛體。
類型定義
幾個類型定義(熟悉Box2D里面的類型定義可以對我們將來正確賦值運算有著很大的幫助):
typedef signed char int8; typedef signed short int16; typedef signed int int32; typedef unsigned char uint8; typedef unsigned short uint16; typedef unsigned int uint32; typedef float float32; const float32 b2_pi = 3.14159265359f;
數據類型
1、 b2Vec2
就像在3D中Vector3類的使用一樣,b2Vec2在Box2D中也應用廣泛,你幾乎在每個時刻都用到它,比如說定義坐標位置,定義Box大小等

b2Vec2是由float32類型的x,y組成,支持負向量,+=,-=,*=操作符,
支持的方法有
Void SetZero();設置x,y為0
Void Set(float32 x_, float32 y_);設置x,y為指定值
b2Vec2 Make(float32 x_, float32 y_),生成一個值指定的b2Vec2
float32 Length()取得向量的長度或模
float32 Normalize()標準化向量
bool IsValid()檢查是否有效
如果在這里你并不了解我在這里所提到的一些數學概念,比如說標準化向量,模,可以參照b2Math.h文件,或者直接找本數學書來看。


2、b2Mat22
在HelloWorld教程中,b2Mat22雖然沒有被使用到,我們這里先提出這個概念,以便于在下一節中討論。
其實b2Mat22一個由兩個b2Vec2組成的2*2方陣,你可以直接由兩個b2Vec2(col1、col2)構造或者由一個角度值構造。
他的主要方法有:
void Set(const b2Vec2& c1, const b2Vec2& c2)
void Set(float32 angle),
提供兩種方式賦值方法
void SetIdentity(),設定恒等式
void SetZero(),把col1、col2的x,y都清為0
b2Mat22 Invert(),轉換相關數據
b2Vec2 Solve(const b2Vec2& b),解決A * x = b

3、b2AABB

b2AABB就是一個盒子,是由兩個向量組成,一個為minVertex是最小頂點,另一個為maxVertex是最大頂點,通過這兩個頂點來表示最為普通的AABB框。

4、b2ShapeDef
b2ShapeDef直翻為形狀定義,它用一個b2ShapeType型量type來表示形狀類型,用函數指針來表示用戶數據(userdata),用一個b2Vec2向量localPosition來表示當前位置,用float32的localRotation來表示當前角度,用float32的friction、density、restitution來表示摩擦力、密度、彈性系數,用uint16的categoryBits和maskBits來表示碰撞位及位標識(可以用來過濾一些碰撞),用int16的groupIndex來表示組號,這個組號可以用來過濾還比位標識優先。

相關常量
enum b2ShapeType { e_unknownShape = -1, e_circleShape, e_boxShape, e_polyShape, e_meshShape, e_shapeTypeCount, };
相關形狀定義
b2CircleDef繼承于b2ShapeDef,type 為 e_circleShape,另外帶有一個類型為float32的量radius來表示半徑值。
b2BoxDef繼承于b2ShapeDef,type 為 e_ boxShape,另外帶有一個類型為b2Vec2的量extents來表示區域值。
b2PolyDef繼承于b2ShapeDef,type 為 e_ polyShape,另外帶有一個類型為b2Vec2的數組vertices來表示頂點,并帶有一個int32型的量vertexCount來表示頂點數,目前頂點數最多支持8個。
5、b2BodyDef
b2BodyDef是剛體定義結構,由一個函數指針userData來表示用戶數據,一組類型為b2ShapeDef*指針數組shapes來表示形狀隊列,目前形狀數最大支持64個,用一個b2Vec2向量position來表示當前位置,用類型為float32的量rotation來表示當前角度,用類型為b2Vec2的量linearVelocity表示線速度,用類型為float32的angularVelocity來表示角速度,用類型為float32的量linearDamping來表示線性阻尼,用類型為float32的量angularDamping來表示角阻抗,用類型為bool的allowSleep 來表示是否可以允許休眠,用一個類型為bool的isSleeping來表示是否正在休眠,用一個類型為bool的量preventRotation來表示是否防止旋轉,支持方法:
AddShape(b2ShapeDef* shape)。

上面這些東西,其實現在沒有必要去記住,慢慢運用中就可以熟練掌握。
源文件包里除了這個HelloWorld之外還有不少的例子,個人建議先從CompoundShapes開始。

二、CompoundShapes
CompoundShapes其實也沒有做什么事情,相對于HelloWorld來說,我認為,僅僅是多了一個方法的應用,即是有關b2Mat22方陣和向量的相乘應用,這里被用來獲得轉換后的位置。
這個例子對于看過HelloWorld的你來說,應該會很簡單,只是建議看這個例子的時候再翻翻數學書,并復習一下使用到的幾種數據類型說明。


三、 VaryingRestitution、VaryingFriction、Pyramid、PolyShapes
Box2D本身所自帶的教程相當的少,前兩個例程是關于摩擦力和彈性系數的例子,也僅僅修改了相關數據,算是一種演示吧,Pyramid這個例子也就是一個簡單的例子,只是使用了Make方法來創建向量。沒什么參考價值。
PolyShapes這個例子舉個自定義多邊形形狀的方法,你只要記住當前多邊形最多支持頂點數為8就行了。
四、 CollisionFiltering、
碰撞過濾是用來防止形狀與形狀之間進行碰撞的,就像上文所示,它可以用碰撞種類和組名來區別,Box2D總共提供16種碰撞種類,每個形狀都可以提定屬于什么種類,那么它就可以和其他不同種類的形狀碰撞,如果在一個多人在線游戲中,你想你的玩家在他們之間不進行碰撞,怪物和怪物之間不進行碰撞,但人和怪物進行碰撞,你可以使用
playerShapeDef.categoryBits = 0x0002; monsterShapeDef.categoryBits = 0x0004; playerShape.maskBits = 0x0004; monsterShapeDef.maskBits = 0x0002;
碰撞組索引是一個可以大量指定物體碰撞規則的東西,你可以通過它來指定成百上千的物體,當碰撞組索引為負數時,東西之間不碰撞,當為正數時進行碰撞,而且碰撞組索引的優先級比碰撞種類要高。
shape1Def.groupIndex = 2; shape2Def.groupIndex = 2; shape3Def.groupIndex = -8; shape4Def.groupIndex = -8;
形狀1和2就碰撞,因為組索引大于0,而3和4不碰撞,因為小于0
可以參考例子代碼來確定你的碰撞方法.

五、 ApplyForce
應力的應用是物理引擎中必不可少的部分,你有剛體能碰撞卻不能推動它,那么它必定會給你帶來很強的挫敗感。
在這個教程中,主要是對剛體的幾個方法進行了應用,這些方法都很簡單易用。
剛體有兩個點對我們有用,一個是剛體的坐標點,另一個是剛體的質心位置。剛體的質心位置就不需要你自己指出,Box2D將會自己算出這個坐標。
剛體有如下幾個成員變量,
uint32 m_flags;
質心位置:
b2Vec2 m_position;
質心旋轉度:
float32 m_rotation;
線性速度:
b2Vec2 m_linearVelocity;
角速度:
float32 m_angularVelocity;
力:
b2Vec2 m_force;
扭矩:
float32 m_torque;

形狀表:
b2Shape* m_shapeList;
形狀數:
int32 m_shapeCount;
關節表:
b2JointNode* m_jointList;
關節數:
b2ContactNode* m_contactList;
質量:
float32 m_mass, m_invMass;
float32 m_I, m_invI;
線性阻尼:
float32 m_linearDamping;
角阻尼:
float32 m_angularDamping;
休眠時間
float32 m_sleepTime;
用戶數據:
void* m_userData;


并有以下幾種方法:
1、設置剛體位置和旋轉度
void SetOriginPosition(const b2Vec2& position, float32 rotation);

2、取剛體當前位置

b2Vec2 GetOriginPosition() const;

3、設置剛體的質心位置及旋轉度

void SetCenterPosition(const b2Vec2& position, float32 rotation);

4、取得剛體的質心位置

b2Vec2 GetCenterPosition() const;

5、取得旋轉度

float32 GetRotation() const;
6、取得旋轉矩陣

const b2Mat22& GetRotationMatrix() const;

7、設置和取得質心的線性速度
void SetLinearVelocity(const b2Vec2& v);
b2Vec2 GetLinearVelocity() const;
8、設置和取得角速度
void SetAngularVelocity(float32 w);
float32 GetAngularVelocity() const;
9、應用一個力到世界點上
void ApplyForce(const b2Vec2& force, const b2Vec2& point);
force為力的大小,point為作用點
10、應用一個扭矩
void ApplyTorque(float32 torque);
11、在點上應用一個推力

void ApplyImpulse(const b2Vec2& impulse, const b2Vec2& point);
12、取得質量
float32 GetMass() const;
13、取得慣性
float32 GetInertia() const;
14、取得世界點(取得給定相對于質心的點的世界坐標)
b2Vec2 GetWorldPoint(const b2Vec2& localPoint);
15、根據屆出當前坐標系給的向量來得到世界向量
b2Vec2 GetWorldVector(const b2Vec2& localVector);
16、根據給定世界坐標來得到相對于質心的坐標
b2Vec2 GetLocalPoint(const b2Vec2& worldPoint);
17、根據一個世界向量來取得一個此時的向量
b2Vec2 GetLocalVector(const b2Vec2& worldVector);
18、判斷剛體是否靜止
bool IsStatic() const;
19、判斷剛體是否冷凍
bool IsFrozen() const;
20、判斷剛體是否休眠
bool IsSleeping() const;
21、你可以用它來單獨設置這個剛體是否可以休眠
void AllowSleeping(bool flag);
22、喚醒這個剛體
void WakeUp();
23、取得附加在這個剛體上的形狀表
b2Shape* GetShapeList();
24、取得附加在這個剛體上的聯系表
b2ContactNode* GetContactList();
25、取得附加在這個剛體上的所有關節表
b2JointNode* GetJointList();
26、取得這個剛體在世界剛體表中的下一剛體
b2Body* GetNext();
27、取得用戶數據
void* GetUserData();

void SynchronizeShapes();
void QuickSyncShapes();
// This is used to prevent connected bodies from colliding.
// It may lie, depending on the collideConnected flag.
bool IsConnected(const b2Body* other) const;
// This is called when the child shape has no proxy.
void Freeze();


標記
enum { e_staticFlag = 0x0001, e_frozenFlag = 0x0002, e_islandFlag = 0x0004, e_sleepFlag = 0x0008, e_allowSleepFlag = 0x0010, e_destroyFlag = 0x0020, };
雖然說剛體這個類的很多成員變量沒有私有化,但是還是建議你使用它的眾多方法來管理。
在進行力學應用的時候,經常會需要相關轉換坐標,所以建議找找相關書看看。

六、 Web
在開始之前,我們先來回顧一下以前所討論過的形狀,剛體,在這里我們來看看使用他們有什么值得注意的地方。
1、關于多邊形形狀定義,我們由b2_maxPolyVertices決定了最大頂點數為8,如果你想要更多的多邊形,那么我可以在b2Setting.h里面修改相關數值。你在使用多邊形時,一定要指定頂點數,而且頂點坐標得按逆時針順序(CCW),你不能交疊任何的頂點,多邊形會自動幫你閉合,同時這個多邊形得凸起的,也就是說你必須讓每個頂點都向外擴展一定角度,以上幾點很重要,不要因此引起許多莫名其妙的錯誤。
2、關于摩擦力和彈性系數,摩擦力與應力是成比例關系,它介出0和1之間,0表示無摩擦,1表示摩擦力很強,如果有兩個形狀都定義了摩擦力,那么它實際摩擦力將會是兩個摩擦力的乘積開根。
3、彈性系數讓物體能夠彈起來,值也介于0與1之間,如果一個球掉到桌面上來,這個值是0的時候則不會彈起來,如果是1的話那么就叫完全彈性碰撞,如果剛體中有兩個形狀都有不同的彈性系數,那么使用這個方法:
float32 restitution;
restitution = b2Max(shape1->restitution, shape2->restitution);
4、關于碰撞過濾,有三種情況下是附加影響碰撞的,靜態物體之間形狀不發生碰撞,同一個剛體中的形狀不發生碰撞,你能設置的在關節連接的兩個物體形狀間是否發生碰撞。
5、關于創建和銷毀一個形狀,你沒有必要去討論形狀的創建和銷毀,Box2D會幫你自動完成。
6、每一剛體添加形狀是由參數b2_maxShapesPerBody來控制的,目前最大設為64,如果你想要更大的話,那么你修改b2Setting.h里面相關數值。
7、關于剛體創建與銷毀,你不需要手動為一個剛體分配和釋放內存,這些都由引擎自動完成,所以你創建的時候,你僅僅需要:
b2Body* body = myWorld->CreateBody(&bodyDef);
???? 銷毀的時候:
???? myWorld->DestroyBody(body);
???? body = NULL;
8、當剛體被銷毀時,附加在上面的關節都會自動銷毀,你必須清空這些關節指針,不然你的程序會在你以后銷毀關卡的時候死得很難看。為了幫助你清空你的關卡指針,Box2D提供一個叫作b2WorldListener的監聽類,你可以應用它來清空,之后世界就會告訴你到一個關節被銷毀。
9、喚醒一個休眠物體你只能用b2Body::WakeUp,在它上面應用任何力是不可以喚醒一個剛體的。
10、要擅于利用剛體的轉換函數,它會幫我們解決很多問題。
11、在Debug模式下,最好能利用下列代碼把形狀顯示出來,幫助我們調試。
for (b2Shape* s = body->GetShapeList(); s; s = s->GetNext()) { GameDrawShape(s); }
12、Box2D里面所說的角度都是指弧度。
正文
在這一教程開始之前,先來討論關節。
關節(Joint)其實就是用來連接剛體的,你可以想像一下你的手。每一個關節也有一個關節定義b2JointDef,所有關節都連接在兩個不同的剛體之間,一個可能是靜態,如果你想浪費內存的話,就創建一個連在兩個靜態剛體上吧。
關節是物體引擎中的另一重要部分,所以Box2D中把它作了細分,我們目前暫時先討論在這個例程中使用的Distance關節。
先來看b2JointDef的結構:
struct b2JointDef { b2JointType type; void* userData; b2Body* body1; b2Body* body2; bool collideConnected; };
Type表示為類別e_unknownJoint、 e_revoluteJoint、e_prismaticJoint、 e_distanceJoint、 e_pulleyJoint、 e_mouseJoint、 e_gearJoint。Userdata是用戶數據,body1、body2為兩個剛體指針,collideConnected表示是否在兩個剛體之間檢查碰撞。
Distance Joint是一種用來連接兩個剛體的有距線段關節。你使用它的時候必須分別給兩個剛體指定兩個錨點,這兩個點意味著此關節的長度。

b2DistanceJointDef的結構
struct b2DistanceJointDef : public b2JointDef { b2Vec2 anchorPoint1; b2Vec2 anchorPoint2; };
繼承于b2JointDef,只是多了兩個錨點。

下面是此關節定義的一個應用:
b2DistanceJointDef jointDef; jointDef.body1 = myBody1; jointDef.body2 = myBody2; jointDef.collideConnected = true; jointDef.anchorPoint1 = myBody1->GetCenterPosition(); jointDef.anchorPoint2 = myBody2->GetCenterPosition();


參照Web例子,我們會發現定義一個關節其實也很簡單
1、指定關節定義
2、創建關節
3、結束時銷毀關節

七、 Chain、Bridge、Cradle
Chain、Bridge兩個例程是對Revolute Joint的應用,Revolute Joint是兩個剛體共用一個錨點,它有一個自由度,在這里被叫作關節角度。

為了指定一個Revolute你必須提供兩個剛體和一個錨點,引擎會假定這兩個剛體已經在正確位置上。
它的結構如下:
struct b2RevoluteJointDef : public b2JointDef { b2Vec2 anchorPoint; float32 lowerAngle; float32 upperAngle; float32 motorTorque; float32 motorSpeed; bool enableLimit; bool enableMotor; };
它也是繼承于b2JointDef,anchorPoint是錨點,lowerAngle為轉動角底限,upperAngle為轉動角上限,其他的這里暫時先不介紹。
Chain、Bridge兩個例子非常簡單,和Distance Joint相差不大,算是對Joint使用的再次鞏固。
八、 Pulleys
Pulleys是對Prismatic Joint、Pulley Joint的應用,Prismatic Joint是一種允許兩個剛體沿指定軸相對移動的關節,不允許相對旋轉,所以有一個自由度。

它的結構下:
struct b2PrismaticJointDef : public b2JointDef { b2Vec2 anchorPoint; b2Vec2 axis; float32 lowerTranslation; float32 upperTranslation; float32 motorForce; float32 motorSpeed; bool enableLimit; bool enableMotor; };
我們這時暫時只應用到anchorPoint,axis,axis為軸,lowerTranslation為移動底限,upperTranslation為移動上限,而其他幾項我們在Joint motor塊討論。
Pulley Joint用來創建理想滑輪,滑輪連接兩個剛體,一個上去,一個便下來,根據你的最初設定來決定你的繩長。
length1 + length2 ==常數C

你可以應用一個比例關系來模擬滑車裝置,這會導致一邊伸展得比另一邊快,同時約束力也是一邊大一邊小,你可以用它來創建杠桿。
length1 + ratio * length2 == 常數C
舉個例子,如果ratio(比例關系)是2,那么length1會變成length2的兩倍,當作用在附加在剛體1上的繩上的力將會是作用在附加在剛體2上的力的一半。
struct b2PulleyJointDef : public b2JointDef { b2Vec2 groundPoint1; b2Vec2 groundPoint2; b2Vec2 anchorPoint1; b2Vec2 anchorPoint2; float32 maxLength1; float32 maxLength2; float32 ratio; };
groundPoint1、groundPoint2是剛體1、2上面繩子的頂點,anchorPoint1、anchorPoint2是剛體與繩子連接的點,maxLength1、maxLength2為兩剛體的最大長度,ratio是比例系數。
九、 Gears

Gears內容里面有關于Revolute Joint、Prismatic Joint、Gear Joint的應用,前兩種已經在前面討論過,現在我們先看Gear Joint。

Gear Joint直接翻譯為齒輪關節,顧名思義就是用來處理齒輪類物體的相互關聯。
你在使用Gear Joint的時候必須先有一個附加了Prismatic Joint(此關節連接你的剛體和你的包容盒)的剛體和一個附加了Revolute Joint(此關節連接你的剛體和你的包容盒)的剛體咬合在一起。然后再用Gear Joint把這兩個剛體連接到一起。
和Pulley Joint一樣也有ratio值,在這里這個值可以是負數,記住我們兩必要關節一個是Revolute Joint,另一個是Prismatic Joint,所以
coordinate1 + ratio * coordinate2 == 常數C
這個例子已經應用了ratio值,你可以自己動手調調,來看看效果和作用。
Gear Joint依賴于兩個子關節,一般是在兩個子關節之前刪除,甚至于是在所有有關剛體被刪除之前刪除。
結構如下:
struct b2GearJointDef : public b2JointDef { b2Joint* joint1; b2Joint* joint2; float32 ratio; };
繼承于關節定義, joint1、joint2表示兩個定義在剛體上面的關節,ratio表示比例關系。

十、Joint(附加)
其實上面講了那么多種關節,但是我們都還沒有真正討論過joint,joint這里翻譯為關節,它的結構為
b2JointType m_type; b2Joint* m_prev; b2Joint* m_next; b2JointNode m_node1; b2JointNode m_node2; b2Body* m_body1; b2Body* m_body2; bool m_islandFlag; bool m_collideConnected; void* m_userData;
m_type是類型,分為 e_unknownJoint、e_revoluteJoint、 e_prismaticJoint、e_distanceJoint、e_pulleyJoint、e_mouseJoint、e_gearJoint。指針節點這些都應用在數據結構上,定義是兩個剛體對象:m_body1、m_body2,m_collideConnected表示連接剛體之間是否碰撞,還有一個函數指針型的m_userData來存儲自己的數據。m_islandFlag這個標識暫時不用去管。

支持的方法有:
1、b2JointType GetType() const;
取得關節類型。
2、b2Body* GetBody1();
取得剛體1
3、b2Body* GetBody2();
取得剛體2
4、virtual b2Vec2 GetAnchor1() const = 0;
取得錨點1
5、virtual b2Vec2 GetAnchor2() const = 0;
取得錨點2
6、virtual b2Vec2 GetReactionForce(float32 invTimeStep) const = 0;
取得反作用力
7、virtual float32 GetReactionTorque(float32 invTimeStep) const = 0;
取得反作用扭矩
8、b2Joint* GetNext();
取得下一個關節
9、void* GetUserData();
取得用戶數據
10、static b2Joint* Create(const b2JointDef* def, b2BlockAllocator* allocator);
創建關節
11、static void Destroy(b2Joint* joint, b2BlockAllocator* allocator);
銷毀關節
12、其他方法(暫不介紹)
virtual void PrepareVelocitySolver() = 0; virtual void SolveVelocityConstraints(const b2TimeStep* step) = 0; virtual void PreparePositionSolver() {} virtual bool SolvePositionConstraints() = 0;

以前所討論過的幾種關節都是繼承于b2Joint而來,下面列出了相關附加屬性和方法。不推薦直接使用相關成員變量來取值或賦值,要擅于利用相關功能函數來取值。
Gear Joint:
附加屬性(常用):
b2Body* m_ground1;
地面剛體1指針
b2Body* m_ground2;
地面剛體2指針

b2RevoluteJoint* m_revolute1;

RevoluteJoint指針1

b2PrismaticJoint* m_prismatic1;

PrismaticJoint指針1

b2RevoluteJoint* m_revolute2;

RevoluteJoint指針2

b2PrismaticJoint* m_prismatic2;

PrismaticJoint指針2


b2Vec2 m_groundAnchor1;
地面錨點1

b2Vec2 m_groundAnchor2;
地面錨點2

b2Vec2 m_localAnchor1;
當前錨點1

b2Vec2 m_localAnchor2;
當前錨點2
float32 m_ratio;
比例關系

float32 m_mass;
質量
float32 m_impulse;
推力
附加方法:
1、float32 GetRatio() const;
取得比例關系
Revolute Joint:
附加屬性:
b2Vec2 m_localAnchor1;

b2Vec2 m_localAnchor2;
b2Vec2 m_ptpImpulse;
float32 m_motorImpulse;
float32 m_limitImpulse;
float32 m_limitPositionImpulse;

b2Mat22 m_ptpMass; // effective mass for point-to-point constraint.
float32 m_motorMass; // effective mass for motor/limit angular constraint.
float32 m_intialAngle;
float32 m_lowerAngle;
float32 m_upperAngle;
float32 m_maxMotorTorque;
float32 m_motorSpeed;

bool m_enableLimit;
bool m_enableMotor;
b2LimitState m_limitState;
附加方法:

1、float32 GetJointAngle() const;
取得關節角度
2、float32 GetJointSpeed() const;
取得關節速度
3、float32 GetMotorTorque(float32 invTimeStep) const;
取得發動扭矩
4、void SetMotorSpeed(float32 speed);
取得發動速度
5、void SetMotorTorque(float32 torque);
設置發動扭矩
Prismatic Joint:
附加方法:
1、float32 GetJointTranslation() const;
取得關節位移
2、float32 GetJointSpeed() const;
取得關節速度
3、float32 GetMotorForce(float32 invTimeStep) const;
取得發動應力

4、 void SetMotorSpeed(float32 speed);
???? 設置發動速度
5、void SetMotorForce(float32 force);
設置發動速度
Revolute Joint:
附加方法:
1、float32 GetJointAngle () const;
取得關節角度
2、float32 GetJointSpeed() const;
取得關節速度
3、float32 GetMotorTorque (float32 invTimeStep) const;
取得發動扭矩

4、 void SetMotorSpeed(float32 speed);
???? 設置發動速度
5、void SetMotorTorque (float32 torque);
設置發動扭矩

十一、Joint motor(MotorsAndLimits、SliderCrank)
在開始之前,我們再來回顧一下Joint,我們前面討論過的情況來看,在幾種Joint中應用到motor的只有Prismatic Joint和Revolute Joint。在使用motor時總有那么幾個常見量,float32 motorTorque或者float32 motorForce、 float32 motorSpeed、bool enableLimit、bool enableMotor。
motorTorque或motorForce表示現在的扭矩或應力,Revolute Joint就是扭矩,因為他共用一個錨點,只能沿這錨點轉動,而Prismatic Joint支持基于軸的移動,所以他是應力。
motorSpeed表示的是把這應力或者扭距應用到剛體上的數值增減程度。(僅當參考,事實是你加大減少這個值會讓游戲數值瞬間變化量變多或變少,理解就行)
enableMotor是決定使用不使用Motor。
enableLimit決定上下限(角度或者長度)是否有用。
在SliderCrank這個例子中,先是定義了一個剛體,并用這個剛體和地面創建了一個Revolute Joint,這個Revolute Joint的motorTorque值設為一定值,讓這個剛體持續轉動,當然你的速度越快,轉動就越快。這個剛體又用Revolute Joint連接了一個剛體,但這個Revolute Joint無效了motor,所以這個剛體只能靠其他剛體讓他移動。又用Revolute Joint連接了活塞剛體,同樣是無效了motor,之后創建了Prismatic Joint來連接你的活塞和地面,給定了應力,所以這個應力就使得上面掉下來的塊上升。
注意他的相關坐標設置。
總結一下,這里真正提供動力的有兩個東西,一個是活塞,他是給下面掉下來的塊提供力量,另一個是最持續轉動的剛體盒子,他供給活塞以及他上面的塊能量。
MotorsAndLimits這個例子同樣很好理解,除了對motor的應用外,還使用了enableLimit值,這個值是用來做什么,上面說過了,是用來決定在JointDef中定義的相關上下限是否起效。
試著改動相關數據對你理解更有效。
十二、CollisionProcessing
CollisionProcessing這個例子是有關于Contacts的使用。這個東西是Box2D用來在形狀間檢測碰撞的,有很多不同種類的Contacts,比如說負責圓和圓碰撞的,負責圓和多邊形碰撞的。這些其實你都沒有必要去了解它,你只要會應用你最需要的就行了。
這里你最起碼需要了解的幾個概念:
Contact:就是用來管理碰撞的
contact manifold:這個東西就是碰撞時候產生的,是一個由碰撞點組成的矢量線段。
contact point:碰撞點

在例子CollisionProcessing中的Step部分,先從世界的Contacts表里取出你需要的連接,然后取得contact manifold的數量,如果有連接,然后再做出相應的處理。
b2Contact的結構:
重要的屬性:
發生碰撞的兩個形狀
b2Shape* m_shape1;

b2Shape* m_shape2;
contact manifold的數量
int32 m_manifoldCount;
組合摩擦力和彈性系數
float32 m_friction;
float32 m_restitution;
重要的成員函數:
取得相應的contact manifold
virtual b2Manifold* GetManifolds() = 0;
取得contact manifold數
int32 GetManifoldCount() const
取得下一個Contact
b2Contact* GetNext();
取得這個Contact的兩個形狀
b2Shape* GetShape1();

b2Shape* GetShape2();

Box2D的例子不多,但基本上所有東西都涉及到了,接下來我想拿幾個實例來與大家討論。

總結

以上是生活随笔為你收集整理的(老文章)Box2D新手入门顺阶教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产又粗又猛又色又黄视频 | 91香蕉视频720p | 亚洲视频免费视频 | 久久亚洲国产精品 | 91在线播 | 深爱五月激情网 | 久久久久久久久久久久久国产精品 | 国产v在线 | 看av免费 | 日韩中文字幕亚洲一区二区va在线 | 久久一区二区三区四区 | 亚洲成aⅴ人片久久青草影院 | 香蕉网在线播放 | 国产一级不卡毛片 | 狠狠操在线 | www.福利视频 | 波多野结衣久久精品 | 欧美一区二区三区不卡 | 中文字幕国产在线 | 国产一级在线看 | 五月婷婷综合色拍 | 91一区啪爱嗯打偷拍欧美 | www久| 五月婷婷操 | a v在线视频 | 亚洲精品在线国产 | 日韩av手机在线看 | 久久精品99国产国产 | 五月婷婷深开心 | 久久久不卡影院 | 日韩精品综合在线 | 国产破处视频在线播放 | 婷婷丁香在线观看 | 国产精品福利av | www天天操 | 91视频在线播放视频 | 狠狠色狠狠色综合日日小说 | 亚洲人成免费网站 | 国产精品一级视频 | 国产偷v国产偷∨精品视频 在线草 | 中文字幕在线播放一区 | 开心丁香婷婷深爱五月 | 欧美肥妇free | 夜夜嗨av色一区二区不卡 | 高潮久久久 | 国产精品一区二区久久 | 在线观看一级片 | 五月天色丁香 | 久久亚洲精品国产亚洲老地址 | 亚洲免费色 | 热久久免费视频精品 | 国产麻豆视频在线观看 | 岛国av在线 | 狠狠操影视 | 一区二区三区电影大全 | 欧美精品一区二区在线观看 | 亚洲精品中文字幕在线观看 | ,午夜性刺激免费看视频 | 日日日干| 在线看av的网址 | 国产日韩视频在线 | 1000部国产精品成人观看 | 久草在线精品观看 | 免费亚洲片| 青青草国产成人99久久 | 久 久久影院 | 久久综合九色欧美综合狠狠 | www天天干com | 久草在线观看视频免费 | 日韩av中文在线 | 久久99热这里只有精品国产 | 一级电影免费在线观看 | 天天操天天射天天操 | 一区二区三区免费在线 | 免费合欢视频成人app | 久久久久久国产精品亚洲78 | 欧美一区二区在线免费看 | 97理论片 | 香蕉视频国产在线观看 | 精品二区久久 | 美女视频黄频大全免费 | 激情久久伊人 | 永久免费毛片 | 久久艹在线观看 | 韩日精品视频 | 国产色网站 | 99免费在线视频 | 综合国产在线 | 亚洲日韩欧美一区二区在线 | 97在线免费观看视频 | 欧美在线1区 | 亚洲高清精品在线 | 亚洲一二三久久 | 国产精品久久久久高潮 | 中文字幕亚洲精品在线观看 | 人人爽人人| 亚洲午夜精品久久久久久久久久久久 | 久久五月婷婷丁香社区 | 国产精品一二 | 玖玖爱免费视频 | 亚洲成av人影院 | 婷婷九九 | 99色免费视频| 国产精品久久久久久久久久久久久 | www.夜夜操 | 日韩欧美精品一区二区三区经典 | 九九视频在线观看视频6 | 国产成人一级电影 | 国产日韩高清在线 | 亚洲一区免费在线 | 亚洲国产精品成人va在线观看 | 99久久久久久久 | 日韩精品一区二区三区水蜜桃 | 久久久久成人精品亚洲国产 | 日韩最新理论电影 | 免费日韩av片 | 在线免费观看国产精品 | 国产一二三精品 | 伊人看片 | 亚洲va综合va国产va中文 | 在线视频 亚洲 | 欧美日韩aaaa | 成人动漫一区二区 | 免费在线观看黄色网 | 亚洲精品乱码久久久久久 | 精品99久久久久久 | 亚洲精品a区 | 国产精品久久久999 国产91九色视频 | 91免费观看国产 | 97电院网手机版 | 成年免费在线视频 | a电影在线观看 | 四虎精品成人免费网站 | 天天色天天操天天爽 | 日日夜夜免费精品 | 又色又爽又激情的59视频 | 久久8| 99久热 | 草草草影院 | 精品黄色在线观看 | 中文字幕电影高清在线观看 | 日韩精品一区二区免费 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 亚洲精品国产视频 | 一区二区三区四区免费视频 | 日韩精品一区二区三区中文字幕 | 国产免费三级在线观看 | 欧美 亚洲 另类 激情 另类 | 91亚洲精品久久久中文字幕 | 国内小视频在线观看 | www.久草视频 | 九九精品视频在线看 | 91精品久久香蕉国产线看观看 | 美女一二三区 | 色婷婷色| 日韩激情中文字幕 | 免费福利小视频 | 亚洲电影久久 | 日本精品视频在线观看 | 国产精品1000 | 日日夜夜天天久久 | 国产精品一区二区免费在线观看 | 在线观看免费成人 | 在线视频观看成人 | 国产va在线| 成人免费在线视频观看 | 亚洲色图27p | 精品亚洲网 | 99久久精品一区二区成人 | 国产精品久久在线 | 美女免费视频黄 | 91福利影院在线观看 | 色丁香婷婷 | 91丨九色丨蝌蚪丰满 | 欧美一级片 | 色婷婷久久久综合中文字幕 | 日韩免费在线观看视频 | 999久久久久久 | 中文字幕视频一区二区 | 久久视频精品在线 | 永久免费的av电影 | 久久免费电影网 | www日韩视频 | 日韩欧美大片免费观看 | 免费的黄色的网站 | 欧美最新大片在线看 | 久久国产精品久久精品国产演员表 | 日韩av黄 | 亚洲激情六月 | 最近中文字幕大全 | 国产黄色理论片 | 婷婷激情影院 | 国产精品一区在线播放 | 久久久久亚洲精品国产 | 国产人在线成免费视频 | 五月婷综合 | av免费片| 欧美日韩一区二区视频在线观看 | 天天射天天操天天 | 欧美极品一区二区三区 | 91麻豆免费看 | 国色天香永久免费 | 美女网站在线观看 | 久久观看最新视频 | www.com在线观看 | 亚洲成人蜜桃 | 又长又大又黑又粗欧美 | 久久一区二区三区超碰国产精品 | 日韩av有码在线 | 国产亚洲精品久久久网站好莱 | 久久午夜网 | 免费看片日韩 | 久热只有精品 | 亚洲精品1区2区3区 超碰成人网 | 色综合天天综合网国产成人网 | 久久呀| 久久久久久网址 | 久久国产精品久久久久 | 超碰在线97观看 | 天天射综合网站 | 久久区二区| 国产精品a成v人在线播放 | 天天se天天cao天天干 | 网站在线观看日韩 | 亚洲精品乱码久久久久久按摩 | 天天摸日日操 | 欧美日韩三级在线观看 | 激情 婷婷 | 97超碰在线免费观看 | 国产精品麻豆91 | 高潮毛片无遮挡高清免费 | 天天色天天草天天射 | 又黄又爽又湿又无遮挡的在线视频 | 麻豆系列在线观看 | 国产精品久久久久久久久久久久冷 | 黄色国产区| 国产亚洲va综合人人澡精品 | 超碰免费公开 | 日韩欧美69| 午夜精品福利一区二区三区蜜桃 | 国产69精品久久久久久久久久 | 免费人做人爱www的视 | 日本少妇视频 | 97成人超碰| 91视频 - 88av| 欧美色精品天天在线观看视频 | 婷婷久久婷婷 | 精品视频免费播放 | 免费看搞黄视频网站 | 日韩久久久久久久 | 亚洲精品国产综合99久久夜夜嗨 | 国产高清视频免费最新在线 | 国产精品美女免费看 | 婷婷久久网 | 色在线免费观看 | 亚洲免费精品视频 | av色综合| 久久免费视频1 | 久久高清片 | 亚洲每日更新 | 亚洲手机av | 91色欧美| 国产伦理一区二区 | a电影在线观看 | 国产精品日韩在线观看 | 亚洲视频 中文字幕 | 日韩欧美高清在线 | 手机成人免费视频 | 99精品在这里 | 国产精品欧美一区二区 | 国产成人精品一区二区三区福利 | 欧美另类高清 videos | 日本中文一级片 | 日韩视频在线一区 | 日韩精品欧美专区 | 亚洲专区路线二 | 国产免费又粗又猛又爽 | 麻豆视传媒官网免费观看 | 在线综合色| 国产精品中文字幕在线播放 | 欧美日bb| www.久久爱.cn| 久久麻豆视频 | 日韩在线免费看 | 久久久久久久久久久高潮一区二区 | 日本婷婷色 | 在线免费观看国产黄色 | 免费日韩一级片 | 午夜三级在线 | 久久久国产精品亚洲一区 | 亚洲国产精品推荐 | 中文av在线免费观看 | 91麻豆精品国产91久久久无限制版 | 国产亚洲一区二区在线观看 | 国产一区二区三精品久久久无广告 | 天堂av在线 | 天天曰天天曰 | 亚洲在线a | av免费电影在线 | 日韩电影在线视频 | 久久免费99精品久久久久久 | 一级淫片a| 久久精品影视 | 开心色插 | 亚洲欧美日韩精品久久奇米一区 | 99热这里只有精品免费 | 亚洲精品久久久久久久不卡四虎 | 亚洲va欧洲va国产va不卡 | 日韩在线高清免费视频 | 亚洲永久精品在线 | 国产精品久久久久毛片大屁完整版 | 国产一区二区播放 | 亚洲国产成人精品久久 | 天天综合狠狠精品 | 福利精品在线 | 日日夜夜91 | 伊人天天干 | 亚洲a成人v | 99久久精品无免国产免费 | 国产成人一区在线 | 天天射天天操天天干 | 激情www | 国产亚洲精品免费 | 99热 精品在线 | 波多野结衣在线中文字幕 | 在线观看不卡的av | 久久久久久久久久影院 | 99热只有精品在线观看 | 涩av在线| 九色福利视频 | 91社区国产高清 | 午夜精品久久久久久久久久 | 九九视频这里只有精品 | 精品伊人久久久 | 永久免费视频国产 | 激情黄色av | 98精品国产自产在线观看 | 黄色软件大全网站 | 成人毛片a| 国产精品九九九九九九 | 免费91麻豆精品国产自产在线观看 | 一区二区三区在线免费观看 | 91精品久久久久久粉嫩 | 最近中文字幕高清字幕免费mv | av成人免费观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 青草草在线 | 六月丁香在线观看 | 成人国产精品久久久 | 三级av片 | 国内精品久久久久影院日本资源 | 国产精品久久久久久久久久久免费看 | 欧美精品一二 | 夜夜高潮夜夜爽国产伦精品 | 免费特级黄色片 | 久久99精品国产麻豆婷婷 | 人人爽人人片 | 欧美精品网站 | 国产在线小视频 | 天天射综合网视频 | 天堂网一区二区 | 国产精品久久久久久久妇 | 久久综合九色综合欧美狠狠 | 成人黄色av网站 | 国产在线观看免费 | 国产精品久久久久久久久久免费 | 最近高清中文在线字幕在线观看 | 一区二区视频电影在线观看 | 久久免费国产视频 | 日日夜操 | 一区二区不卡 | a级片韩国 | 日韩精品无码一区二区三区 | www久久久久 | 欧洲一区二区在线观看 | 91在线视频精品 | 免费久草视频 | 美女视频黄免费网站 | 国产青春久久久国产毛片 | 国产美女视频免费观看的网站 | 99久久激情视频 | 二区三区中文字幕 | 免费瑟瑟网站 | av手机版 | 久久久久久久久久福利 | 中文字幕高清免费日韩视频在线 | 人人爽人人| 在线观看一二三区 | 91最新中文字幕 | 久草免费在线观看 | 99r精品视频在线观看 | 亚洲国产一区在线观看 | 日韩欧美专区 | 麻豆视频在线免费 | 国产91九色视频 | 91亚·色| 亚洲视频电影在线 | 69精品久久久 | 欧美在线观看小视频 | 四川bbb搡bbb爽爽视频 | 91精品爽啪蜜夜国产在线播放 | 麻豆视频在线看 | 午夜精品中文字幕 | 亚洲欧美日韩国产精品一区午夜 | 五月婷丁香 | 麻豆va一区二区三区久久浪 | 日韩专区视频 | 欧美91精品久久久久国产性生爱 | 午夜国产影院 | 精品久久久久久国产91 | 久久成人在线 | 欧美一级在线观看视频 | 狠狠色综合网站久久久久久久 | 亚洲电影一区二区 | 亚洲国产成人久久 | 在线观看亚洲精品 | 久久永久免费 | av电影久久 | 美女视频黄,久久 | 久久看片网站 | 五月天电影免费在线观看一区 | 成人在线观看av | 久久精品国产一区二区电影 | www天天干 | www.夜色.com| 亚洲天堂香蕉 | 免费在线黄色av | 精品国产123 | 99爱精品视频 | 91色综合| 人人藻人人澡人人爽 | 97人人模人人爽人人少妇 | 国产女做a爱免费视频 | 在线99视频| 中午字幕在线 | 国产精品一区在线 | 特级毛片爽www免费版 | 成年人在线免费看视频 | av一级二级| 国产 中文 日韩 欧美 | 91丨九色丨国产丨porny精品 | 国产精品视频区 | 夜夜操网 | 伊人五月天婷婷 | 免费a网址 | 日韩中文字幕免费视频 | 中文字幕在线看视频国产 | 亚洲精品视频免费观看 | 国产精品美女久久 | 精品在线小视频 | 国产99区 | 五月天久久综合 | av看片在线观看 | 午夜久久影视 | 中文字幕免费观看全部电影 | 婷婷五天天在线视频 | 国产精品成人在线 | 久久在线免费视频 | 国产麻豆视频在线观看 | 十八岁免进欧美 | 午夜骚影 | 毛片a级片 | 超碰人在线 | 8x成人免费视频 | 一区二区免费不卡在线 | 国产欧美高清 | 免费看成年人 | 97av在线| 九九交易行官网 | 亚洲国产丝袜在线观看 | 超碰97久久 | 日韩激情中文字幕 | 精品久久片 | 久久久久久久久久久久99 | 黄色小说免费观看 | 胖bbbb搡bbbb擦bbbb | 国产精品一区二区久久久久 | 国产一级片观看 | 99久久免费看 | 人人射人人爽 | 91九色视频国产 | 久久精品麻豆 | 人人擦| 久操免费视频 | av福利在线| 色av色av色av| 精品高清视频 | 国产日韩在线播放 | 国产午夜影院 | 97网| 久久99国产精品久久 | 欧美人操人 | 天天射天天射 | 日韩av片无码一区二区不卡电影 | 97香蕉久久超级碰碰高清版 | 91在线精品秘密一区二区 | 超碰在线最新地址 | 国产亚洲精品成人av久久ww | 在线国产中文字幕 | 亚洲激情婷婷 | 精品亚洲va在线va天堂资源站 | 欧美视频日韩 | 久久理论电影网 | h视频在线看 | 亚洲三级精品 | 亚洲专区免费观看 | 精品成人久久 | 狠狠操天天操 | 视频福利在线 | 九色porny真实丨国产18 | 91在线网址 | 亚洲最新精品 | 992tv在线观看 | 超碰在线99 | 日韩综合视频在线观看 | 久久精品网站免费观看 | 免费看黄在线网站 | 久久 地址 | 黄色a一级视频 | 久久一线 | 久久久久久免费毛片精品 | 麻豆精品视频在线观看免费 | 亚洲一区久久 | 日韩在线视频网址 | 免费视频久久久 | 欧美色综合天天久久综合精品 | 五月激情站 | 亚洲精品在线看 | 在线a人v观看视频 | 97电影在线观看 | 免费观看mv大片高清 | 人人看97 | 久久字幕精品一区 | av成人在线看 | 国产一级片不卡 | 国产午夜小视频 | 三级黄色在线观看 | 91九色精品国产 | 97成人精品区在线播放 | 婷婷在线不卡 | 99久久久久成人国产免费 | 麻豆国产精品永久免费视频 | 亚洲最新视频在线 | 国产一区二区不卡视频 | 美女黄频在线观看 | 999久久久免费视频 午夜国产在线观看 | 欧美亚洲免费在线一区 | 91香蕉视频黄色 | 91亚洲精品在线 | 中文永久免费观看 | 国产99爱| 日本黄色片一区二区 | www久久99| 久久精品亚洲综合专区 | 中文字幕亚洲精品日韩 | 久在线观看视频 | 欧美性成人 | 国产美腿白丝袜足在线av | 成片免费观看视频大全 | 久草视频精品 | 黄色性av | 69国产精品视频免费观看 | 亚洲国产一二三 | 欧洲精品久久久久毛片完整版 | 青青河边草免费 | 天堂网一区二区 | 91精品国| 日日夜夜婷婷 | 国产亚洲午夜高清国产拍精品 | 久草在线免费看视频 | 国产精品女主播一区二区三区 | 亚洲精品视频国产 | 国产成人精品亚洲a | 狠狠精品| 久草视频在线资源 | av网站免费线看精品 | 国产精品国产三级国产aⅴ入口 | 成人中文字幕在线 | 激情av一区二区 | 久久99视频精品 | 精品日韩在线 | 最近日本mv字幕免费观看 | 91亚洲精品乱码久久久久久蜜桃 | 在线看v片成人 | 国产剧情av在线播放 | 国产亚洲精品久久久久久无几年桃 | 日韩久久久久久久久 | 青青河边草观看完整版高清 | 欧美国产日韩一区二区 | 亚洲精品视频在 | 免费国产一区二区视频 | 亚洲免费专区 | 91完整版| 夜夜骑日日| 午夜精品一区二区三区可下载 | 人人插人人澡 | 久久久久久久久久久综合 | 国产精品国产三级国产aⅴ无密码 | 中文字幕日韩在线播放 | 成人在线免费av | 中文在线天堂资源 | 日日日天天天 | 91视频91自拍 | 国内精品久久久久久久久久久 | www.狠狠插.com | 欧美a视频在线观看 | 九色91福利 | 国产一级片不卡 | 美女在线免费视频 | 欧美日本在线观看视频 | 国产精品视频观看 | 在线看片91 | 91av原创 | 麻豆 free xxxx movies hd| 波多野结衣在线观看一区 | 欧美精品一区二区蜜臀亚洲 | 中文字幕.av.在线 | 狠狠的干 | a级国产乱理伦片在线观看 亚洲3级 | 日韩视频在线观看免费 | 欧美精品在线观看免费 | 久久国产精品99久久久久 | 日本中文字幕在线电影 | 欧美成人精品欧美一级乱黄 | 国产69精品久久久久久 | 国产九九九九九 | 免费日韩av片 | 精产嫩模国品一二三区 | 四虎最新入口 | 久久99国产精品免费网站 | 精品在线亚洲视频 | 天天色天天骑天天射 | 免费观看www7722午夜电影 | 色九色 | 久久精品久久久久久久 | 久久久久久久亚洲精品 | 人人澡人人模 | 日日摸日日添夜夜爽97 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 久久99久久精品 | 亚洲午夜在线视频 | 91在线视频导航 | 九九热中文字幕 | 亚洲黄色免费在线看 | 亚洲一区视频在线播放 | 一级黄毛片 | 天天插日日插 | 91在线视频免费播放 | 久久在线免费观看视频 | 激情丁香婷婷 | 一区二区 不卡 | 91看片成人 | 天天综合亚洲 | 国产精品免费人成网站 | 国产精品精 | 久久国产片 | 久久99精品国产麻豆宅宅 | 美女精品久久久 | 婷婷福利影院 | av电影在线播放 | 在线91视频 | 波多野结衣在线播放一区 | 欧美伦理一区二区 | 国产精品成人自拍 | 日韩一二三 | 香蕉视频免费在线播放 | 国产网站色 | 色婷婷丁香 | 久久久久久久久亚洲精品 | 日韩亚洲在线视频 | 91人人人| 在线观看一区 | 国产一二三精品 | 欧美极品少妇xxxx | 99精品热 | 久草av在线播放 | 久久精品观看 | 9草在线| a成人v| 日韩精品中文字幕在线不卡尤物 | 日韩欧美一区二区在线观看 | 久久久精品 一区二区三区 国产99视频在线观看 | 日日躁你夜夜躁你av蜜 | 亚洲精品18p | 日韩在线精品 | 午夜丰满寂寞少妇精品 | 高清av中文在线字幕观看1 | 久久免费国产精品 | 99久久免费看| 欧美日bb| 中文字幕在线免费看 | 国产精品av一区二区 | 欧美 另类 交 | 欧美日韩a视频 | 精品在线你懂的 | 黄色成人在线网站 | 国产日韩欧美视频在线观看 | 亚洲欧洲中文日韩久久av乱码 | 中文国产在线观看 | 亚洲天堂va | 国产精品视频内 | 精品国产自| 日韩视频在线观看免费 | 91免费高清视频 | 免费a v观看| 夜夜爽天天爽 | 成人性生交大片免费观看网站 | 久久久久久久久久久高潮一区二区 | 国内视频 | 久久人人精| 国产精品免费久久久久久久久久中文 | 日韩特黄一级欧美毛片特黄 | 免费下载高清毛片 | 视频国产一区二区三区 | 中文字幕国内精品 | 国产欧美在线一区二区三区 | 六月色播| 在线亚洲观看 | 国产情侣一区 | 久久国产精品偷 | 激情综合啪 | 天天干夜夜擦 | 国产成人精品一区在线 | 国产福利一区二区三区在线观看 | 亚洲国产精品500在线观看 | 999久久久免费视频 午夜国产在线观看 | 粉嫩av一区二区三区四区在线观看 | 免费看一级黄色 | 色欲综合视频天天天 | 蜜臀一区二区三区精品免费视频 | 999ZYZ玖玖资源站永久 | 久久久久久久久久久免费视频 | 国产精品男女视频 | 国产精品wwwwww | 夜夜爽88888免费视频4848 | 黄色免费网站下载 | 2019天天干夜夜操 | 超碰人人草人人 | 久久怡红院 | 又湿又紧又大又爽a视频国产 | 久久99视频免费观看 | 日韩欧美高清不卡 | 去干成人网 | 久久福利小视频 | 久草在线一免费新视频 | 久草新在线 | 成人av在线亚洲 | 国产伦理一区二区 | 九九九在线观看 | 狠狠躁日日躁夜夜躁av | 欧美色就是色 | 欧美91精品国产自产 | 欧美日韩免费一区二区三区 | 亚洲国产综合在线 | 日韩资源在线观看 | 成人免费网视频 | 狠狠色丁香婷婷综合基地 | 欧美成人精品欧美一级乱黄 | av动态图片| 国语自产偷拍精品视频偷 | 91视频麻豆视频 | 久99精品| 欧美a级在线 | 精品在线观看一区二区三区 | 亚洲免费专区 | 五月网婷婷 | 亚洲开心激情 | 手机看片国产日韩 | 999电影免费在线观看2020 | 久久国产精品一区二区三区四区 | 国产高清免费在线播放 | 日韩av影视在线 | 激情婷婷av| 欧美日韩在线精品一区二区 | 视频91在线| 91精品在线免费观看 | 在线视频手机国产 | 婷婷国产视频 | 六月丁香久久 | 中文字幕日韩电影 | 天天色天天射综合网 | 国内免费的中文字幕 | 国产成人61精品免费看片 | 黄色片视频在线观看 | 色的网站在线观看 | 日韩三级视频在线观看 | 青青河边草观看完整版高清 | 亚洲,播放 | 国模一区二区三区四区 | 开心色停停 | 丁香五月缴情综合网 | 欧美va天堂在线电影 | 91av资源在线| 性日韩欧美在线视频 | 久草在线久草在线2 | 不卡国产视频 | 国产一区福利在线 | 91男人影院 | 精品国产99国产精品 | 天天爽夜夜爽人人爽曰av | 国产成人精品999 | 亚洲国产成人久久 | 在线亚洲小视频 | 91亚洲国产成人久久精品网站 | 99久久影视 | 久久免费精品一区二区三区 | www.久久免费 | 99免费在线 | 一本一道久久a久久精品蜜桃 | 精品亚洲va在线va天堂资源站 | 国产小视频福利在线 | 国产精品免费久久久久久久久久中文 | 丁香婷五月 | 久久观看免费视频 | 免费视频91蜜桃 | 中文字幕成人网 | 在线观看 亚洲 | 九色福利视频 | 久久综合九九 | 不卡视频在线 | 欧美日韩成人 | 天天色天天上天天操 | 麻豆视频免费入口 | 精品在线观看免费 | 欧美日韩调教 | 69国产精品视频 | 日本爱爱免费 | 天天干天天射天天爽 | 五月花婷婷 | 国产高清区 | 免费av高清| 日韩在线视频网 | 国产精品综合在线 | 四虎在线影视 | 色av婷婷| 久久国产成人午夜av影院潦草 | 国产精品久久久久久久久久久久午 | 黄视频网站大全 | 国产精品 欧美 日韩 | av专区在线 | 亚洲精品综合欧美二区变态 | 亚洲高清免费在线 | 综合色影院 | 国产精品福利一区 | 成人免费大片黄在线播放 | 成人国产精品久久久春色 | 久久久国产一区二区三区四区小说 | 日p视频 | 成人性生交视频 | 女人18片 | 蜜桃av久久久亚洲精品 | 亚洲mv大片欧洲mv大片免费 | 精品国内自产拍在线观看视频 | www.夜夜夜 | 日韩电影精品一区 | 天天操夜夜操 | 国产精品久久免费看 | 美女网站视频免费黄 | 亚洲久草在线 | 在线免费观看麻豆视频 | 91爱爱视频| 蜜臀一区二区三区精品免费视频 | 黄色一二级片 | 一区二区三区四区五区在线 | 国产香蕉久久精品综合网 | h久久| 日韩高清一二三区 | 亚洲精品乱码久久久久久高潮 | 91精品视频免费看 | 99热精品国产 | 精品久久久久久综合日本 | 亚洲高清久久久 | 国产天天综合 | 日韩av快播电影网 | 国产高清在线精品 | 国产视频日本 | 精品91| 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩在线高清免费视频 | 2022国产精品视频 | 国产精品1区2区 | 国产香蕉97碰碰久久人人 | 99热这里只有精品国产首页 | 国产少妇在线观看 | 天天综合网在线观看 | 91久色蝌蚪 | 精品视频国产一区 | 精品一区二区三区久久久 | 蜜桃麻豆www久久囤产精品 | 日韩免费视频观看 | 国产精品久久久久久久久久免费看 | 国产涩图 | 麻豆传媒一区二区 | 国产视频1 | 精品999在线 | 精品久久一二三区 | 国产五月天婷婷 | 欧美性天天 | 国产精品日韩 | 日韩精品免费一区 | 久久久久久片 | 久精品视频在线 | 五月婷婷在线观看视频 | 69精品人人人人 | 国产亚洲精品精品精品 | 国产 欧美 在线 | 欧美夫妻生活视频 | 天海翼一区二区三区免费 | 久久av一区二区三区亚洲 | 在线观看视频色 | av噜噜噜在线播放 | 国产手机视频在线 | 日韩在线观看小视频 | 狠狠干天天色 | 天天天天天天天操 | 国产无吗一区二区三区在线欢 | 久久精品视频在线看 | 97精品视频在线播放 | 五月婷婷影视 | 中文字幕亚洲欧美日韩2019 | 91麻豆精品国产自产在线游戏 | 国产精品18毛片一区二区 | 成人香蕉视频 | 欧美精品被 | 五月天久久精品 | 天天操天天吃 | 五月激情亚洲 | 黄av免费在线观看 | 国产丝袜在线 | 国产亚洲精品久久久久动 | 久久99精品热在线观看 | 国产黄色资源 | 夜夜看av| 最新国产中文字幕 | 国产精品区二区三区日本 | 精品美女国产在线 | 欧美日韩一区二区久久 | 精品国产一区二区三区男人吃奶 | 国产精品igao视频网入口 | 亚洲精品黄网站 | 久久综合影音 | 国产99久久九九精品 | 96av在线视频| 高清国产午夜精品久久久久久 | 国产精品免费在线 | 免费看一级特黄a大片 | 中文在线资源 | 成人黄色一级视频 | av免费看av| 亚洲欧洲国产日韩精品 | 人人天天夜夜 | 久久人人爽人人爽 | 狠狠干夜夜| 一区在线观看视频 | 国产第一页福利影院 | 亚洲一二三区精品 | 国产精品国产毛片 | 国产福利一区二区三区在线观看 | 欧美日本一二三 | 最新av网站在线观看 | 亚洲自拍偷拍色图 | 欧美久久久久久久久久久久久 | 中文字幕在线观看第二页 | 在线免费观看麻豆 | 天天色影院| 久久精品99国产精品亚洲最刺激 | 2020天天干天天操 | 午夜精品电影 | 中文字幕视频三区 | 久久久国产精品免费 | 黄网站a| 国产在线看一区 | 成人在线播放免费观看 | 男女激情麻豆 | 亚洲 中文 在线 精品 | 中文字幕91在线 | 一本一本久久a久久精品综合 | 成人亚洲综合 | 欧美色噜噜 | 一区中文字幕 | 亚洲在线成人精品 | 91精品免费 | 91福利小视频 | 久久黄色小说视频 | 久久精品视频网站 | 菠萝菠萝在线精品视频 | 免费视频三区 | 亚洲最新在线视频 | 国产成人一区二区啪在线观看 | 91av免费在线观看 | 国产视频久 | 夜夜夜精品 | 国产尤物在线视频 | 在线免费视 | 超碰97在线资源站 | 色吊丝av中文字幕 | 国产精品字幕 | 国产美女视频免费观看的网站 |