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!