【发布时间】:2020-02-15 17:48:31
【问题描述】:
我想做的事:我想要一棵树,每隔几秒就有一个苹果从树上掉下来。玩家可以“拿起”那个苹果。如果游戏中有更多玩家,则拿起最多苹果的玩家获胜。
我有什么:我有一棵树,苹果都掉下来了。直到这里它完美运行。玩家可以捡起一个苹果——如果他的脚碰到了苹果,苹果就会被摧毁,玩家得 1 分。还可以。
出了什么问题:如果更多玩家加入游戏,看起来每个玩家都能看到自己的(本地)苹果。因此,如果 Player1 捡起一个苹果,苹果就会被摧毁 - 但仅限于他 :( 所有其他玩家都可以看到那个苹果还在那里,他们也可以捡起它。如果我用2个玩家,在服务器窗口中我可以看到苹果仍然存在,即使所有玩家都捡起它。所以服务器显然有它自己的实例。
但我只想要一个全球苹果。
应用是这样的:
我在工作区有一个苹果。每隔几秒钟,我就会在 Workspace 中 AppleTree 模型下的脚本(不是本地脚本,而是脚本)中克隆它:
function GrowNewApple()
local newApplePos = GetRandomPlace()
local appleTemplate = workspace.apples.prototype
local newApple = appleTemplate:Clone()
newApple.Parent = appleTemplate.Parent
newApple.Name = "apple"
newApple.Position = newApplePos
end
在 StarterPlayer / StarterPlayerScripts 我有一个 本地脚本:
local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:wait()
character:WaitForChild("LeftFoot")
character.LeftFoot.Touched:Connect( PickUpApple )
最后我的 PickUpApple 函数如下所示:
function PickUpApple( touchObject )
if touchObject:IsDescendantOf(workspace.apples) then
touchObject:Destroy()
end
end
有什么想法吗?
是不是因为 PickUpApple() 是从 LocalScript 调用的?这个 LocalScript 是否有可能将 local touchObject 发送到这个函数中?
我不知道该怎么做。谢谢大家。
【问题讨论】: