Hello, i need to do something like that → when the ball touches the red box I want it to be pushed (the ball) like the red line that i marked
How can I do that? Does anyone know?
Hello, i need to do something like that → when the ball touches the red box I want it to be pushed (the ball) like the red line that i marked
Try giving it a certain BodyVelocity in the opposite direction once it touches the red part.
i don’t know how to do it with my code
script
local tool = script.Parent
tool.RemoteEvent.OnServerEvent:Connect(function(player, event)
local mouse = player:GetMouse()
local Handle = tool.Handle
tool.Parent = workspace
Handle.CFrame = CFrame.new(Handle.Position, event)
local bv = Instance.new("BodyVelocity",Handle)
bv.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
bv.Velocity = tool.Handle.CFrame.LookVector * 30 -- Change the number if you want :D
local vel = tool.Handle.CFrame.LookVector
wait(.2)
local box = game.Workspace.BaseballField.boxTouch
box.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Handle") then
bv.Velocity = tool.Handle.CFrame.LookVector * -30
local vel = tool.Handle.CFrame.LookVector
end
end)
wait(.1)
tool.Handle.BodyVelocity:Destroy()
--- Adding the next part will result when they touch it then will like teleport to the position of the ball and like "take" it
Handle.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild("Humanoid") then
Handle.Anchored = false
wait(.1)
Handle.Anchored = true
Handle.Anchored = false
end
end)
end)
script.Parent.Equipped:Connect(function()
for i = 0, -4, -.5 do
script.Parent.GripPos = Vector3.new(0,i,0)
wait()
end
for i = -4,0,.5 do
script.Parent.GripPos = Vector3.new(0,i,0)
wait()
end
end)
For that you would have to cast a ray from the baseball to its Look Vector and once the ray hits something , get the reflection of the ray using the formula : r = d - 2(d ⋅ n)n
and apply the velocity of the BodyVelocity as the reflection.
For reference you can use : How to reflect rays on hit
Hope this helps you
EDIT : Tried to make sure it works kinda similar to the way you want , got this https://gyazo.com/5ba52aa07c29a98879fb56e8b558b32d
you wanna invert the vector with d-2(dn)
where d is the normal of the vector and n is the surface normal of where the ball hit. From there normalize that vector and apply its magnitude to be half of what we used to have (on touched)
You can try to use LookVector.
You can learn about LookVector here CFrame | Documentation - Roblox Creator Hub
or from this post How does LookVector work?