CocosCreator で物理エンジン ジョイントを使用する方法

CocosCreator で物理エンジン ジョイントを使用する方法

CocosCreator バージョン 2.4.2

マウスジョイント マウスジョイント

Cocos ドキュメント定義:

マウス ジョイントは、剛体上の点をワールド座標系内の指定された位置を追跡するために使用されます。 マウス ジョイントに最大半径を割り当てて、ソフト コンストレイントを課すことができます。

マウス ジョイントは、マウス領域ノードを使用してマウス イベントを自動的に登録し、タッチ移動イベントで選択したボディを移動します。

注: 通常、マウス ジョイントはテスト環境でのみ使用されます。

例:

任意のcc.Nodeにマウスジョイントを追加し、mouseRegionをCanvasに設定​​し、弾性と減衰を1に設定します。

マウス領域: マウス登録ノード

周波数:弾性。物体を引っ張る強さを示します。値が大きいほど、弾性が大きくなります。それはボールに結ばれた輪ゴムのようなものです。輪ゴムを引っ張れば引っ張るほど、ボールは速く動きます。

DampingRatio: ダンピング。引っ張られた後に物体が受ける抵抗を示します。 1 は空中で輪ゴムでボールを引っ張っているのに似ており、10 は水中で輪ゴムでボールを引っ張っているのに似ています。減衰が大きいほど、ボールの動きは遅くなります。

距離ジョイント距離ジョイント

Cocos ドキュメント定義:

距離ジョイントは、ジョイントによって接続された 2 つのボディを固定の長さに制限します。質量のない固体の棒と考えることができます。

例:

2 つの剛体はそれぞれのノードの周りでのみ回転でき、2 つのノード間の距離は変化しません。

ConnectedBody: ジョイントのもう一方の端にある剛体。

アンカー: ジョイントが配置されている剛体のアンカーポイント

ConnectedAnchor: ジョイントのもう一方の端にある剛体アンカーポイント

CollideConnected: ジョイントの両端の剛体が衝突するかどうか

距離: 距離、200 ピクセル

周波数: 弾力性。 10 に設定すると、2 つのオブジェクトを接続するバネがあるかのように、2 つの剛体の間に弾性力が生じます。 0 に設定すると、木の根のように 200 ピクセルの距離が常に変化しないことを意味します。

減衰率: 減衰

ジョイントは 2 つの剛体を接続する必要があります。図の 2 つの点と点線は、剛体のアンカー ポイントとジョイント接続線を表します。

距離は 200 であり、2 つの剛体は常に 200 の距離を維持します。そして、それらはそれぞれのノード上でのみ回転できます。

応用:

距離は固定されており、両端のノードは回転でき、ジョイントは弾性に設定できます。

1. 片端が固定されており、大きな振り子にすることができる

2. 片端を固定し、弾性のある大きな振り子を設置する

モータージョイント

Cocos ドキュメント定義:

モーター ジョイントは、2 つの剛体間の相対的な動きを制御するために使用されます。 典型的な例は、地面に対する動的な剛体の動きを制御することです。

例:

モーター ジョイントは、2 つの剛体の相対的な位置と角度が一定になるように拘束します。 BodyA の位置と角度が変化すると、BodyB は MaxForce と MaxTorque の力を使用して BodyA の位置と角度に向かって移動します。

接続ボディ: ジョイントの反対側の端にある剛体

CollideConnected: ジョイントの両端の剛体が衝突するかどうか

LinearOffset: 開始リジッドボディに対するもう一方の終了リジッドボディの位置オフセット。それがBodyBの目標位置です。

AngularOffset: 開始リジッドボディに対する他のリジッドボディの角度オフセット。これはボディBの目標角度です。

MaxForce: リジッドボディに適用できる最大の力。

最大トルク: 剛体に適用できる最大トルク力。

CorrectionFactor: 位置補正係数、範囲 [0, 1]。デフォルト値は 0.3 です。 BodyB が BodyA に向かって移動するための緩和係数。値が大きいほど、緩和が速くなります。

線形オフセットは 200 です。つまり、2 つの剛体の位置は 200 オフセットされます。この制限から外れると、2 つの剛体は最大力 300 で 200 離れた位置に移動します。

angularoffset は 0 で、角度オフセットは 0 です。この制限から逸脱すると、2 つの剛体は maxtorque 100 の力を使用して、2 つの剛体の角度オフセットを 0 に保ちます。

応用

力とトルクを使用して、2つの剛体の位置と角度を一定に保ちます。

1.片端が固定されており、地面に置くタンブラーやボクシングサンドバッグにすることができます。

直動ジョイント変位ジョイント

Cocos ドキュメント定義:

移動ジョイントは、剛体が一方向にのみ移動できることを指定します。 ジョイント制限を有効にして剛体の動きの範囲を設定したり、モーターを有効にしてジョイント モーターを使用して剛体の動きを駆動したりできます。

例:

回転することはできず、制限された座標軸上でのみ移動できます。

LocalAxisA: 剛体が移動できる方向を指定します。ここで X=1 は、X 軸上で左右にのみ移動できることを意味します。

ReferenceAngle: 相対角度。ジョイントの両端の剛体間の相対角度。

EnableLimit: ジョイントの距離制限を有効にするかどうか。有効にすると、ジョイント リジッド ボディは LowerLimit と UpperLimit の制限された範囲内でのみ移動できるようになります。つまり、x 軸上では 200 ~ 400 ピクセルの範囲でしか移動できません。

EnableMotor: モーターを有効にするかどうか。オンにすると、剛体は速度がモーター速度に達するまで、maxmotorforce の力で指定された座標軸に向かって移動します。

剛体は x 軸上でのみ移動でき、移動範囲は 200 ~ 400 ピクセルに制限されていることがわかります。これは、地形やメカニズムが左、右、または指定された方向にのみ移動できる一部の水平ゲームで使用できます。

応用

指定方向への移動を制限、回転不可、オプションのモーター、オプションの制限範囲

1. モーターをオンにして、X軸が左右に移動するように制限します。移動範囲を2つの端点に制限します。前後に移動するスライドレール車両にすることができます。

2. 引き出し

回転ジョイント

Cocos ドキュメント定義:

回転ジョイントは、2 つの剛体を 1 つの点を中心に回転するように制約します。 ジョイント制限をオンにすることで、回転の最大角度と最小角度を制限できます。

この時点でモーターをオンにして 2 つの剛体の相対速度を駆動することで、トルク力を加えることができます。

例:

他のジョイントと同様に、角度と力のパラメータが制限されます。

真ん中のものはジョイントのもう一方の端にある剛体で、そのタイプは静的です。 ジョイントにバインドされたリジッドボディは、ジョイントのもう一方の端にあるリジッドボディから (13,202) の距離で 1000 の力で回転します。

車を作るには回転関節を使います。赤い色は車のボディに対応し、白い色はホイールに対応します。

赤いノードは revoluteJoint にバインドされたノードです。このノードは 2 つの revoluteJoint ジョイントにバインドされています。ジョイントの接続ボディは 2 つの白いボックス リジッド ボディで、車輪に相当します。

各車輪の最大モータートルクは 500、最大速度はモーター速度 200 です。

応用

2つの剛体が点を中心に回転し、オプションの回転角度とモーターが備わります。

1. 片端は固定され、もう片端はモーターによって回転し、電動ファン、ホイール

2.モーターをオフにし、人体の関節を形成する回転範囲のみを設定します

3. ロープ

ロープはなぜロープ ジョイントを使用しないのでしょうか? ロープ ジョイントでは、回転範囲、位置範囲、または回転ノードを制限できないためです。

ロープジョイント

Cocos ドキュメント定義:

ロープ ジョイントは、2 つのリジッドボディ間の最大距離のみを指定し、その他の効果はありません。 注意: ジョイントの長さを動的に変更しようとすると、予期しない影響が生じる可能性があります。

例:

maxlength: ロープの最大長

特に特別なことは何もありません。バネもモーターもありません。これは、最大長 200 に制限された、2 つの剛体を結ぶロープのようなものです。

応用

最大長を制限する

1. ヨーヨー

2. 犬の散歩、犬のリード

weldJoint 溶接ジョイント(溶接ジョイント、接着ジョイント)

Cocos ドキュメント定義:

溶接ジョイントは、2 つの剛体を接着することと同じです。 制約ソルバーは値を近似するだけなので、溶接ジョイントによって何かが歪む可能性があります。

例:

まるで鉄棒で溶接された2つの剛体のようです。距離ジョイントと比較すると、距離ジョイントの 2 つの剛体はそれぞれのノードで回転できますが、溶接ジョイントの 2 つの剛体はそれぞれのノードで回転できません。

たとえば、周波数弾性力を周波数 = 0.5 に設定すると、ジョイント リジッド ボディは自身のノードで回転できますが、もう一方の端のリジッド ボディは回転できません。

応用

2つの剛体を溶接(貼り付け)し、弾性を設定できる

1. 剛体は溶接できる

2. 様々な剛体が貼り合わされている様子もわかる

3. ゲーム

4. 弾性を設定すると、ジョイントが配置されている剛体が回転できるようになります。たとえば、柔らかい長方形は曲げることができます。

溶接接合部で構成されたリングは、弾性を設定して曲げることができます。

ホイールジョイント ホイールジョイント

Cocos ドキュメント定義:

ホイール ジョイントは、指定された位置に沿った方向の回転と移動という 2 つの自由度を提供します。 ジョイント モーターをオンにすると、モーターを使用してリジッドボディの回転を駆動できます。 ホイールジョイントは自動車タイプに合わせて特別に設計されています。

例:

Revolute と Prismatic で構成されるホイール ジョイントは、自動車のホイールをシミュレートするために使用されます。

LocalAxis: 剛体が移動できる方向を指定します

MaxMotorT...: 剛体に適用できる最大トルク力

モーター速度: 予想されるモーター速度

EnableMotor: モーターを有効にする

周波数: 弾性係数

減衰率: 減衰

RevoluteJointジョイントと比較すると、モーターも搭載されていますが、弾力性が増し、動作方向が制限されています。

周波数 弾性係数は、車輪が動くときにタイヤが揺れるのを可能にする自動車のタイヤのショックアブソーバーのようなものになります。

ローカル軸Aは方向を制限し、衝撃吸収弾性力の方向を上下のみに制限することができます。

下の図では、赤い剛体は 2 つの wheelJoint ジョイントにバインドされ、ConnectedBody は 2 つの円形の剛体に設定されています。

モーターはトルク200、最高速度1000で、車輪の駆動力と最高速度となります。

弾性係数は5、減衰は0.1、制限方向はY軸で、この車の衝撃吸収システムと同等です。

アンカー ポイントを、ホイールの中心点である接続ボディに設定します (ホイール ジョイントを選択すると、青いマークが表示されます。この青がアンカーです。青いマークを円形の剛体の中心にドラッグするだけです)。

2 つの車輪を選択し、円形剛体の摩擦係数を 0.8、弾性係数を 0.2 に設定します。

摩擦係数が 0 の場合、車輪は常に地面で滑って動かない状態になります。

以上がCocosCreatorの物理エンジンジョイントの使い方の詳細です。CocosCreatorの物理エンジンジョイントの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Unity3Dはカメラレンズの動きを実現し、角度を制限する
  • CocosCreatorで複数のタイマーを使用する方法の詳細な説明
  • CocosCreator 学習モジュールスクリプト
  • CocosCreatorでJSZip圧縮を使用する方法
  • CocosCreator 入門チュートリアル: TS で初めてのゲームを作る
  • CocosCreator ソースコードの解釈: エンジンの起動とメインループ
  • CocosCreator 一般的なフレームワーク設計リソース管理
  • CocosCreatorでリストを作成する方法
  • CocosCreator で http と WebSocket を使用する方法
  • CocosCreator の新しいリソース管理システムの分析
  • CocosCreator でカメラトラッキングに cc.follow を使用する方法

<<:  TomcatはLog4jを使用してcatalina.outログを出力します。

>>:  MySQL の union と union all の簡単な分析

推薦する

Docker を使用して Jenkins をインストールするためのサンプル コード

Dockerコンテナのインストール時に遭遇しやすい2つの問題1.ポートはすでに割り当てられています(...

MySQL データベースの文字化け問題の原因と解決策

序文データベースのデータを表示すると、文字化けした文字が表示されることがあります。実際、どのようなデ...

HTML における要素の水平および垂直中央揃えに関する議論

ページをデザインするときには、ログイン ウィンドウを中央に配置するなど、DIV を中央に配置し、ペー...

vue+node+socket ioは複数人のインタラクションを実現し、プロセス全体を解放します

1. 背景1. フロントエンドはvue + vuex + socket.io-clientを使用しま...

Docker コンテナにデータベースをデプロイする場合の欠点は何ですか?

序文Docker は過去 2 年間で非常に人気が高まっています。開発者はすべてのアプリケーションとソ...

MySQL と接続関連のタイムアウトの詳細な概要

MySQL と接続関連のタイムアウト序文:今日、同僚から、データ量が多いときに MySQL データベ...

MySQLクエリのパフォーマンスを分析する方法

目次スロークエリの基礎: データ取得の最適化データベースから不要なデータが要求されていないか確認する...

Linux で MySQL データベースのデータ ファイル パスを変更する手順

rpm インストール方法を使用して MySQL データベースをインストールした後、データ ファイルの...

MYSQL の解凍版における中国語の文字化け問題の解決方法

MYSQLの解凍バージョンがインストールされます1: 解凍後、my.ini ファイルをコピーし、バイ...

CSS3 引用のソースと出典をマークする方法

疫病のせいで家にこもりきりで、頭がおかしくなりそうなので、パソコンを起動して頭を働かせてみました。今...

Linuxでawkを使用する方法の詳細な説明

awk を学ぶ前に、sed、grep、tr、cut などのコマンドを学んでおく必要があります。これら...

MySQLクエリの文字セットの不一致の問題を解決する方法

問題を見つける最近、仕事で問題が発生しました。MySQL データベースにテーブルを作成するときに、ラ...

モバイルデバイス Web 開発における HTML ヘッドの書き方

コードをコピーコードは次のとおりです。 <ヘッド> <meta http-equi...

MySQLの日付加算と減算関数の詳細な説明

1. 追加時間()指定した秒数を日付に追加する select addtime(now(),1); -...

Debian システムでの自動パッケージ更新の問題を解決する方法

いつから始まったのかはわかりませんが、コンピュータの電源を入れてインターネットに接続するたびに、デー...