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")
我是否必须说每次重生或他们死后都会有相同的颜色。
答案 0 :(得分:1)
Character类的Player属性本身不是Object。但它是指向通常位于Workspace中的角色模型的指针(模型的名称与玩家名称相同)。
因此,当玩家的角色重生时,Player。Character的每次更改都会重置。
在你的情况下,你首先杀死角色
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)
事件Player。CharacterAdded会在玩家角色重生时被触发,因此此代码可确保玩家角色的躯干始终与玩家团队的颜色相同。
当你想重新生成球员时,只需:
for i,Player in ipairs(Game.Players:GetPlayers()) do
Player:LoadCharacter()
end
请注意,Player:LoadCharacter()会立即重新生成字符(您可以使用Character:BreakJoints(),但Player:LoadCharacter()是更整洁)。
另请注意,在重新制作角色之前,您仍需要更改Player。TeamColor。
希望这有帮助!