如何在roblox中使用character属性?

时间:2014-03-15 22:16:05

标签: lua roblox

    for index, each in pairs (game.Players:GetPlayers()) do
    if each.TeamColor == BrickColor.new("White") then

    each.TeamColor = BrickColor.new("Bright red")
        each.Character:BreakJoints()
        redCount = redCount + 1
        -- Wont load character appearance when they start the game
        each.CanLoadCharacterAppearance = false
        each.Character.Torso.BrickColor = BrickColor.new("Bright red")
        each.Character["Right Arm"].BrickColor = BrickColor.new("Bright red")
        each.Character["Left Arm"].BrickColor = BrickColor.new("Bright red")

问题在于我需要更改用户的样子,但是当我尝试它时,角色不会改变为新颜色。角色外观不会加载,但不会改变颜色。这是激光标签游戏,所以这是在游戏开始时选择团队并给他们颜色。我想知道是否有人可以向我解释。

当我说

each.CanLoadCharacterAppearance = false
each.Character.Torso.BrickColor = BrickColor.new("Bright red")
each.Character["Right Arm"].BrickColor = BrickColor.new("Bright red")

我是否必须说每次重生或他们死后都会有相同的颜色。

1 个答案:

答案 0 :(得分:1)

Character类的Player属性本身不是Object。但它是指向通常位于Workspace中的角色模型的指针(模型的名称与玩家名称相同)。

因此,当玩家的角色重生时,PlayerCharacter的每次更改都会重置。

在你的情况下,你首先杀死角色

each.Character:BreakJoints()

然后改变角色躯干的颜色

each.Character.Torso.BrickColor = BrickColor.new("Bright red")

这里需要注意的是,角色在死亡时不会立即重生,因此你对颜色的遗骸(重生后被删除的遗骸)而不是新角色的颜色进行了更改。 / p>


解决此问题的一个好方法是使用:

Game.Players.PlayerAdded:connect(function(Player)
    Player.CharacterAdded:connect(function(Character)
        Character.Torso.BrickColor = Player.TeamColor
    end)
end)

事件PlayerCharacterAdded会在玩家角色重生时被触发,因此此代码可确保玩家角色的躯干始终与玩家团队的颜色相同。

当你想重新生成球员时,只需:

for i,Player in ipairs(Game.Players:GetPlayers()) do
    Player:LoadCharacter()
end

请注意,PlayerLoadCharacter()会立即重新生成字符(您可以使用CharacterBreakJoints(),但PlayerLoadCharacter()是更整洁)。

另请注意,在重新制作角色之前,您仍需要更改PlayerTeamColor

希望这有帮助!