0
    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")

我必须说每次他们重生时还是死后他们的颜色相同。

4

1 回答 1

1

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

因此对Player的每次更改。当玩家的角色重生时,角色将重置。

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

each.Character:BreakJoints()

然后改变角色躯干的颜色

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

这里需要注意的是,角色死后不会立即重生,因此您对颜色的更改是在角色的剩余部分(重生后被移除的部分)而不是新的。


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

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

事件播放器。每次重生玩家角色时都会触发 CharacterAdded,因此此代码确保玩家角色的躯干始终与玩家团队的颜色相同

当您想要重生玩家时,只需执行以下操作:

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

请注意,Player : LoadCharacter()会立即重新生成角色(您可以使用Character : BreakJoints()代替,但Player : LoadCharacter()更整洁)。

另请记住,您仍然需要更改Player。重生角色之前的TeamColor 。

希望这可以帮助!

于 2014-03-18T00:59:26.437 回答