簡素的な飛び道具をツールで作ります。

  1. StarterPackにToolを入れます。
  2. Toolの中にPartを入れ、名前をHandleにします。Shape や Size は自由に変更して構いません。
  3. Tool内にRemoteEventを入れます。名前をShootEventにします。
  4. Tool内にLocalScrpitを入れ、以下のプログララムを貼り付けます。
local tool = script.Parent
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

tool.Activated:Connect(function()
    -- プレイヤーがクリックした位置を取得
    local targetPosition = mouse.Hit.p
    -- サーバーに通知
    tool.ShootEvent:FireServer(targetPosition)
end)
  1. 最後にToolの内にScript を入れ、以下のプログラムを貼り付ければ完成です。
local tool = script.Parent
local shootEvent = tool.ShootEvent

shootEvent.OnServerEvent:Connect(function(player, targetPosition)
    -- 球体を生成
    local ball = Instance.new("Part")
    ball.Shape = Enum.PartType.Ball
    ball.Size = Vector3.new(1, 1, 1)
    ball.BrickColor = BrickColor.new("Bright red")
    ball.Anchored = false
    ball.CanCollide = false
    ball.Parent = game.Workspace

    -- 球体を生成する位置を計算
    local handlePosition = tool.Handle.Position
    local direction = (targetPosition - handlePosition).Unit -- ユニットベクトルを計算
    local spawnPosition = handlePosition + direction * 2 -- Handleの少し前に配置
    ball.Position = spawnPosition

    -- 球体を発射
    local bodyVelocity = Instance.new("BodyVelocity")
    bodyVelocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
    bodyVelocity.Velocity = direction * 50 -- 発射速度
    bodyVelocity.Parent = ball

    -- 衝突時の爆発処理
    ball.Touched:Connect(function(hit)
    	-- 爆発を生成
        local explosion = Instance.new("Explosion")
        explosion.Position = ball.Position
        explosion.BlastRadius = 5 -- 爆発の範囲
        explosion.BlastPressure = 50000 -- 爆発の強さ
        explosion.Parent = game.Workspace

        -- 球体を削除
        ball:Destroy()
    end)

    -- 一定時間後に削除
    game:GetService("Debris"):AddItem(ball, 5)
end)

By schilverberch

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

コメントを残す