01 | local handle = script.Parent.Handle |
02 | local debounce = false |
03 |
04 | script.Parent.Activated:Connect( function () |
05 | if not debounce then |
06 | debounce = true |
07 |
08 | local cloned = game.ServerStorage.bomb:Clone() |
09 | cloned.Parent = workspace |
10 | cloned.CFrame = handle.CFrame*CFrame.new( 0 , 1 , 0 ) |
11 | cloned.Velocity = Vector 3. new( 0 , math.random( 50 , 100 ), 0 ) |
12 |
13 | wait( 5 ) |
14 | debounce = false |
15 | end |
16 | 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?
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.
01 | local handle = script.Parent.Handle |
02 | local debounce = false |
03 | local replicatedStorage = game:GetService( "ReplicatedStorage" ) |
04 | local bomb = replicatedStorage:WaitForChild( "Bomb" ) |
05 | local maxSpeed = 25 -- Not studs per second |
06 | local waitTime = 5 |
07 |
08 | script.Parent.Activated:Connect( function () |
09 | if not debounce then |
10 | debounce = true |
11 |
12 | local cloned = bomb:Clone() |
13 | cloned.Parent = workspace |
14 | cloned.CFrame = handle.CFrame*CFrame.new( 0 , 1 , 0 ) |
15 |