怎樣在CocosCreator中使用物理引擎關節(jié)
CocosCreator版本2.4.2
mousejoint鼠標關節(jié)
cocos文檔定義:
鼠標關節(jié)用于使剛體上的一個點追蹤一個指定的世界坐標系下的位置。 鼠標關節(jié)可以指定一個最大的里來施加一個柔和的約束。
鼠標關節(jié)會自動使用 mouse region 節(jié)點來注冊鼠標事件,并且在觸摸移動事件中移動選中的剛體。
注意:一般鼠標關節(jié)只在測試環(huán)境中使用
說明:
任意cc.Node上添加鼠標關節(jié),設置mouseRegion為Canvas,彈力和阻尼都為1
Mouse Region:鼠標注冊節(jié)點
Frequency:彈力,表示拉扯物體的力度,值越大,彈力越大。就像一個橡皮筋綁在球上,你拉橡皮筋,力越大,球動得越快。
DampingRatio:阻尼,表示拉扯物體后,物體受到的阻力。好比1是在空氣中用橡皮筋拉球,10就是在水里面用橡皮筋拉球,阻尼越大,球動的越慢。
distanceJoint距離關節(jié)
cocos文檔定義:
距離關節(jié)通過一個固定的長度來約束關節(jié)鏈接的兩個剛體。你可以將它想象成一個無質量,堅固的木棍。
說明:
兩個剛體只能繞著各自的節(jié)點旋轉,兩個節(jié)點間的距離保持不變。
ConnectedBody:關節(jié)另一端的剛體。
Anchor:關節(jié)所在剛體錨點
ConnectedAnchor:關節(jié)另一端剛體錨點
CollideConnected:關節(jié)兩端的剛體是否發(fā)生碰撞
Distance:距離,200像素
Frequency:彈力。如果設置為10,兩個剛體之間會有彈力,像兩個物體里有個彈簧連著。 如果設置為0,表示始終保持200像素距離不會變,就像木根連著。
DampingRatio:阻尼
關節(jié)需要連接著2個剛體,圖中的兩個圓點和虛線,表示剛體的錨點和關節(jié)連接線。
distance為200,兩個剛體始終保持200的距離。且只能在各自的節(jié)點上旋轉。
應用:
距離固定,兩端節(jié)點可以旋轉,關節(jié)可以設置彈性
1. 一端固定,可以做成大擺錘
2. 一端固定,設置彈性,有彈性的大擺錘
motorjoint馬達關節(jié)
cocos文檔定義:
馬達關節(jié)被用來控制兩個剛體間的相對運動。 一個典型的例子是用來控制一個動態(tài)剛體相對于地面的運動。
說明:
馬達關節(jié)是限制兩個剛體,使兩個剛體的相對位置和角度保持一致。當BodyA的位置和角度變化時,BodyB會用MaxForce和MaxTorque的力向著BodyA的位置和角度移動。
Connected Body:關節(jié)另一端剛體
CollideConnected:關節(jié)兩端剛體是否碰撞
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位移關節(jié)
cocos文檔定義:
移動關節(jié)指定了只能在一個方向上移動剛體。 你可以開啟關節(jié)限制來設置剛體運行移動的間距,也可以開啟馬達來使用關節(jié)馬達驅動剛體的運行。
說明:
不能旋轉,只能在限制的坐標軸上移動。
LocalAxisA:指定剛體可以移動的方向。這里X=1,表示只能在X軸左右移動。
ReferenceAngle:相對角度。關節(jié)兩端的剛體之間的相對角度。
EnableLimit:是否開啟關節(jié)的距離限制。開啟后,關節(jié)剛體只能在限制的LowerLimit和UpperLimit范圍內移動。這里表示只能在x軸200-400像素之間移動。
EnableMotor:是否開啟馬達。開啟后剛體會以maxmotorforce的力向指定坐標軸移動,直到速度達到motorspeed。
可以看到剛體只能在x軸移動,并且移動范圍限制在200-400像素。這可用于一些橫版游戲中,只能左右或者指定方向移動的地形、機關等。
應用
限制指定方向移動,不能旋轉,可選馬達,可選限制范圍
1. 開啟馬達,限制x軸左右移動,限制移動范圍在兩個端點,可以做成來回移動的滑軌車
2. 抽屜
revoluteJoint旋轉關節(jié)
cocos文檔定義:
旋轉關節(jié)可以約束兩個剛體圍繞一個點來進行旋轉。 你可以通過開啟關節(jié)限制來限制旋轉的最大角度和最小角度。
你可以通過開啟馬達來施加一個扭矩力來驅動這兩個剛體在這一點上的相對速度。
說明:
和其他關節(jié)差不多,都是限制一些角度和力的參數。
中間為關節(jié)另一端的剛體,類型為static。 綁定關節(jié)的剛體以1000的力在距離關節(jié)另一端剛體(13,202)的位置旋轉。
我們用旋轉關節(jié)做一輛小車。紅色相當于車身,白色相當于車輪。
紅色為綁定revoluteJoint的node,節(jié)點綁著兩個revoluteJoint關節(jié),關節(jié)的Connected Body分別是兩個白色的box剛體,相當于車輪。
每個車輪有maxmotortorque 500的力,最大速度為motorspeed 200。
應用
兩個剛體繞一個點旋轉,可選旋轉角度,可選馬達
1. 一端固定,一端開啟馬達旋轉, 電風扇、車輪
2. 關閉馬達,只設置旋轉范圍,可組成人體的關節(jié)
3. 繩子
為什么繩子不用繩子關節(jié)來做,因為繩子關節(jié)不能限制旋轉范圍,不能限制位置范圍,不能限制旋轉節(jié)點。
ropeJoint繩子關節(jié)
cocos文檔定義:
繩子關節(jié)只指定兩個剛體間的最大距離,沒有其他的效果。 注意:如果你試圖動態(tài)修改關節(jié)的長度,這有可能會得到一些意外的效果。
說明:
maxlength:繩子的最大距離
沒啥特點吧。他們沒有彈力,沒有馬達。僅僅是像繩子綁著兩個剛體,被限制在maxlength 200范圍內。
應用
限制最大長度
1. 溜溜球
2. 遛狗,狗繩
weldJoint焊接關節(jié)(熔接關節(jié)、粘貼關節(jié))
cocos文檔定義:
熔接關節(jié)相當于將兩個剛體粘在了一起。 熔接關節(jié)可能會使某些東西失真,因為約束求解器算出的都是近似值
說明:
像兩個剛體被一條鋼筋焊接起來了。和距離關節(jié)相比,距離關節(jié)的兩個剛體可以在各自節(jié)點旋轉,焊接關節(jié)兩個剛體則不可以在各自節(jié)點旋轉。
如果設置Frequency彈力的話,比如Frequency=0.5,關節(jié)剛體可以在自己節(jié)點旋轉,但是另一端剛體則不可以旋轉。
應用
兩個剛體被焊接(粘貼)在一起,可以設置彈性
1. 剛體可以被焊接在一起
2. 也可以理解各種剛體被粘貼在一起
3. 一個游戲
4. 設置彈性后,關節(jié)所在剛體可以旋轉。例如柔體矩形,矩形可以彎曲。
焊接關節(jié)組成的圓環(huán),設置彈性后,可以彎曲。
wheeljoint輪子關節(jié)
cocos文檔定義:
輪子關節(jié)提供兩個維度的自由度:旋轉和沿著指定方向上位置的移動。 你可以通過開啟關節(jié)馬達來使用馬達驅動剛體的旋轉。 輪組關節(jié)是專門為機動車類型設計的。
說明:
輪子關節(jié),由 Revolute 和 Prismatic 組合成的關節(jié),用于模擬機動車車輪。
LocalAxis:指定剛體可以移動的方向
MaxMotorT...:可以施加到剛體的最大扭矩力
Motor Speed:期待的馬達速度
EnableMotor:開啟馬達
Frequency:彈性系數
DampingRatio:阻尼
和RevoluteJoint關節(jié)相比,同樣擁有馬達,還增加了彈力和限定移動方向。
Frequency彈性系數就像汽車輪胎的減震,在車輪運動時,可以晃動。
Local Axis A 限定方向,可以限定減震的彈力的方向只能上下。
下圖中,紅色剛體綁定兩個wheelJoint關節(jié),設置ConnectedBody分別是兩個circle圓形剛體。
馬達的扭矩力為200,最大速度為1000,也就是車輪的驅動力和最大速度。
彈性系數為5,阻尼為0.1,限定方向為Y軸,相當于這車的減震系統(tǒng)了。
Anchor錨點分別設置到Connected Body也就是車輪的中心點上(選中車輪關節(jié)時,會有一個藍色的標識,這個藍色就是Anchor,拖動藍色標識到圓形剛體中心就行了)
選擇兩個車輪,設置圓形剛體的摩擦系數0.8,彈性系數為0.2的。
如果摩擦系數為0的話,相當于車輪對于地面一直在打滑,跑不動。
以上就是怎樣在CocosCreator中使用物理引擎關節(jié)的詳細內容,更多關于CocosCreator 物理引擎關節(jié)的資料請關注腳本之家其它相關文章!
相關文章
axios利用params/data發(fā)送參數給springboot?controlle的正確獲取方式
這篇文章主要給大家介紹了關于axios利用params/data發(fā)送參數給springboot?controlle的正確獲取方式,文中通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-02-02