Como fazer um objeto perseguir o player no Roblox Studio (:MoveTo)

Como fazer um objeto perseguir o player no Roblox Studio (:MoveTo)


Nesse post vou mostrar como fazer um personagem perseguir o player através do mapa no Roblox Studio.

Link do Game: https://www.roblox.com/games/6515406177/DESTRUA-O-INIMIGO-COVIRUS


1 – Part ➔ Block: Criando um portal onde os inimigos vão nascer
Esse portal foi criado utilizando a ferramenta Part ➔ Sphere. No portal inserimos ParticleEmitter e efeito de Transparência

2 – Part ➔ Sphere: Criando um inimigo utilizando a Sphere
O Inimigo foi criado utilizando a ferramenta Part ➔ Sphere, uma bola gigante.
Definimos a cor, mudamos o “Material” para “Neon” que gera o efeito de brilho.
Para o script de perseguição funcionar você precisa:
➔ Transformar a Sphere em “Model” através do agrupamento “CTRL + G”
➔ Inserir o objeto “Humanoide”
➔ Inserir o “Surface” no Objeto

3 – Script de Perseguição: Script que faz o Inimigo perseguir o Player

Movendo objetos

local objeto = script.Parent
while (true) do
	wait(0.1)
	objeto.Position = objeto.Position + Vector3.new	(0,0,1)
end

Como fazer um objeto perseguir o player

  • O Bloco tem que ter HumanoidRootPart
  • Tem que transformar em Surface
local distanciamax = 200 -- 20 metros para o NPC perSeguir o jogador
local distanciamin = 20 -- 5 de distancia minima para o bot parar
function jogador()
	repeat wait() until game.Players.NumPlayers >= 1 -- esperar até que a quantidade de jogadores for maior que 1 ou igual
	local NPC = script.Parent
	local NPCHumanoidRoot = NPC.HumanoidRootPart
	local NPCHumanoid = NPC.Humanoid
	for i,v in pairs(game.Players:GetPlayers()) do -- Pegar a lista dos jogadores
		repeat wait() until v.Character -- Aguardar o character do player			
		-- perseguição
		if (v.Character.HumanoidRootPart.Position - NPCHumanoidRoot.Position).Magnitude <= distanciamax and (v.Character.HumanoidRootPart.Position - NPCHumanoidRoot.Position).Magnitude >= distanciamin then
			NPCHumanoid:MoveTo(v.Character.HumanoidRootPart.Position - Vector3.new(0,distanciamin,0))
			if v.Character.Humanoid.Jump == true then -- se o jogador pular o npc também irá pular
				NPCHumanoid.Jump = true
			end			
			NPCHumanoidRoot.Touched:Connect(function(hit) -- dar dano no jogador
				wait(1)
				if hit.Parent:FindFirstChild("Humanoid") then
					wait(1)
					hit.Parent:FindFirstChild("Humanoid"):TakeDamage(0.05)
				end
			end)
		end				
	end
end
while wait() do
	jogador()
end

Outras referências
Vídeo 1 https://www.youtube.com/watch?v=M_JCH4ibqMo

Vídeo 2 https://www.youtube.com/watch?v=KldFdpHTUEk

Vídeo 3 https://www.youtube.com/watch?v=NuRUbwsSRY4

Vídeo 4 https://www.youtube.com/watch?v=fxpJjF0frQI

Vídeo 5 https://www.youtube.com/watch?v=C80p_WXSoB0

Vídeo 6 https://www.youtube.com/watch?v=IQBEH9OMBm4


Loading


Publicação Criada em: abril 29, 2021
Atualizado em: março 20, 2025 9:50 pm

Deixe um comentário