SoftBody3Dとは
MeshInstance3DからMeshを選択しゲームを開始すると、物理に従って変形するオブジェクトを作成する。
布、ゴムなどの柔軟で弾性のオブジェクトを作成できる。
インスペクターの値
色分け
- 青色:型名
- 緑色:enum値
Parent Collision Ignore
内容
CollisionObject3Dを子オブジェクトとして使用する親Node(StaticBody3D,CharacterBody3Dなど)を指定することができる。
してされたNodeに衝突してもすり抜ける(クリッピングする)ようになる
スクリプトでの使用
変数での変更:parent_collision_ignore = NodePath(“”)
メソッドでの変更:set_parent_collision_ignore(NodePath)
現在設定してあるNodePath名取得:NodePath get_parent_collision_ignore()
Simulation Precision
内容
シュミレーションの質らしい。
値が高いとパフォーマンスに影響するかも。
この値が低いとオブジェクトが破れやすくなり弾性が高くなる。
この値が高いと破れにくくなり弾性が低くなる。
オブジェクトによっては値を高くしなと破れるかも。
スクリプトでの使用
メソッドでの変更:set_simulation_precision(int)
現在設定してある値を取得:int get_simulation_precision()
Total Mass
内容
オブジェクト自体の質量を指定する。
風の影響などに影響があるが、SoftBodyのインスペクターからの設定で落下する速度には影響がない。
スクリプトでの使用
メソッドでの変更:set_total_mass(float)
現在設定してある値を取得:float get_total_mass()
Linear Stiffness
内容
オブジェクトの柔らかさを指定する。
値が小さいほど柔らかく、伸び縮みするようになる(0の場合は下にへばりつく)。
値が大きいと(Max:1)固くなる。
スクリプトでの使用
メソッドでの変更:set_linear_stiffness(float)
現在設定してある値を取得:float get_linear_stiffness()
Pressure Coefficient
内容
中から圧力を加える力を指定する。
値を高くすると、いろいろな方向に飛び回る。
スクリプトでの使用
メソッドでの変更:set_pressure_coefficient(float)
現在設定してある値を取得:float get_pressure_coefficient()
Damping Coefficient
内容
動きを遅くする。
値を大きくすることでゆっくり動くようになるが、地面のCollisionShape3Dを貫通してしまう。
スクリプトでの使用
メソッドでの変更:set_damping_coefficient(float)
現在設定してある値を取得:float get_damping_coefficient()
⚠️Drag Coefficient
内容
空気抵抗を増加させるらしいが、現在使用不可(2024.10.12/GodotEngine4.3)
スクリプトでの使用
メソッドでの変更:set_drag_coefficient(float)
現在設定してある値を取得:float get_drag_coefficient()
Ray Pickable
内容
この値がTrueのときRayCast3Dが反応できるようにする。
スクリプトでの使用
メソッドでの変更:set_ray_pickable(bool)
現在設定してある値を取得:bool is_ray_pickable()
Disable Mode
内容
NodeのProcess_modeがPROCESS_MODE_DISABLEDの時に使用できる。
Removeは完全に動きを止める:DISABLE_MODE_REMOVE = 0
KeepActiveは動く:DISABLE_MODE_KEEP_ACTIVE = 1
スクリプトでの使用
メソッドでの変更:set_disable_mode(DisableMode)
現在設定してある値を取得:DisableMode get_disable_mode()
Pinned Points
内容
選択したオブジェクトの頂点をArrayに格納する。
物理エンジンの影響を受けなくなる。
Attachments
内容
Pinned Pointsで選択した頂点をそれぞれ引っ付けたいCollisionObject3Dの親Nodeを指定することで、その頂点を指定したNodeに引っ付けることができる。
応用
サンドバッグ
Pinned Pointsで上の固定したい頂点を固定し、キャラクターのBoneにStaticBody3Dを指定させ当たり判定を持たせた。
あとは、自分の柔らかさに合わせて値をいじるだけ!
⚠️注意⚠️
当たり判定は頂点にしか存在していないため、面や辺にCollisionObject3Dが当たっても当たり判定が無い!
コメント