プレイヤーが近づくと反発するパーツです。ここでは1つのパーツではなく、複数のパーツに対応したものをプログラムしてみました。たくさんの方法がありますのであくまでも一例となります。

  1. Workspace に フォルダを作成し、名前を Escape とします。
  2. 反発させたいパーツをこのフォルダ内に入れます。
  3. Workspace に Script を追加し、以下のプログラムを入力します。
local escape = script.Parent.Escape

local zoneSize = Vector3.new(15,15,15)    -- パーツが反応する範囲
local power = 30    -- 反発力

local parts = escape:GetChildren()

for _,p in pairs(parts) do
    local zone = Instance.new("Part",p)
    zone.Name = "Zone"
    zone.Shape = Enum.PartType.Ball
    zone.Transparency = 1
    zone.CanCollide = false
    zone.Position = p.Position
    zone.Size = zoneSize
    local weld = Instance.new("WeldConstraint",zone)
    weld.Part0 = zone
    weld.Part1 = p

    zone.Touched:Connect(function(hit)
        local character = hit.Parent
        if character:FindFirstChild("Humanoid") then
            if not p:FindFirstChild("LinearVelocity") then
                local direction = (p.Position - character.PrimaryPart.Position).unit
                local attachment = Instance.new("Attachment", p)
                local linearVelocity = Instance.new("LinearVelocity", p)
                linearVelocity.Attachment0 = attachment
                linearVelocity.MaxForce = 1000000
                linearVelocity.VectorVelocity = direction * power
                wait(0.5)
                linearVelocity:Destroy()
                attachment:Destroy()
            end
        end
    end)
end

まず、反発させるパーツの外側に球体のゾーンを作成します。それに触れたらパーツを移動させせるようにしています。ゾーンに触れたら、LinearVelocity  を使いパーツに力を加えています。

By schilverberch

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

2 thoughts on “プレイヤーから離れて行くパーツ”

コメントを残す