PhysicsService
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
PhysicsService 主に、 衝突グループ に対するメソッドを含み、セットのパーツが他の衝突グループのパーツと衝突するかどうかを定義します。You can register a collision group through RegisterCollisionGroup() and assign parts to it by setting those parts' CollisionGroup property to the name of the collision group.
衝突グループ間の衝突関係の作成、削除、修正は、サーバー側の Scripts に限定されます。
Studio とスクリプト内での使用詳細は、コリジョンフィルタリング を参照してください。
概要
方法
2つのグループ間の衝突ステータスを設定します。
2つのグループが衝突するかどうかを返します。
衝突グループの最大数を返します。
プレースの衝突グループに関する情報を含むテーブルを返します。
衝突グループが登録されているかチェックします。
指定された名前で新しい衝突グループを登録します。
指定された衝突グループの名前変更。
指定された名前の衝突グループを登録解除します。
プロパティ
方法
CollisionGroupSetCollidable
2つのグループ間の衝突ステータスを設定します。このメソッドは、グループのどちらかが登録されていない場合、エラーをスローしますので、この呼び出しを行う前に、PhysicsService:IsCollisionGroupRegistered() で各グループの登録を確認することをお勧めします。
パラメータ
戻り値
CollisionGroupsAreCollidable
指定された2つの衝突グループが衝突するかどうかを返します。このメソッドは、デフォルトの衝突マスクがすべてのグループに衝突するため、グループのどちらかが登録されていない場合も真を返します。
パラメータ
戻り値
GetRegisteredCollisionGroups
すべての場プレースの衝突グループに関する情報を含むテーブルを返します。返されたテーブルの各値は、それ自体がテーブルであり、2つのメンバーを含んでいます:
<th>種類</th><th>説明</th></tr></thead><tbody><tr><td>マスク</td><td>整数</td><td>衝突グループのマスク; 内部使用のみ。</td></tr><tr><td>名前</td><td>文字列</td><td>衝突グループの名前。</td></tr></tbody>
会員 |
---|
戻り値
IsCollisionGroupRegistered
衝突グループが登録されているかチェックします。このメソッドを呼び出す前に、PhysicsService:CollisionGroupSetCollidable() など、登録されていない衝突グループにエラーをスローするメソッドを呼び出すことをお勧めします。
パラメータ
戻り値
RegisterCollisionGroup
指定された名前で新しい衝突グループを登録します。名前は "Default" にはできません。
このメソッドには、ワークスペース内の BaseParts の数に基づくわずかなパフォーマンスのオーバーヘッドがあるため、編集時に Studio エディター を介してすべての衝突グループを登録し、できるだけ少なく UnregisterCollisionGroup() と RenameCollisionGroup() を呼び出すことをお勧めします。
パラメータ
戻り値
コードサンプル
This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().
local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false
RenameCollisionGroup
指定された登録された衝突グループの名前を変更しますが、 グループを使用するパーツの プロパティの名前を変更しません。このメソッドの最初の引数は、名前を変更するグループの名前、2番目の引数はグループの新しい名前です。指定されたグループが存在しない場合、このメソッドは何もしません。新しい名前の命名規則は、グループが RegisterCollisionGroup() で作成されているかのように、同じ規則に従います。
このメソッドは、次の場合にランタイムエラーを発生させます:
- どちらの引数にも提供された無効または空の名前。
- メソッドはクライアントから呼ばれます。
このメソッドには、ワークスペース内の BaseParts の数に基づくわずかなパフォーマンスのオーバーヘッドがあるため、スタジオの エディタ を通じてすべての衝突グループを編集時に登録し、可能な限り名前を変更することをお勧めします。
パラメータ
戻り値
UnregisterCollisionGroup
次の動作で、指定された名前の衝突グループを登録解除します:
- 無効な名前が提供された場合、メソッドは何もしません。
- 予約済みの名前 が提供された場合、メソッドがクライアントから呼ばれた場合、エラーが発生します。
- 衝突グループから削除された場合、それらのパーツは引き続き同じ衝突グループ名を維持します。削除グループ内のパーツの物理的動作は定義されていないため、パーツを削除グループから別のグループ、例えば "Default" グループに移動することをお勧めします。
このメソッドには、ワークスペースの BaseParts 数に基づくわずかなパフォーマンスのオーバーヘッドがあるため、スタジオの エディタ を通じてすべての衝突グループを編集時に登録し、このメソッドをできるだけ少なく呼び出すことをお勧めします。