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