怎樣在CocosCreator中使用物理引擎關節

CocosCreator版本2.4.2

mousejoint鼠標關節

cocos文檔定義:

鼠標關節用於使剛體上的一個點追蹤一個指定的世界坐標系下的位置。 鼠標關節可以指定一個最大的裡來施加一個柔和的約束。

鼠標關節會自動使用 mouse region 節點來註冊鼠標事件,並且在觸摸移動事件中移動選中的剛體。

註意:一般鼠標關節隻在測試環境中使用

說明:

任意cc.Node上添加鼠標關節,設置mouseRegion為Canvas,彈力和阻尼都為1

Mouse Region:鼠標註冊節點

Frequency:彈力,表示拉扯物體的力度,值越大,彈力越大。就像一個橡皮筋綁在球上,你拉橡皮筋,力越大,球動得越快。

DampingRatio:阻尼,表示拉扯物體後,物體受到的阻力。好比1是在空氣中用橡皮筋拉球,10就是在水裡面用橡皮筋拉球,阻尼越大,球動的越慢。

distanceJoint距離關節

cocos文檔定義:

距離關節通過一個固定的長度來約束關節鏈接的兩個剛體。你可以將它想象成一個無質量,堅固的木棍。

說明:

兩個剛體隻能繞著各自的節點旋轉,兩個節點間的距離保持不變。

ConnectedBody:關節另一端的剛體。

Anchor:關節所在剛體錨點

ConnectedAnchor:關節另一端剛體錨點

CollideConnected:關節兩端的剛體是否發生碰撞

Distance:距離,200像素

Frequency:彈力。如果設置為10,兩個剛體之間會有彈力,像兩個物體裡有個彈簧連著。 如果設置為0,表示始終保持200像素距離不會變,就像木根連著。

DampingRatio:阻尼

關節需要連接著2個剛體,圖中的兩個圓點和虛線,表示剛體的錨點和關節連接線。

distance為200,兩個剛體始終保持200的距離。且隻能在各自的節點上旋轉。

應用:

距離固定,兩端節點可以旋轉,關節可以設置彈性

1. 一端固定,可以做成大擺錘

2. 一端固定,設置彈性,有彈性的大擺錘

motorjoint馬達關節

cocos文檔定義:

馬達關節被用來控制兩個剛體間的相對運動。 一個典型的例子是用來控制一個動態剛體相對於地面的運動。

說明:

馬達關節是限制兩個剛體,使兩個剛體的相對位置和角度保持一致。當BodyA的位置和角度變化時,BodyB會用MaxForce和MaxTorque的力向著BodyA的位置和角度移動。

Connected Body:關節另一端剛體

CollideConnected:關節兩端剛體是否碰撞

LinearOffset:另一端剛體相對於起始剛體的位置偏移量。也就是BodyB的目標位置。

AngularOffset:另一端剛體相對於起始剛體的角度偏移量。也就是BodyB的目標角度。

MaxForce:可應用於剛體的最大力值。

Max Torque:可應用於剛體的最大扭矩力。

CorrectionFactor:位置矯正系數,范圍[0,1]。默認0.3。BodyB向著BodyA移動的緩動因子。值越大,緩動越快。

linear offset為200,表示兩個剛體位置偏移為200,一旦偏離瞭這個限制,兩個剛體會用max force 300的力移動到相距200的位置。

angularoffset為0,角度偏移為0,一旦偏離瞭這個限制,兩個剛體會用maxtorque 100的力,使兩個剛體角度保持偏移為0。

應用

使用力和扭矩力,使兩個剛體保持位置和角度一致

1. 一端固定,可以做成不倒翁、放置在地面的拳擊沙袋

prismaticJoint位移關節

cocos文檔定義:

移動關節指定瞭隻能在一個方向上移動剛體。 你可以開啟關節限制來設置剛體運行移動的間距,也可以開啟馬達來使用關節馬達驅動剛體的運行。

說明:

不能旋轉,隻能在限制的坐標軸上移動。

LocalAxisA:指定剛體可以移動的方向。這裡X=1,表示隻能在X軸左右移動。

ReferenceAngle:相對角度。關節兩端的剛體之間的相對角度。

EnableLimit:是否開啟關節的距離限制。開啟後,關節剛體隻能在限制的LowerLimit和UpperLimit范圍內移動。這裡表示隻能在x軸200-400像素之間移動。

EnableMotor:是否開啟馬達。開啟後剛體會以maxmotorforce的力向指定坐標軸移動,直到速度達到motorspeed。

可以看到剛體隻能在x軸移動,並且移動范圍限制在200-400像素。這可用於一些橫版遊戲中,隻能左右或者指定方向移動的地形、機關等。

應用

限制指定方向移動,不能旋轉,可選馬達,可選限制范圍

1. 開啟馬達,限制x軸左右移動,限制移動范圍在兩個端點,可以做成來回移動的滑軌車

2. 抽屜

revoluteJoint旋轉關節

cocos文檔定義:

旋轉關節可以約束兩個剛體圍繞一個點來進行旋轉。 你可以通過開啟關節限制來限制旋轉的最大角度和最小角度。

你可以通過開啟馬達來施加一個扭矩力來驅動這兩個剛體在這一點上的相對速度。

說明:

和其他關節差不多,都是限制一些角度和力的參數。

中間為關節另一端的剛體,類型為static。 綁定關節的剛體以1000的力在距離關節另一端剛體(13,202)的位置旋轉。

我們用旋轉關節做一輛小車。紅色相當於車身,白色相當於車輪。

紅色為綁定revoluteJoint的node,節點綁著兩個revoluteJoint關節,關節的Connected Body分別是兩個白色的box剛體,相當於車輪。

每個車輪有maxmotortorque 500的力,最大速度為motorspeed 200。

應用

兩個剛體繞一個點旋轉,可選旋轉角度,可選馬達

1. 一端固定,一端開啟馬達旋轉, 電風扇、車輪

2. 關閉馬達,隻設置旋轉范圍,可組成人體的關節

3. 繩子

為什麼繩子不用繩子關節來做,因為繩子關節不能限制旋轉范圍,不能限制位置范圍,不能限制旋轉節點。

ropeJoint繩子關節

cocos文檔定義:

繩子關節隻指定兩個剛體間的最大距離,沒有其他的效果。 註意:如果你試圖動態修改關節的長度,這有可能會得到一些意外的效果。

說明:

maxlength:繩子的最大距離

沒啥特點吧。他們沒有彈力,沒有馬達。僅僅是像繩子綁著兩個剛體,被限制在maxlength 200范圍內。

應用

限制最大長度

1. 溜溜球

2. 遛狗,狗繩

weldJoint焊接關節(熔接關節、粘貼關節)

cocos文檔定義:

熔接關節相當於將兩個剛體粘在瞭一起。 熔接關節可能會使某些東西失真,因為約束求解器算出的都是近似值

說明:

像兩個剛體被一條鋼筋焊接起來瞭。和距離關節相比,距離關節的兩個剛體可以在各自節點旋轉,焊接關節兩個剛體則不可以在各自節點旋轉。

如果設置Frequency彈力的話,比如Frequency=0.5,關節剛體可以在自己節點旋轉,但是另一端剛體則不可以旋轉。

應用

兩個剛體被焊接(粘貼)在一起,可以設置彈性

1. 剛體可以被焊接在一起

2. 也可以理解各種剛體被粘貼在一起

3. 一個遊戲

4. 設置彈性後,關節所在剛體可以旋轉。例如柔體矩形,矩形可以彎曲。

焊接關節組成的圓環,設置彈性後,可以彎曲。

wheeljoint輪子關節

cocos文檔定義:

輪子關節提供兩個維度的自由度:旋轉和沿著指定方向上位置的移動。 你可以通過開啟關節馬達來使用馬達驅動剛體的旋轉。 輪組關節是專門為機動車類型設計的。

說明:

輪子關節,由 Revolute 和 Prismatic 組合成的關節,用於模擬機動車車輪。

LocalAxis:指定剛體可以移動的方向

MaxMotorT…:可以施加到剛體的最大扭矩力

Motor Speed:期待的馬達速度

EnableMotor:開啟馬達

Frequency:彈性系數

DampingRatio:阻尼

和RevoluteJoint關節相比,同樣擁有馬達,還增加瞭彈力和限定移動方向。

Frequency彈性系數就像汽車輪胎的減震,在車輪運動時,可以晃動。

Local Axis A 限定方向,可以限定減震的彈力的方向隻能上下。

下圖中,紅色剛體綁定兩個wheelJoint關節,設置ConnectedBody分別是兩個circle圓形剛體。

馬達的扭矩力為200,最大速度為1000,也就是車輪的驅動力和最大速度。

彈性系數為5,阻尼為0.1,限定方向為Y軸,相當於這車的減震系統瞭。

Anchor錨點分別設置到Connected Body也就是車輪的中心點上(選中車輪關節時,會有一個藍色的標識,這個藍色就是Anchor,拖動藍色標識到圓形剛體中心就行瞭)

選擇兩個車輪,設置圓形剛體的摩擦系數0.8,彈性系數為0.2的。

如果摩擦系數為0的話,相當於車輪對於地面一直在打滑,跑不動。

以上就是怎樣在CocosCreator中使用物理引擎關節的詳細內容,更多關於CocosCreator 物理引擎關節的資料請關註WalkonNet其它相關文章!

推薦閱讀:

    None Found