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

How to teleport behind players?

I wanna create a move where it'll teleport a player behind the player facing the same direction and is always behind no matter what direction the other player is facing. However, I'm unsure of where to start as I have to keep orientation, and position to always be behind a certain amount.

1 comment

0

Reposition the CFrame of the player you want to move to that of the player you want to move behind adding 5 or so stud to the Z axis

1 answer

✓ Accepted answer

ah i see u r requesting an anime killer move: u asked the right website then.

roblox has these things called CFrames which can be only obtained via hacking real life. I was just kidding but that is basically how hard it is to visualize these things without a technical background. CFrames encapsulate both the orientation and position property of a part, basically rendering them useless in the context of scripting(except for position that still can be used to calculate the linear distance between vectors). To go around doing this u have to understand 2 things:

1 - if u set the CFrame of the player's basePart(the rootPart) to the CFrame of the enemy's rootPart, the player's rootPart will share the position and orientation of the enemy's rootPart(basically).

2 - u can combine CFrames(e.g if u do something like part.CFrame * CFrame.new(0, 0, 1) the result CFrame would be 1 unit in front of the part(no matter what direction)).

with these 2 in mind, we can make a script:

place in starterPack btw:

local root = game.Players.LocalPlayer.CharacterAdded:Wait():WaitForChild("HumanoidRootPart")

game:GetService("UserInputService").InputBegan:Connect(function(input, process)
	if process then return end
	
	if input.UserInputType == Enum.UserInputType.MouseButton1 then
		local nearestEnemy = nil
		local nearestRoot = math.huge -- this number can be seen as basically infinity
		
		for i, v in pairs(workspace:GetChildren()) do
			local plrRoot = v:FindFirstChild("HumanoidRootPart")
			
			if plrRoot and plrRoot ~= root then
				local mag = (plrRoot.Position - root.Position).Magnitude -- calculate linear distance between plrRoot and root
				
				if mag < 10 and mag < nearestRoot then -- if the distance mentioned earlier is more than 10 linear units or more than the current nearest root, we will not count it
					nearestEnemy = plrRoot
					nearestRoot = mag
				end
			end
		end
		
		if nearestEnemy then
			root.CFrame = nearestEnemy.CFrame * CFrame.new(0, 0, 3) -- make the root be 3 units behind the enemy's root, or in front of it in this case due to the fact the root(as a part)'s direction is opposite of the player's direction(as a guy)
		end
	end
end)

1 comment

0

Thanks I'll try it right now

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