[英]Logitech Script: 1st click, 2nd click, 1st click, 2nd click event
[英]MouseClick and MoveTo event is not working on the 2nd Part that spawned
我正在開發一個項目,玩家單擊該對象,然后將其移到該對象上,等待一秒鍾,然后將該對象從游戲中刪除,並在排行榜上更新積分。 問題在於它僅在第一輪比賽中有效。 第二次,新零件產生,它的確將ClickDetector作為其子零件,但是它不起作用。
local flowers = game.ReplicatedStorage.Flowers.level1:GetChildren()
local selection = math.random(1,#flowers)
local Clone = flowers[selection]:Clone()
local ClickDetector = Instance.new("ClickDetector")
ClickDetector.Parent = Clone
ClickDetector.MaxActivationDistance = 500
local spawners = workspace.Spawners.level1:GetChildren()
local spawnSelection = math.random(1,#spawners)
local spawner = spawners[spawnSelection]
while true do
wait(1)
if Clone.Parent == nil then
Clone.Parent = workspace.Flowers.level1
Clone.CFrame = spawner.CFrame + Vector3.new(math.random(-5,5),1,math.random(-5,5))
print("Clone added")
ClickDetector.MouseClick:Connect(function(playerWhoClicked)
playerWhoClicked.Character.Humanoid:MoveTo(Clone.Position,Clone)
print("clicked")
wait(1)
Clone:Remove()
print("Clone removed")
local flowerValue = playerWhoClicked.leaderstats.Flowers
local coinsValue = playerWhoClicked.leaderstats.Coins
flowerValue.Value = flowerValue.Value + 1
coinsValue.Value = coinsValue.Value + 5
end)
end
end
輸出上沒有錯誤消息。 只是在新生成的零件上,“ clicked”未打印。
您的問題是ClickDetector中的函數正在使用對Clone的引用,並且銷毀Clone時,該功能將不再存在。 如果您的代碼只是將對象從世界上取消了父級而不是銷毀了它,那么它將起作用。
-- choose a random flower and clone it
local flowers = game.ReplicatedStorage.Flowers.level1:GetChildren()
local selection = math.random(1,#flowers)
local Clone = flowers[selection]:Clone()
-- configure a click detector into the cloned flower
local ClickDetector = Instance.new("ClickDetector")
ClickDetector.Parent = Clone
ClickDetector.MaxActivationDistance = 500
ClickDetector.MouseClick:Connect(function(playerWhoClicked)
-- when a player clicks on the flower, move the player over to it
playerWhoClicked.Character.Humanoid:MoveTo(Clone.Position,Clone)
print("clicked")
-- remove the cloned flower from the workspace, but don't destroy it
wait(1)
Clone.Parent = nil -- << simply hide it from the world
-- award the player with some points
local flowerValue = playerWhoClicked.leaderstats.Flowers
local coinsValue = playerWhoClicked.leaderstats.Coins
flowerValue.Value = flowerValue.Value + 1
coinsValue.Value = coinsValue.Value + 5
end)
-- choose a random spawn location
local spawners = workspace.Spawners.level1:GetChildren()
local spawnSelection = math.random(1,#spawners)
local spawner = spawners[spawnSelection]
-- begin a loop to place the flower into the world
while true do
wait(1)
-- if the flower isn't visible, place it near a specific location
if Clone.Parent == nil then
Clone.Parent = workspace.Flowers.level1
Clone.CFrame = spawner.CFrame + Vector3.new(math.random(-5,5),1,math.random(-5,5))
print("Clone added into the world")
-- now wait for a player to click on it and unparent it.
-- this case will come back around a second later, and it will be added back in.
end
end
這樣,您不必擔心花的第二或第三產卵,因為將永遠只有一朵花。
這項工作是否可行,很難理解您的問題,但是我認為您的意思是,再次單擊該克隆將不會出現。 這項工作做得好嗎? 另外,您無需在循環內部包含click事件,並且無需在播放器每次單擊時進行克隆,就可以在click函數內對Clone變量進行克隆。
local flowers = game.ReplicatedStorage.Flowers.level1:GetChildren()
local selection = math.random(1,#flowers)
local Clone = flowers[selection]:Clone()
local ClickDetector = Instance.new("ClickDetector")
ClickDetector.Parent = Clone
ClickDetector.MaxActivationDistance = 500
local spawners = workspace.Spawners.level1:GetChildren()
local spawnSelection = math.random(1,#spawners)
local spawner = spawners[spawnSelection]
while true do
wait(1)
if Clone.Parent == nil then
Clone.Parent = workspace.Flowers.level1
Clone.CFrame = spawner.CFrame + Vector3.new(math.random(-5,5),1,math.random(-5,5))
print("Clone added")
end
end
ClickDetector.MouseClick:Connect(function(playerWhoClicked)
_clone = Clone:Clone()
playerWhoClicked.Character.Humanoid:MoveTo(_clone.Position,_clone)
print("clicked")
wait(1)
_clone:Destroy()
print("_clone removed")
local flowerValue = playerWhoClicked.leaderstats.Flowers
local coinsValue = playerWhoClicked.leaderstats.Coins
flowerValue.Value = flowerValue.Value + 1
coinsValue.Value = coinsValue.Value + 5
end)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.