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

问题描述 投票:0回答:2

我试图让NPC看起来像一个标题屏幕的播放器。

我不需要有关如何制作NPC的教程;我知道如何让NPC看起来像某个人。相反,我需要知道如何在脚本中克隆播放器的确切外观。我怎样才能做到这一点?

lua scripting roblox
2个回答
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,您的代码就会中断。为了解释这一点,您可以使用名为Events的ROBLOX的特殊功能。

ROBLOX有一个名为Events的特殊对象。 Events有一个特殊的:connect()函数,它允许您将函数连接到这些事件。当您将函数连接到Event时,将在Event发生时执行该函数。

在您的情况下,您将需要两个Events

  1. 一个当Player加入游戏时
  2. 一个当他们的物理.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)

请注意,CharacterPlayer将作为参数传递给参数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中完成,而不是LocalScriptScripts由ROBLOX服务器处理,而LocalScripts由玩家的计算机本身处理。因为服务器处理添加到游戏中的玩家,所以必须使用Script

希望这可以帮助!


0
投票

我会假设你试图让一个NPC看起来像一个玩家?这可能需要一些工作,但你必须在game.Workspace中找到你希望NPC看起来像的播放器,然后你可以克隆播放器并将npc的部分插入其中,或者你可以只插入克隆的播放器进入全国人大常委会。

据我所知,如果不在脚本中执行此操作,则无法执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.