COMO FAZER UM SISTEMA DE PETS

Como fazer Sistema de Pets

Os pets são uma das mecânicas mais populares nos jogos do Roblox! Eles deixam o jogo mais divertido e incentivam os jogadores a continuarem jogando para colecionar diferentes mascotes. 🎮✨

Neste post, você vai aprender como criar um sistema de pets no Roblox, onde os jogadores poderão pegar um ovo e ganhar um pet aleatório! Além disso, você poderá definir a raridade dos pets, tornando alguns mais especiais que outros. 🦄🔥

E tem mais! Os jogadores poderão ter quantos pets quiserem, e eles vão se organizar e seguir o personagem automaticamente! 🐾🚀

No vídeo abaixo, explico passo a passo como fazer tudo isso no Roblox Studio. Além disso, você encontrará os scripts completos para implementar no seu jogo! Então, bora programar? 🚀

Assista a Vídeo Aula!

Confira os Scripts utilizados em Aula pela Prof

ServerScript

				
					local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Pets = ReplicatedStorage.Pet0:GetChildren()
local Eggs = game.Workspace.Eggs:GetChildren()
local FOLLOW_DISTANCE =6.5
local Y_OFFSET = 3
local debounceTable={}
local PlayerData={}
print(Pets)
print(#Pets)
local function addPet(player, pet)
	local character = player.Character or player.CharacterAdded:Wait()
	local hrp= character:WaitForChild("HumanoidRootPart")

	local petRoot = pet.PrimaryPart or pet:FindFirstChild("HumanoidRootPart")
	
	if not petRoot then
		warn("O pet não tem primary part")
		return
	end
	local playerPets = PlayerData[player.UserId].pets
	local petCount= #playerPets -- mudar para count table
	table.insert(playerPets, pet)
	local offsetZ = - FOLLOW_DISTANCE * (petCount + 1)
	petRoot.CFrame = hrp.CFrame * CFrame.new(0, Y_OFFSET, offsetZ)
	pet.Parent = workspace
	
	RunService.Heartbeat:Connect(function()
		if not hrp or not hrp.Parent then 
			
			return
		end
		
		local targetPosition
		local playerLook = hrp.CFrame.LookVector
		if petCount==0 then
			targetPosition = hrp.Position +( playerLook * - FOLLOW_DISTANCE)
		else
			local previousPet = playerPets[petCount]
			local previousRoot = previousPet.PrimaryPart or previousPet:FindFirstChild("HumanoidRootPart")
			if previousRoot then
				targetPosition = previousRoot.Position + (previousRoot.CFrame.LookVector) * -FOLLOW_DISTANCE
			end	
		end
		if targetPosition then
			targetPosition = Vector3.new(targetPosition.X, Y_OFFSET, targetPosition.Z)
			local lookDirection = (hrp.Position - petRoot.Position).unit
			petRoot.CFrame = CFrame.lookAt(
				petRoot.Position:Lerp(targetPosition, 0.2), targetPosition
			)			
		end
	end)
end

for _, egg in ipairs(Eggs) do
	egg.Touched:Connect(function(hit)
		if hit.Parent:FindFirstChild("Humanoid") then
			local character = hit.Parent
			local player = Players:GetPlayerFromCharacter(character)
			if player then
				if not debounceTable[player.UserId] then
					debounceTable[player.UserId]=true
					print("Encostei no Egg")
					
					local pet = Pets[math.random(1,#Pets)]
					print("Pet Sorteado ", pet.Name)
					
					local PetClone = ReplicatedStorage.Pet0:WaitForChild(pet.Name):Clone()
					addPet(player, PetClone)
					egg:Destroy()
					task.wait(1)
					debounceTable[player.UserId]=false
				end
			end
			
		end
	end)
end
Players.PlayerAdded:Connect(function(player)
	print("Player Entrou")
	if not PlayerData[player.UserId] then
		PlayerData[player.UserId] = {
			pets ={}
		}
	end
--	addPet(player,Pets[1])
end)
				
			

Quer aprender mais?

Se você gosta de criar jogos e quer aprender programação de um jeito fácil e divertido, conheça os cursos da Programação for Kids! 🎓🚀

Aqui, crianças e adolescentes aprendem a programar criando seus próprios jogos no Roblox, Minecraft e muito mais! Não importa se você nunca programou antes – nossas aulas são práticas e feitas para iniciantes!

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *