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

Homing Projectile keeps teleporting towards the victim's body when I want It to glide towards It (?)

As the titles says, I made a tool that clones the handle, and what the cloned handle does Is that It will move In a straight line, If It touches someone, It will damage them to 1-5. And after a while It will home In towards the victim torso, dealing 10 damage. The problem Is that the homing projectile keeps teleporting towards the torso

Script:

local tool = script.Parent
local PathFinding = game:GetService("PathfindingService")

tool.RemoteEvent.OnServerEvent:Connect(function()
	local LAG_BALLTROLL = tool.Handle:Clone()
	tool.Handle.Transparency = 1
	tool.Handle.CanCollide = false
	LAG_BALLTROLL.Parent = game.Workspace
	LAG_BALLTROLL.Orientation = tool.Parent.Torso.Orientation
	LAG_BALLTROLL.Sounds.Ello:Play()
	LAG_BALLTROLL.Sounds.Ello.PlaybackSpeed = math.random(0.5,2)
	game:GetService("Debris"):AddItem(LAG_BALLTROLL,5)
	tool.Handle.Transparency = 1
	tool.Handle.CanCollide = false
	local HandleParts = tool.Handle:GetChildren()
	for _, Objects in ipairs(HandleParts) do
		if Objects:IsA("BasePart") then
			Objects.Transparency = 1
			Objects.CanCollide = false
		end
	end
	local Force = Instance.new("VectorForce",LAG_BALLTROLL)
	local Attachment2 = Instance.new("Attachment",LAG_BALLTROLL)
	Attachment2.Name = "YEETPOWERGOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"
	Force.Attachment0 = LAG_BALLTROLL.Attachment
	Force.Force = Vector3.new(0,0,-3000)
	Force.ApplyAtCenterOfMass = true
	game:GetService("Debris"):AddItem(Force,0.5)
	game:GetService("Debris"):AddItem(Attachment2,0.5)
	LAG_BALLTROLL.Touched:Connect(function(hit)
		local Humanoid = hit.Parent:WaitForChild("Humanoid")
		if Humanoid ~= tool.Parent.Humanoid then
			Humanoid:TakeDamage(math.random(1,5))
			LAG_BALLTROLL.Sounds.Ello:Stop()
			wait(1)
			local StopIt_GetSomeHelp = false
			while wait() do
				if not StopIt_GetSomeHelp then
					StopIt_GetSomeHelp = true
					local ZePath = PathFinding:CreatePath()
					ZePath:ComputeAsync(LAG_BALLTROLL.Position, hit.Parent.Torso.Position)
					if ZePath.Status == Enum.PathStatus.Success then
						local Waypoints = ZePath:GetWaypoints()
						for _, waypoint in pairs(Waypoints) do
							local Position = Instance.new("Part",game.Workspace)
							game:GetService("Debris"):AddItem(Position,5)
							Position.Position = waypoint.Position
							Position.Anchored = true
							Position.Transparency = 1
							Position.CanCollide = false
							LAG_BALLTROLL.Position = waypoint.Position
							LAG_BALLTROLL.Touched:Connect(function(hit)
								if Humanoid ~= tool.Parent.Humanoid then
									StopIt_GetSomeHelp = false
									Humanoid:TakeDamage(10)
									game:GetService("Debris"):AddItem(Position,0)
									wait(2.3)
									StopIt_GetSomeHelp = true
								end
							end)
							wait(0)
						end
					end
				end
			end
		end
	end)
	wait(0.5)
	for _, Objects in ipairs(HandleParts) do
		if Objects:IsA("BasePart") then
			Objects.Transparency = 0
			Objects.CanCollide = true
		end
	end
	tool.Handle.Transparency = 0
	tool.Handle.CanCollide = true
end)

2 comments

1

Um what? pathfinding for a flying projectile?

0

Kinda, the ball moves In a straight line, and when It hits something, (I didn't add this effect cuz I don't know why) the ball looses Its anti-gravity effect, and after 1 second pathfind Its vicitim whom got hit, but I mean, I am Intrested In pathfinding flying projectiles

1 answer

The reason why it follows the player's torso at all times and not just shoot at the old torso position is that you're getting the torso position inside the loop. Instead, define the torso outside the loop.

		local torso_pos = hit.Parent.Torso.Position
		while task.wait() do
			if not StopIt_GetSomeHelp then
				StopIt_GetSomeHelp = true
				local ZePath = PathFinding:CreatePath()
				ZePath:ComputeAsync(LAG_BALLTROLL.Position, torso_pos)

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