CocosCreator版本2.4.2
mousejoint鼠標(biāo)關(guān)節(jié)
cocos文檔定義:
鼠標(biāo)關(guān)節(jié)用于使剛體上的一個(gè)點(diǎn)追蹤一個(gè)指定的世界坐標(biāo)系下的位置。 鼠標(biāo)關(guān)節(jié)可以指定一個(gè)最大的里來施加一個(gè)柔和的約束。
鼠標(biāo)關(guān)節(jié)會(huì)自動(dòng)使用 mouse region 節(jié)點(diǎn)來注冊(cè)鼠標(biāo)事件,并且在觸摸移動(dòng)事件中移動(dòng)選中的剛體。
注意:一般鼠標(biāo)關(guān)節(jié)只在測(cè)試環(huán)境中使用
說明:
任意cc.Node上添加鼠標(biāo)關(guān)節(jié),設(shè)置mouseRegion為Canvas,彈力和阻尼都為1
Mouse Region:鼠標(biāo)注冊(cè)節(jié)點(diǎn)
Frequency:彈力,表示拉扯物體的力度,值越大,彈力越大。就像一個(gè)橡皮筋綁在球上,你拉橡皮筋,力越大,球動(dòng)得越快。
DampingRatio:阻尼,表示拉扯物體后,物體受到的阻力。好比1是在空氣中用橡皮筋拉球,10就是在水里面用橡皮筋拉球,阻尼越大,球動(dòng)的越慢。
distanceJoint距離關(guān)節(jié)
cocos文檔定義:
距離關(guān)節(jié)通過一個(gè)固定的長(zhǎng)度來約束關(guān)節(jié)鏈接的兩個(gè)剛體。你可以將它想象成一個(gè)無質(zhì)量,堅(jiān)固的木棍。
說明:
兩個(gè)剛體只能繞著各自的節(jié)點(diǎn)旋轉(zhuǎn),兩個(gè)節(jié)點(diǎn)間的距離保持不變。
ConnectedBody:關(guān)節(jié)另一端的剛體。
Anchor:關(guān)節(jié)所在剛體錨點(diǎn)
ConnectedAnchor:關(guān)節(jié)另一端剛體錨點(diǎn)
CollideConnected:關(guān)節(jié)兩端的剛體是否發(fā)生碰撞
Distance:距離,200像素
Frequency:彈力。如果設(shè)置為10,兩個(gè)剛體之間會(huì)有彈力,像兩個(gè)物體里有個(gè)彈簧連著。 如果設(shè)置為0,表示始終保持200像素距離不會(huì)變,就像木根連著。
DampingRatio:阻尼
關(guān)節(jié)需要連接著2個(gè)剛體,圖中的兩個(gè)圓點(diǎn)和虛線,表示剛體的錨點(diǎn)和關(guān)節(jié)連接線。
distance為200,兩個(gè)剛體始終保持200的距離。且只能在各自的節(jié)點(diǎn)上旋轉(zhuǎn)。
應(yīng)用:
距離固定,兩端節(jié)點(diǎn)可以旋轉(zhuǎn),關(guān)節(jié)可以設(shè)置彈性
1. 一端固定,可以做成大擺錘
2. 一端固定,設(shè)置彈性,有彈性的大擺錘
motorjoint馬達(dá)關(guān)節(jié)
cocos文檔定義:
馬達(dá)關(guān)節(jié)被用來控制兩個(gè)剛體間的相對(duì)運(yùn)動(dòng)。 一個(gè)典型的例子是用來控制一個(gè)動(dòng)態(tài)剛體相對(duì)于地面的運(yùn)動(dòng)。
說明:
馬達(dá)關(guān)節(jié)是限制兩個(gè)剛體,使兩個(gè)剛體的相對(duì)位置和角度保持一致。當(dāng)BodyA的位置和角度變化時(shí),BodyB會(huì)用MaxForce和MaxTorque的力向著BodyA的位置和角度移動(dòng)。
Connected Body:關(guān)節(jié)另一端剛體
CollideConnected:關(guān)節(jié)兩端剛體是否碰撞
LinearOffset:另一端剛體相對(duì)于起始剛體的位置偏移量。也就是BodyB的目標(biāo)位置。
AngularOffset:另一端剛體相對(duì)于起始剛體的角度偏移量。也就是BodyB的目標(biāo)角度。
MaxForce:可應(yīng)用于剛體的最大力值。
Max Torque:可應(yīng)用于剛體的最大扭矩力。
CorrectionFactor:位置矯正系數(shù),范圍[0,1]。默認(rèn)0.3。BodyB向著BodyA移動(dòng)的緩動(dòng)因子。值越大,緩動(dòng)越快。
linear offset為200,表示兩個(gè)剛體位置偏移為200,一旦偏離了這個(gè)限制,兩個(gè)剛體會(huì)用max force 300的力移動(dòng)到相距200的位置。
angularoffset為0,角度偏移為0,一旦偏離了這個(gè)限制,兩個(gè)剛體會(huì)用maxtorque 100的力,使兩個(gè)剛體角度保持偏移為0。
應(yīng)用
使用力和扭矩力,使兩個(gè)剛體保持位置和角度一致
1. 一端固定,可以做成不倒翁、放置在地面的拳擊沙袋
prismaticJoint位移關(guān)節(jié)
cocos文檔定義:
移動(dòng)關(guān)節(jié)指定了只能在一個(gè)方向上移動(dòng)剛體。 你可以開啟關(guān)節(jié)限制來設(shè)置剛體運(yùn)行移動(dòng)的間距,也可以開啟馬達(dá)來使用關(guān)節(jié)馬達(dá)驅(qū)動(dòng)剛體的運(yùn)行。
說明:
不能旋轉(zhuǎn),只能在限制的坐標(biāo)軸上移動(dòng)。
LocalAxisA:指定剛體可以移動(dòng)的方向。這里X=1,表示只能在X軸左右移動(dòng)。
ReferenceAngle:相對(duì)角度。關(guān)節(jié)兩端的剛體之間的相對(duì)角度。
EnableLimit:是否開啟關(guān)節(jié)的距離限制。開啟后,關(guān)節(jié)剛體只能在限制的LowerLimit和UpperLimit范圍內(nèi)移動(dòng)。這里表示只能在x軸200-400像素之間移動(dòng)。
EnableMotor:是否開啟馬達(dá)。開啟后剛體會(huì)以maxmotorforce的力向指定坐標(biāo)軸移動(dòng),直到速度達(dá)到motorspeed。
可以看到剛體只能在x軸移動(dòng),并且移動(dòng)范圍限制在200-400像素。這可用于一些橫版游戲中,只能左右或者指定方向移動(dòng)的地形、機(jī)關(guān)等。
應(yīng)用
限制指定方向移動(dòng),不能旋轉(zhuǎn),可選馬達(dá),可選限制范圍
1. 開啟馬達(dá),限制x軸左右移動(dòng),限制移動(dòng)范圍在兩個(gè)端點(diǎn),可以做成來回移動(dòng)的滑軌車
2. 抽屜
revoluteJoint旋轉(zhuǎn)關(guān)節(jié)
cocos文檔定義:
旋轉(zhuǎn)關(guān)節(jié)可以約束兩個(gè)剛體圍繞一個(gè)點(diǎn)來進(jìn)行旋轉(zhuǎn)。 你可以通過開啟關(guān)節(jié)限制來限制旋轉(zhuǎn)的最大角度和最小角度。
你可以通過開啟馬達(dá)來施加一個(gè)扭矩力來驅(qū)動(dòng)這兩個(gè)剛體在這一點(diǎn)上的相對(duì)速度。
說明:
和其他關(guān)節(jié)差不多,都是限制一些角度和力的參數(shù)。
中間為關(guān)節(jié)另一端的剛體,類型為static。 綁定關(guān)節(jié)的剛體以1000的力在距離關(guān)節(jié)另一端剛體(13,202)的位置旋轉(zhuǎn)。
我們用旋轉(zhuǎn)關(guān)節(jié)做一輛小車。紅色相當(dāng)于車身,白色相當(dāng)于車輪。
紅色為綁定revoluteJoint的node,節(jié)點(diǎn)綁著兩個(gè)revoluteJoint關(guān)節(jié),關(guān)節(jié)的Connected Body分別是兩個(gè)白色的box剛體,相當(dāng)于車輪。
每個(gè)車輪有maxmotortorque 500的力,最大速度為motorspeed 200。
應(yīng)用
兩個(gè)剛體繞一個(gè)點(diǎn)旋轉(zhuǎn),可選旋轉(zhuǎn)角度,可選馬達(dá)
1. 一端固定,一端開啟馬達(dá)旋轉(zhuǎn), 電風(fēng)扇、車輪
2. 關(guān)閉馬達(dá),只設(shè)置旋轉(zhuǎn)范圍,可組成人體的關(guān)節(jié)
3. 繩子
為什么繩子不用繩子關(guān)節(jié)來做,因?yàn)槔K子關(guān)節(jié)不能限制旋轉(zhuǎn)范圍,不能限制位置范圍,不能限制旋轉(zhuǎn)節(jié)點(diǎn)。
ropeJoint繩子關(guān)節(jié)
cocos文檔定義:
繩子關(guān)節(jié)只指定兩個(gè)剛體間的最大距離,沒有其他的效果。 注意:如果你試圖動(dòng)態(tài)修改關(guān)節(jié)的長(zhǎng)度,這有可能會(huì)得到一些意外的效果。
說明:
maxlength:繩子的最大距離
沒啥特點(diǎn)吧。他們沒有彈力,沒有馬達(dá)。僅僅是像繩子綁著兩個(gè)剛體,被限制在maxlength 200范圍內(nèi)。
應(yīng)用
限制最大長(zhǎng)度
1. 溜溜球
2. 遛狗,狗繩
weldJoint焊接關(guān)節(jié)(熔接關(guān)節(jié)、粘貼關(guān)節(jié))
cocos文檔定義:
熔接關(guān)節(jié)相當(dāng)于將兩個(gè)剛體粘在了一起。 熔接關(guān)節(jié)可能會(huì)使某些東西失真,因?yàn)榧s束求解器算出的都是近似值
說明:
像兩個(gè)剛體被一條鋼筋焊接起來了。和距離關(guān)節(jié)相比,距離關(guān)節(jié)的兩個(gè)剛體可以在各自節(jié)點(diǎn)旋轉(zhuǎn),焊接關(guān)節(jié)兩個(gè)剛體則不可以在各自節(jié)點(diǎn)旋轉(zhuǎn)。
如果設(shè)置Frequency彈力的話,比如Frequency=0.5,關(guān)節(jié)剛體可以在自己節(jié)點(diǎn)旋轉(zhuǎn),但是另一端剛體則不可以旋轉(zhuǎn)。
應(yīng)用
兩個(gè)剛體被焊接(粘貼)在一起,可以設(shè)置彈性
1. 剛體可以被焊接在一起
2. 也可以理解各種剛體被粘貼在一起
3. 一個(gè)游戲
4. 設(shè)置彈性后,關(guān)節(jié)所在剛體可以旋轉(zhuǎn)。例如柔體矩形,矩形可以彎曲。
焊接關(guān)節(jié)組成的圓環(huán),設(shè)置彈性后,可以彎曲。
wheeljoint輪子關(guān)節(jié)
cocos文檔定義:
輪子關(guān)節(jié)提供兩個(gè)維度的自由度:旋轉(zhuǎn)和沿著指定方向上位置的移動(dòng)。 你可以通過開啟關(guān)節(jié)馬達(dá)來使用馬達(dá)驅(qū)動(dòng)剛體的旋轉(zhuǎn)。 輪組關(guān)節(jié)是專門為機(jī)動(dòng)車類型設(shè)計(jì)的。
說明:
輪子關(guān)節(jié),由 Revolute 和 Prismatic 組合成的關(guān)節(jié),用于模擬機(jī)動(dòng)車車輪。
LocalAxis:指定剛體可以移動(dòng)的方向
MaxMotorT...:可以施加到剛體的最大扭矩力
Motor Speed:期待的馬達(dá)速度
EnableMotor:開啟馬達(dá)
Frequency:彈性系數(shù)
DampingRatio:阻尼
和RevoluteJoint關(guān)節(jié)相比,同樣擁有馬達(dá),還增加了彈力和限定移動(dòng)方向。
Frequency彈性系數(shù)就像汽車輪胎的減震,在車輪運(yùn)動(dòng)時(shí),可以晃動(dòng)。
Local Axis A 限定方向,可以限定減震的彈力的方向只能上下。
下圖中,紅色剛體綁定兩個(gè)wheelJoint關(guān)節(jié),設(shè)置ConnectedBody分別是兩個(gè)circle圓形剛體。
馬達(dá)的扭矩力為200,最大速度為1000,也就是車輪的驅(qū)動(dòng)力和最大速度。
彈性系數(shù)為5,阻尼為0.1,限定方向?yàn)閅軸,相當(dāng)于這車的減震系統(tǒng)了。
Anchor錨點(diǎn)分別設(shè)置到Connected Body也就是車輪的中心點(diǎn)上(選中車輪關(guān)節(jié)時(shí),會(huì)有一個(gè)藍(lán)色的標(biāo)識(shí),這個(gè)藍(lán)色就是Anchor,拖動(dòng)藍(lán)色標(biāo)識(shí)到圓形剛體中心就行了)
選擇兩個(gè)車輪,設(shè)置圓形剛體的摩擦系數(shù)0.8,彈性系數(shù)為0.2的。
如果摩擦系數(shù)為0的話,相當(dāng)于車輪對(duì)于地面一直在打滑,跑不動(dòng)。
以上就是怎樣在CocosCreator中使用物理引擎關(guān)節(jié)的詳細(xì)內(nèi)容,更多關(guān)于CocosCreator 物理引擎關(guān)節(jié)的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!
原文鏈接:https://www.cnblogs.com/gamedaybyday/p/13488363.html