Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Made a ball launcher, how do I make the ball shoot where the player is looking?

Asked by 5 years ago
Edited 5 years ago
local handle = script.Parent.Handle
local debounce  = false

script.Parent.Activated:Connect(function()
    if not debounce then 
        debounce = true 

        local cloned = game.ServerStorage.bomb:Clone()
        cloned.Parent = workspace
        cloned.CFrame = handle.CFrame*CFrame.new(0, 1, 0)
        cloned.Velocity = Vector3.new(0, math.random(50, 100), 0)

        wait(5)
        debounce = false
    end
end)

The above code is supposed to create a clone of a sphere named "bomb" in ServerStorage, set the Parent of the clone to game.Workspace, match its CFrame to the tool's Handle CFrame (plus 1 point up on the y axis). It also gives the clone a velocity of 0 for the x axis, a random number between 50 and 100 for the y axis, and 0 for the z axis. The thing is, it obviously shoots up, and that's it. I want this block to shoot out in the direction that the player holding the tool is looking in. How could I do this?

0
take the front vector of their torso and multiply it Fad99 286 — 5y
0
I'll see if I can User#28017 0 — 5y

1 answer

Log in to vote
1
Answered by 5 years ago

One problem that I have seen is that a client is trying to access the server storage. Instead, use replicated storage. Don't forget that the names of objects are case sensitive. Secondly, using a bodyvelocity allows a constant force to be applied to a specific part. I have fixed these problems in the code below.

local handle = script.Parent.Handle
local debounce  = false
local replicatedStorage = game:GetService("ReplicatedStorage")
local bomb = replicatedStorage:WaitForChild("Bomb")
local maxSpeed = 25 -- Not studs per second
local waitTime = 5

script.Parent.Activated:Connect(function()
    if not debounce then 
        debounce = true 

        local cloned = bomb:Clone()
        cloned.Parent = workspace
        cloned.CFrame = handle.CFrame*CFrame.new(0, 1, 0)

        local bVelocity = Instance.new("BodyVelocity")
        local tarVel = Vector3.new(handle.CFrame.LookVector.X, handle.CFrame.LookVector.Y + workspace.Gravity, handle.CFrame.LookVector.Z)
        bVelocity.Velocity = tarVel * maxSpeed
        bVelocity.P = 100
        bVelocity.Parent = cloned

        wait(waitTime)
        debounce = false
    end
end)
0
I understand the code other than the details about the instance of a BodyVeloctiy. The code ran when the tool was activated, but it did not shoot the ball where the player is looking at. It does shoot it forward a little bit, but mainly it flies up into the sky. User#28017 0 — 5y
0
I check the "Bomb" in ReplicatedStorage, and the bomb didn't have a script modifying its velocity. User#28017 0 — 5y
0
The tool modfiys the object. I tried this script with a sphere in replicatedstorage. SaltyIceberg 81 — 5y
Ad

Answer this question