我试图使NPC看起来像是标题屏幕的播放器。
我不需要有关如何制作NPC的教程;我知道如何使NPC看起来像个人。相反,我需要知道如何在脚本中克隆播放器的确切外观。我该怎么办?
答案 0 :(得分:1)
首先,可以在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
,则您的代码将被破坏。为此,您可以使用ROBLOX的特殊功能,称为Event
。
ROBLOX具有称为Event
的特殊对象。 Event
具有特殊的:connect()
功能,可让您将功能连接到这些事件。当您将功能连接到Event
时,将在发生Event
时执行该功能。
在您的情况下,您将需要 2 Events
:
Player
加入游戏的人.Character
model
的时间首先,让我们讨论一下Player
何时加入游戏。首先,我们需要获取Players
对象-一个跟踪所有玩家信息的对象。我们将使用名为:GetService()
的game
的特殊功能:
players = game:GetService("Players")
现在,我们将在Event
中使用特殊的Players
,称为.PlayerAdded
:
players = game:GetService("Players")
players.PlayerAdded:connect(function(player)
end)
请注意,实际添加的Player
将作为参数传递给参数player
。现在,我们将使用称为CharacterAdded
的Event
中的特殊Player
:
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
由ROBLOX服务器处理,而LocalScript
由玩家的计算机本身处理。因为服务器处理添加到游戏中的玩家,所以您必须使用Script
。
希望这会有所帮助!
答案 1 :(得分:0)
我要假设您正在尝试使NPC看起来像球员?这可能需要一些工作,但是您必须在game.Workspace
中找到想要NPC的播放器,然后可以克隆播放器并将npc的部件插入其中,也可以将克隆的播放器插入NPC。
据我所知,没有一种方法可以在脚本中完成。