Why cant i detect if cloned orb was touched by player or not (while waiting)
local function handleOrbTouched(orb)
orb.Touched:Connect(function(hit)
local character = hit.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
print(player.Name .. " touched an orb! Team: " .. (player.Team and player.Team.Name or "Unknown"))
if player.Team and player.Team.Name == "Players" then
orb:Destroy()
end
end
end)
end
local function startRound()
assignTeams()
teleportPlayers(mapSpawn)
print("Round started!")
local orbCount = 50
for i = 1, orbCount do
local newOrb = Orb:Clone()
newOrb.Parent = OrbsFolder
local size = Spawner.Size
local randomX = math.random(-size.X / 2, size.X / 2)
local randomZ = math.random(-size.Z / 2, size.Z / 2)
newOrb.Position = Spawner.Position + Vector3.new(randomX, Spawner.Position.Y, randomZ)
handleOrbTouched(newOrb)
end
wait(roundTime)
for i, v in pairs(OrbsFolder:GetChildren()) do
if v.Name == "Orb" then
v:Destroy()
end
end
print("Round ended! Teleporting back to lobby.")
teleportPlayers(lobbySpawn, "Lobby")
end
local Players = game:GetService("Players")
local function handleOrbTouched(orb)
orb.Touched:Connect(function(hit)
local character = hit.Parent
local player = Players:GetPlayerFromCharacter(character)
if player then
print(player.Name .. " touched an orb! Team: " .. (player.Team and player.Team.Name or "Unknown"))
if player.Team and player.Team.Name == "Players" then
orb:Destroy()
end
end
end)
end
local function startRound()
assignTeams()
teleportPlayers(mapSpawn)
print("Round started!")
local orbCount = 50
for i = 1, orbCount do
local newOrb = Orb:Clone()
newOrb.Parent = OrbsFolder
local size = Spawner.Size
local randomX = math.random(-size.X / 2, size.X / 2)
local randomZ = math.random(-size.Z / 2, size.Z / 2)
newOrb.Position = Spawner.Position + Vector3.new(randomX, 5, randomZ)
newOrb.Anchored = false
newOrb.CanTouch = true
newOrb.Massless = true
handleOrbTouched(newOrb)
end
task.wait(roundTime)
for _, v in pairs(OrbsFolder:GetChildren()) do
if v:IsA("BasePart") and v.Name == "Orb" then
v:Destroy()
end
end
print("Round ended! Teleporting back to lobby.")
teleportPlayers(lobbySpawn, "Lobby")
end
notes:
Ensure the Orb is unanchored and has CanTouch = true.
Add Massless = true to avoid physics issues.
Ensure Players is defined at the start.