使NPC看起来像ROBLOX中的播放器

时间:2018-07-08 22:21:33

标签: lua scripting roblox

我试图使NPC看起来像是标题屏幕的播放器。

我不需要有关如何制作NPC的教程;我知道如何使NPC看起来像个人。相反,我需要知道如何在脚本中克隆播放器的确切外观。我该怎么办?

2 个答案:

答案 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

  1. 一个Player加入游戏的人
  2. 一个用于实际加载其物理.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。现在,我们将使用称为CharacterAddedEvent中的特殊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完成, 不是 LocalScriptScript由ROBLOX服务器处理,而LocalScript由玩家的计算机本身处理。因为服务器处理添加到游戏中的玩家,所以您必须使用Script

希望这会有所帮助!

答案 1 :(得分:0)

我要假设您正在尝试使NPC看起来像球员?这可能需要一些工作,但是您必须在game.Workspace中找到想要NPC的播放器,然后可以克隆播放器并将npc的部件插入其中,也可以将克隆的播放器插入NPC。

据我所知,没有一种方法可以在脚本中完成。