デフォルトでは、プレイヤー同士はぶつかります。オービーなどのゲームではプレイヤー同士がぶつかると、不快な思いをさせてしまうことがあります。PhysicsService を使うと、プレイヤー同士がぶつらないようにすることができます。
- ServerScriptService に以下のプログラムを入力します。
local PhysicsService = game:GetService("PhysicsService")
local Players = game:GetService("Players")
-- グループ間の衝突ステータスを設定する
PhysicsService:RegisterCollisionGroup("Characters")
PhysicsService:CollisionGroupSetCollidable("Characters", "Characters", false)
local function onDescendantAdded(descendant)
-- パーツに衝突グループを設定する
if descendant:IsA("BasePart") then
descendant.CollisionGroup = "Characters"
end
end
local function onCharacterAdded(character)
-- キャラクターモデルの全パーツに衝突グループを設定する
for _, descendant in pairs(character:GetDescendants()) do
onDescendantAdded(descendant)
end
character.DescendantAdded:Connect(onDescendantAdded)
end
Players.PlayerAdded:Connect(function(player)
-- プレイヤーキャラが追加されたときのイベントを設定
player.CharacterAdded:Connect(onCharacterAdded)
end)