Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

How do i properly make my spear aim?

im basically making gae bolg (a spear weapon that u throw) from fate and i have a little problem the spear goes to the direction of the mouse but idrk how to make it properly aimable

heres the video (medal clip)

https://medal.tv/games/roblox-studio/clips/AicE2aNe26JmO/d1337ohMSeCh?invite=cr-MSxGb24sNjU0MzQwMDEs

heres the part of the script where i have the aiming system basically

	
	GEvent.OnServerEvent:Connect(function(Player,mouseaim)
	
	local Character = Player.Character 
	local Humanoid = Character.Humanoid
	local Root = Character.HumanoidRootPart


	local GaeBolgThrown = game.ReplicatedStorage.Objects.GaeBolgThrown:Clone()
	GaeBolgThrown.CFrame = Tool.Handle.CFrame * CFrame.new(0,0,0)
	GaeBolgThrown.Orientation = GaeBolgThrown.Orientation + Vector3.new(0,0,0) 
	GaeBolgThrown.Parent = workspace
	
	local RootPos, MousePos = Root.Position, mouseaim
	Root.CFrame = CFrame.new(RootPos, Vector3.new(MousePos.X, RootPos.Y, MousePos.Z))


	local BV2 = Instance.new("BodyVelocity",GaeBolgThrown)
	BV2.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
	BV2.Velocity = CFrame.new(Character.HumanoidRootPart.Position,mouseaim).LookVector*400
		
	
end)

1 answer

I don't know what the mouseaim is, but when sending the mouseaim to the server, I recommend using Camera:ViewportPointToRay since it accurately gets its position in the workspace by making a unit Ray, and it ignores the GuiInset at the top of the screen.

-- Client

local depth = 0 -- optional; 0 by default
local length = 1 -- optional; 1 by by default

local unitRay = Camera:ViewportPointToRay(Mouse.X, Mouse.Y, depth) -- converting the mouse position to a ray by using its X and Y axis, and the depth variable

GEvent:FireServer(unitRay.Direction * length) -- sending unitRay's direction or lookVector to the server
-- Server
	
GEvent.OnServerEvent:Connect(function(Player,mouseaim)
	
	local Character = Player.Character
	local Humanoid = Character.Humanoid
	local Root = Character.HumanoidRootPart
	
	
	local GaeBolgThrown = game.ReplicatedStorage.Objects.GaeBolgThrown:Clone()
	GaeBolgThrown.CFrame = Tool.Handle.CFrame * CFrame.new(0,0,0)
	GaeBolgThrown.Orientation = GaeBolgThrown.Orientation + Vector3.new(0,0,0) 
	GaeBolgThrown.Parent = workspace
	
	Root.CFrame = CFrame.new(Root.Position, mouseaim)
	
	
	local BV2 = Instance.new("BodyVelocity",GaeBolgThrown)
	BV2.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
	BV2.Velocity = CFrame.new(Character.HumanoidRootPart.Position,mouseaim).LookVector*400
	
	
end)

If there is still a problem with the mouse aim, I recommend editing the depth and/or length variable from the client.

This discussion is preserved as it was. New answers, comments, and votes are closed.