How to make a weapon shoot?

Hey!

This is kind of a vague and weird question, so I’ll try to make it as simple as possible. I’m working on a water balloon fight game and I’m wondering, how do I make it shoot? I have the animation, remotes and everything. I just need to know how do I make a second balloon that’s the “bullet” and actually make it move towards the player’s mouse? I’m not sure how to make it work with weight, make it fall with real physics.

You can use raycasting. Raycasting is sending an imaginary line toward a certain direction. You can choose the length, and create parameters to check if the ray hit a humanoid, or a part.

Here is the example in the developer hub post,

local function fireLaser()
	-- Set an origin and directional vector
	local rayOrigin = caster.Position
	local rayDirection = Vector3.new(0, -100, 0)
 
	-- Build a "RaycastParams" object and cast the ray
	local raycastParams = RaycastParams.new()
	raycastParams.FilterDescendantsInstances = {caster.Parent}
	raycastParams.FilterType = Enum.RaycastFilterType.Blacklist
	local raycastResult = workspace:Raycast(rayOrigin, rayDirection, raycastParams)
 
	if raycastResult then
		local hitPart = raycastResult.Instance
		-- Check if the part resides in a folder, that it's fully visible, and not locked
		if hitPart.Parent == workspace.Tiles and hitPart.Transparency == 0 and not hitPart.Locked then
			hitPart.Locked = true
			-- Position beam ending attachment at hit point
			caster.BeamEndAttachment.Position = Vector3.new(0, (hitPart.Position.Y-caster.Position.Y)+raycastResult.Position.Y, 0)
			-- Start beam and burn effect
			caster.Beam.Enabled = true
			caster.BeamEndAttachment.BurnEffect.Enabled = true
			-- After a delay, trigger tile "melt"
			wait(TILE_MELT_DELAY)
			tweenTile(hitPart, 1)
		end
	end
	-- Trigger next caster cycle
	moveCaster()
end

There are alternatives, but this is what I use.