我试图让NPC看起来像一个标题屏幕的播放器。
我不需要有关如何制作NPC的教程;我知道如何让NPC看起来像某个人。相反,我需要知道如何在脚本中克隆播放器的确切外观。我怎样才能做到这一点?
首先,可以在Player
的.Character
属性中找到给定玩家的角色模型。 .Character
属性是Model
,与游戏中的大多数其他类型的对象一起,具有:Clone()
功能。您可以使用此功能制作播放器角色模型的完整副本。例如:
player = path.to.player.here
copy = player.Character:Clone()
copy.Parent = game.Workspace --put the clone into the physical environment
但是,如果你在标题画面中使用它,就像你说的那样:当玩家加入游戏时,他们的角色不会立即加载;相反,它将需要几秒钟。如果您尝试玩游戏,然后注意在实际放入角色之前需要多长时间,您可能会自己看到这个。因此,如果您尝试在有人加入游戏时使用.Character
,您的代码就会中断。为了解释这一点,您可以使用名为Event
s的ROBLOX的特殊功能。
ROBLOX有一个名为Event
s的特殊对象。 Event
s有一个特殊的:connect()
函数,它允许您将函数连接到这些事件。当您将函数连接到Event
时,将在Event
发生时执行该函数。
在您的情况下,您将需要两个Events
:
Player
加入游戏时.Character
model
实际装载首先,我们来谈谈Player
何时加入游戏。首先,我们需要获取Players
对象 - 一个跟踪所有玩家信息的对象。我们将使用game
的一个特殊函数:GetService()
:
players = game:GetService("Players")
现在,我们将在Event
中使用一个名为Players
的特殊.PlayerAdded
:
players = game:GetService("Players")
players.PlayerAdded:connect(function(player)
end)
请注意,实际添加的Player
将作为参数传递给参数player
。现在,我们将使用Event
的特殊Player
,称为CharacterAdded
:
players = game:GetService("Players")
players.PlayerAdded:connect(function(player)
player.CharacterAdded:connect(function(character)
end
end)
请注意,Character
的Player
将作为参数传递给参数character
,因此我们甚至不需要使用Player.Character
。现在,我们可以从前面获取我们的克隆代码,最后将它放在这段代码中:
players = game:GetService("Players")
players.PlayerAdded:connect(function(player)
player.CharacterAdded:connect(function(character)
local copy = character:Clone()
copy.Parent = game.Workspace --put the clone into the physical environment
--your code here
end
end)
就是这样!现在,您可以将所有处理克隆的代码放在--your code here
上。
最后需要注意的是,这需要在常规的Script
中完成,而不是LocalScript
。 Script
s由ROBLOX服务器处理,而LocalScript
s由玩家的计算机本身处理。因为服务器处理添加到游戏中的玩家,所以必须使用Script
。
希望这可以帮助!
我会假设你试图让一个NPC看起来像一个玩家?这可能需要一些工作,但你必须在game.Workspace
中找到你希望NPC看起来像的播放器,然后你可以克隆播放器并将npc的部分插入其中,或者你可以只插入克隆的播放器进入全国人大常委会。
据我所知,如果不在脚本中执行此操作,则无法执行此操作。