如何在Robox中使用字符属性?

问题在于我需要改变用户的外观,但尝试时角色并未更改为新的颜色。角色外观不会加载,但它们的颜色也不会改变。这是一个激光标记游戏,在游戏开始时选择队伍并给他们颜色。我想知道是否有人能向我解释一下。

同时,当我说

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

他们重生后我是否需要重新设置这些,或者他们在死后仍然拥有相同的颜色。

点赞
用户1938640
用户1938640

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

因此,对PlayerCharacter的每个更改都会在玩家的角色重生时重置。

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

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)

每当玩家角色重生时,Player.CharacterAdded事件会被触发,因此该代码确保玩家角色的躯干始终与玩家所在的团队颜色相同。

当您想要重生玩家时,只需执行:

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

请注意,Player:LoadCharacter()会立即重生角色(您也可以使用Character: BreakJoints(),但是Player: LoadCharacter()更加简洁)。

还要记得在重生角色之前更改Player.TeamColor

希望这可以帮助您!

2014-03-18 00:59:26