デフォルトでは、プレイヤー同士はぶつかります。オービーなどのゲームではプレイヤー同士がぶつかると、不快な思いをさせてしまうことがあります。PhysicsService を使うと、プレイヤー同士がぶつらないようにすることができます。

  1. 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)

By schilverberch

ROBLOXでゲームを作ろう! 一緒にプログラミングを学びましょう。

コメントを残す