Humanoid
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
O Humanoide é um objeto especial que dá às modelos a funcionalidade de um personagem. Ele concede à modelo a capacidade de cam
R6
- Uma configuração básica de personagem que usa 6 peças para membros.
- A peça Head deve ser anexada a uma peça chamada Torso, ou o Humanoid será imediatamente morto.
- As aparências do BodyPart são aplicadas usando objetos CharacterMesh.
- Propriedades específicas, como Humanoid.LeftLeg e Humanoid.RightLeg, só funcionam com R6.
R15
- Mais complexo que R6, mas também muito mais flexível e robusto.
- Usa 15 peças para membros.
- A peça Head deve ser anexada a uma peça chamada UpperTorso ou o Humanoid será imediatamente morto.
- As aparências do BodyPart devem ser montadas diretamente.
- Pode ser escalonado dinamicamente usando objetos especiais NumberValue dentro do Humanoid.
- O Humanoide criará automaticamente Vector3Value objetos chamados OriginalSize dentro de cada membro.
- Se um NumberValue estiver ligado dentro do Humanoid e for chamado um dos seguindo, ele será usado para controlar a funcionalidade de escalonamento:
- Escala de Profundidade do Corpo
- Escala de Altura do Corpo
- Escala de Composição do Corpo
- Escala de Cabeça
Amostras de código
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
Resumo
Propriedades
Define se o personagem irá automaticamente pular quando eles atingirem um obstáculo como jogador em um dispositivo móvel.
O AutoGirar configura se o Humanóide será girado automaticamente para a direção em que está se movendo.
Quando ativado, o AutomaticScalingEnabled faz com que o tamanho do personagem mude em resposta aos valores nas escalas de filhos do humanóide alterando.
Determina se as articulações do humanoide são quebradas quando no estado Enum.HumanoidStateType.Dead .
Um deslocamento aplicado à posição da câmera quando sua câmera está definida para este Humanoide.
Controla o comportamento de distância do nome e saúde do humanoide.
Define o texto de um Humanoide, exibido acima de sua cabeça.
Descreve o Enum.Material que o Humanoid está em cima. Se o Humanoid não estiver em nenhum lugar, o valor desta propriedade será 1>Ar1>.
Descreve a saúde atual do Humanoid na faixa [0, Humanoid.MaxHealth].
Usado em conjunto com a propriedade DisplayDistanceType para controlar a distância a partir da qual a barra de saúde de um humanóide pode ser vista.
Controla quando a barra de saúde do humanoide é permitida para ser exibida.
Determina a distância do chão a partir da qual o Humanoid.RootPart deve ser.
Se true, os saltos de Humanoid com uma força para cima.
Fornece controle sobre a altura que o Humanoid salta.
Determina a força de subida aplicada ao Humanoid ao pular.
O valor máximo de um humanoide's Health .
O ângulo máximo de inclinação que um humanoide pode caminhar sem cair.
Descreve a direção que o Humanoid está caminhando.
Usado em conjunto com a propriedade Humanoid.DisplayDistanceType para controlar a distância a partir da qual o nome de um humanóide pode ser visto.
Controla se a barra de nome e saúde de um humanoide pode ser visto atrás de paredes ou outros objetos.
Determina se o Humanoid está atualmente no estado Enum.HumanoidStateType.PlatformStanding.
Permite que os desenvolvedores desativem o comportamento onde um jogador Character|character morre se o Neck Motor6D for removido ou desconectado mesmo por um momento.
Descreve se este Humanoid está usando o legado R6 character rig / plataforma / equipamento, ou o novo R15 character rig / plataforma / equipamento.
Uma referência ao Objeto HumanoidRootPart do humanóide.
Uma referência ao assento que um Humanoid está sentado atualmente, se houver.
Descreve se o Humanoid está sentado atualmente.
Descreve a posição 3D onde o Player controlando o Humanoid último clicado no mundo usando um Tool.
Determina se o JumpHeight (falso) ou Humanoid.JumpPower (verdadeiro) propriedade é usada.
Descreve a velocidade máxima de movimento do humanoide em studs por segundo.
Uma referência a uma peça cuja posição está tentando ser alcançada por um humanóide.
A posição que um humanoide está tentando alcançar, após uma chamada para Humanoid:MoveTo() é feita.
Métodos
Ata o Accessory especificado ao pai do hipertexto.
Reúne uma árvore de Motor6D juntos ao agregar juntos Attachment objetos em um personagem humano.
Define o Humanoid para entrar no dado Enum.HumanoidStateType .
Retorna um conjunto de Accessory objetos que o pai do humanoide está usando.
Retorna uma cópia do cache do humanóide HumanoidDescription que descreve sua aparência atual.
Passe uma parte do corpo para esta função (a parte do corpo deve ser uma irmã de Humanoid e uma filha de um Modelo) para obter o Class.Part En册.BodyPartR15 .
Retorna o Enum.Limb 枚 que é associado ao conjunto dado Part.
Retorna o atual estado do Enum.HumanoidStateType do humano.
Retorna se um Enum.HumanoidStateType está ativado para o Humanoid.
Causa o Humanoid a caminhar na direção dada.
Causa o Humanoid para tentar caminhar para o local dado, definindo as propriedades Humanoid.WalkToPoint e Humanoid.WalkToPart.
Remove all Accessory objects wear by the humanoid's pai.
Substitui dinamicamente uma parte do corpo humanoide com uma parte diferente.
Define se um determinado Enum.HumanoidStateType é habilitado para o Humanoid.
Diminui o Humanoid.Health do Humanoid pelo valor dado quanto se não for protegido por um 1> Class.ForceField1> .
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
Faz com que o visual do personagem seja correspondente ao que passou em HumanoidDescription .
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
Faz com que o visual do personagem corresponda ao daqueles que passaram em HumanoidDescription, mesmo depois de alterações externas.
Joga emotes e retorna se for executado com sucesso.
Eventos
Dispara quando a velocidade em que um Humanoid está escalando muda.
Dispara quando o Humanoid morre.
Fires quando o Humanoid entra ou sai do FallingDown``Enum.HumanoidStateType.
Fires quando o Humanoid entra ou sai do Freefall``Enum.HumanoidStateType.
Fires quando o Humanoid entra ou sai do GettingUp``Enum.HumanoidStateType.
Fires quando o Humanoid.Health muda (ou quando o Humanoid.MaxHealth for configurar).
Fires quando o Humanoid entra e sai do Jumping``Enum.HumanoidStateType.
Dispara quando o Humanoid terminar de caminhar para uma meta declarada por Humanoid:MoveTo() .
Ocorre quando o Humanoid entra ou sai do PlatformStanding``Enum.HumanoidStateType.
Fires quando o Humanoid entra ou sai do Ragdoll``Enum.HumanoidStateType.
Dispara quando a velocidade em que um Humanoid está executando mudanças.
Iniciado quando um Class.Humanoid ou Seat ou VehicleSeat ou 2>Class.VehicleSeat2> está em um 5>Class.Seat5> ou 8>Class.VehicleSeat8> ou 1>Class.Humanoid1> ou 4>Class.Humanoid4> ou 7>Class.Humanoid7> ou Humanoid9> ou 1>Class.Humanoid1> ou Humanoid4> ou
Fires quando o estado do Humanoid é alterado.
Fires quando Humanoid:SetStateEnabled() é chamado no Humanoid .
Ativado quando o Humanoid entra ou sai do StrafingNoPhysics``Enum.HumanoidStateType.
Dispara quando a velocidade em que um Humanoid nada na água Terrain muda.
Ocorre quando um dos limbes do humanóide entrar em contato com outro BasePart.
Propriedades
AutoJumpEnabled
O AutoJumpEnabled configura se o Humanoid vai tentar ou não pular automaticamente sobre um obstáculo que está se movendo em direção a ele.
Atualmente, esta propriedade só funciona quando as seguintes condições estão verdadeiras:
- O modelo de personagem do Humanoid é o Player.Character de um Player .
- O jogador em questão está usando controles de toque.
Quando um personagem de um jogador é gerado, o valor da propriedade corresponde à propriedade do jogador Player.AutoJumpEnabled - que, por sua vez, corresponde à propriedade StarterPlayer.AutoJumpEnabled.
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()
AutoRotate
A propriedade AutoRotate descreve se o Humanoid girará automaticamente para a direção em que eles estão se movendo. Quando definido como verdadeiro, o modelo de personagem gradualmente se tornará para a direção de movimento do Humanoid enquanto o Humanoid estiver girando. Quando definido como falso, o modelo de personagem permanecerá fixado em sua rotação atual, a menos que uma força girando seja aplicada à parte raiz do humanóide.
Se o modelo de personagem ocorrer ser o personagem de um jogador, então o comportamento da rotação do Humanoid é influenciado pela propriedade RotateType do UserGameSettings.
Quando a propriedade AutoRotate está definida como verdadeira, a propriedade RotateType tem os seguintes efeitos na rotação do Humanoide:
<tbody><tr><td>MovimentoRelativo</td><td /><td /></tr><tr><td>Relativo à Câmera</td><td>O personagem girará para a frente na direção da Câmera.</td><td>O jogador tem a câmera zoomed para a primeira pessoa ou está no modo de bloqueio de mudança.</td></tr></tbody>
Tipo de Rotação | Comportamento | Conteúdo |
---|
Amostras de código
local button = script.Parent
local enabled = true
local ON_COLOR = BrickColor.Green()
local OFF_COLOR = BrickColor.Red()
local function touchButton(humanoid)
if enabled then
enabled = false
button.BrickColor = OFF_COLOR
if humanoid.AutoRotate then
print(humanoid:GetFullName() .. " can no longer auto-rotate!")
humanoid.AutoRotate = false
else
print(humanoid:GetFullName() .. " can now auto-rotate!")
humanoid.AutoRotate = true
end
task.wait(1)
button.BrickColor = ON_COLOR
enabled = true
end
end
local function onTouched(hit)
local char = hit:FindFirstAncestorWhichIsA("Model")
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
touchButton(humanoid)
end
end
end
button.Touched:Connect(onTouched)
button.BrickColor = ON_COLOR
AutomaticScalingEnabled
O Humanoide tem seis valores de escala de filho, incluindo BodyDepthScale, BodyHeightScale, BodyProportionScale, 2> BodyTypeScale2>, 5> HeadScale5>. Alterar o valor de qualquer uma dessas causas faz com que as partes
BreakJointsOnDeath
Determina se as juntas do humanóide são quebradas quando no estado Enum.HumanoidStateType.Dead . Padrões para verdadeiro.
CameraOffset
A propriedade CameraOffset especifica um deslocamento para a posição de sujeito da Câmeraquando sua Camera.CameraSubject está definida para esta Humanoid.
O deslocamento é aplicado no espaço de objeto, relativo à orientação do Humanoid'sVector3. Por exemplo, um deslocamento de Datatype.Vector3 de 1> (0, 10, 0)1> desloca a câmera do jogador para 10 studs acima do jogador's humanoid.
Amostras de código
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
DisplayDistanceType
A propriedade DisplayDistanceType controla o comportamento de distância do nome e saúde do humanóide. Essa propriedade é definida usando o conjunto de propriedades Enum.HumanoidDisplayDistanceType com três valores disponíveis, cada um com seu próprio conjunto de regras:
- Quando definido para Viewer, o humanóide vê o nome/saúde de outros humanóides dentro do alcance de seu próprio NameDisplayDistance e HealthDisplayDistance.
- Quando definido para Subject, o humanóide leva controle completo sobre seu próprio nome e exibição de saúde através de seus valores NameDisplayDistance e 1> HealthDisplayDistance1>.
- Quando definido para None, o nome e a barra de saúde do humanóide não aparecem sob nenhuma circunstância.
Veja Nome do Personagem/Exibição de Saúde para uma guia abrangente sobre a aparência dos nomes de personagens e saídas de saúde.
Amostras de código
local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
DisplayName
DisplayName é uma propriedade que determina a exibição de nome de um Humanoid quando visível. Por padrão, um novo Humanoid terá o valor de uma string / cadeia / textovazia. Se DisplayName for uma string / cadeia / textovazia, o nome do humanoid será padrão para a propriedade de nome de seu pai.
Carregando Personagem do Jogador
Quando os jogadores carregam seu personagem, seja automaticamente ou através do uso de LoadCharacter(), o Humanoide que é criado pelo motor terá sua propriedade DisplayName definida para a propriedade DisplayName do jogador.
Personagem Iniciante e StarterHumanoid
Quando um Humanoid chamado StarterHumanoid está ligado ao StarterPlayer, ou
EvaluateStateMachine
FloorMaterial
Esta é uma propriedade de leitura que descreve o Enum.Material que o Humanoid está em cima. Funciona com ambos os tipos regulares de Parts e 1> Class.Terrain1> voxels.
O código abaixo mostra como ouvir quando esta propriedade muda usando Object:GetPropertyChangedSignal() . Quando o material que está em cima da cabeça muda, ele imprime uma mensagem indicando que o novo material está em cima da cabeça.
local Humanoid = route.to.humanoid
Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
print("New value for FloorMaterial: " .. tostring(Humanoid.FloorMaterial))
end)
Cavernas
- Quando o Humanoid não estiver em um andar, o valor desta propriedade será definido como Ar.
- Isso ocorre porque propriedades de Lista não podem ter um valor vazio.
- Isso pode causar alguma confusão se uma peça tiver seu material definido como Ar, embora na prática, peças não devem usar esse material em primeiro local.
- O modelo de personagem do Humanoid deve ser capaz de colidir com o chão, ou não será detectado.
- Você não pode testar se o Humanoid está nadando com esta propriedade. Você deve usar em vez disso sua função Humanoid:GetState().
Health
Essa propriedade representa a saúde atual do Humanoid. O valor é restrito à faixa entre 0 e MaxHealth. Se o humanóide estiver morto, essa propriedade é definida continuamente para 0.
Nota que a função TakeDamage() pode ser usada para subtrair do Health em vez de definir a propriedade diretamente.
Regeneração da Saúde
Por padrão, um script de regeneração de saúde passivo é inserido automaticamente em humanóides. Isso causa não mortos personagens de jogador para regenerar 1% de MaxHealth a cada segundo. Para desativar este comportamento de regeneração, adicione um script de saúde vazio chamado Script ao Personagem de iniciante .
Exibição de Barra de Saúde
Quando Health é menor que MaxHealth, uma barra de saúde é exibida na experiência. O comportamento de exibição da barra de saúde depende do Class.Humanoid.HealthDisplayDistance|HealthDis
Veja Nome do Personagem/Exibição de Saúde para uma guia abrangente sobre a aparência dos nomes de personagens e saídas de saúde.
Morte
Quando o valor da saúde do personagem atinge 0, o Humanoid transfere automaticamente para o estado Enum.HumanoidStateType.Dead. Neste estado, Health está bloqueado para 0; no entanto, não há erro ou aviso para definir o 2>Class.Humanoid
HealthDisplayDistance
Essa propriedade é um número usado em conjunto com a propriedade DisplayDistanceType para controlar a distância a partir da qual a barra de saúde de um humanóide pode ser vista.
Veja Nome do Personagem/Exibição de Saúde para uma guia abrangente sobre a aparência dos nomes de personagens e saídas de saúde.
HealthDisplayType
Esta propriedade controla quando a barra de saúde de um humanóide é permitida para ser exibida. Por padrão, esta propriedade é definida como Class.Humanoid.Health|
Nota que esta propriedade funciona independentemente do espaço de propriedade HealthDisplayDistance que é responsável por fazer a barra de saúde desaparecer em certas distâncias. Se Humanoid.HealthDisplayType|HealthDisplayType for definido como En
Veja Nome do Personagem/Exibição de Saúde para uma guia abrangente sobre a aparência dos nomes de personagens e saídas de saúde.
HipHeight
Determina a distância (em studs) do chão que o RootPart deve estar quando o humanóide está em pé. O RigType afeta a maneira como essa propriedade se comporta.
Para R15 modelos, uma altura de pé adequada é predefinida para garantir a altura do RootPart está correto. A altura das pernas não é usada. A altura geral do humanóide pode ser descrito na seguinte fórmula:
Height = (0.5 * RootPart.Size.Y) + HipHeight
Para R6 modelos, HipHeight em vez de descrever um deslocamento relativo. A altura geral do humanóide pode ser descrito na seguinte fórmula:
Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
Jump
Se true , os saltos de Humanoid com uma força de Humanoid.JumpPower ou a altura de 1> Class.Humanoid.JumpHeight1>, dependendo do valor de 4> Class.Humanoid.UseJumpPower4>, são ajustados para o valor atual de 7>Class.Humanoid.
JumpHeight
Fornece controle sobre os saltos de altura de um Humanoid pulo, em studs. O valor inicial desta propriedade é determinado pelo valor de StarterPlayer.CharacterJumpHeight que padrão é 7.2.
Embora definir essa propriedade para 0 impedirá efetivamente o salto do humanoide, recomenda-se desativar o salto desativando o estado Enum.HumanoidStateType.Jumping através de Humanoid:SetStateEnabled() .
Essa propriedade só é visível na <a href="https://www.clarinet.com/pt/propriedades/">janela Propriedades</a>, se <a href="https://www.clarinet.com/pt/propriedades/">Class.Humanoid.UseJumpPower\ estiver definido como <a href="https://www.clarinet.com/pt/propriedades/">falso\, pois não seria relevante de outra forma (em vez disso, <a href="https://www.clarinet.com/pt/propriedades/
JumpPower
Determina a força de subida aplicada ao Humanoid quando você salta. O valor inicial desta propriedade é determinado pelo valor de StarterPlayer.CharacterJumpPower que é padrão 50 e está limitado entre 0 e 1000. Observe que os saltos também são afetados pela propriedade Class.Workspace.Gravity
Embora definir essa propriedade para 0 impedirá efetivamente o salto do humanoide, recomenda-se desativar o salto desativando o estado Enum.HumanoidStateType.Jumping através de Humanoid:SetStateEnabled() .
Essa propriedade só é visível na <a href="https://www.clarinet.com/pt/propriedades/">janela Propriedades</a>, se <a href="https://www.clarinet.com/pt/propriedades/">Class.Humanoid.UseJumpPower\ estiver definido como <a href="https://www.clarinet.com/pt/propriedades/">verdade\, pois de outra forma (em vez disso, <a href="https://www.clarinet.com/pt/propriedades/">Class.
MaxHealth
O valor máximo de um humanoide's Health .
O valor desta propriedade é usado ao lado da propriedade Health para dimensionar o display de barra de saúde padrão. Quando uma propriedade Health atinge MaxHealth, sua barra de saúde pode não ser exibida, dependendo de sua propriedade
MaxSlopeAngle
Essa propriedade determina o ângulo máximo que um humanoide pode escalada. Se o ângulo de um declive for maior que o MaxSlopeAngle de um humanoide, eles deslizarão para baixo do declive.
Quando um personagem é gerado, esta propriedade é definida de acordo com o valor de StarterPlayer.CharacterMaxSlopeAngle.
O valor desta propriedade é restrito a valores entre 0° e 89°. Ele padrão para 89°, para que os humanóides possam escalar quase qualquer declive que eles desejam por padrão.
Amostras de código
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
MoveDirection é uma propriedade de leitura que descreve a direção em que um Humanoid está caminhando, como um vetor de unidade ou um vetor de comprimento zero. A direção é descrita no espaço do mundo.
Como essa propriedade é de leitura apenas, ela não pode ser definida por um Script ou LocalScript.
Amostras de código
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
NameDisplayDistance
A propriedade NomeDisplayDistance é um número usado em conjunto com a propriedade Humanoid.DisplayDistanceType para controlar a distância a partir da qual o nome de um humanóide pode ser visto.
Veja Nome do Personagem/Exibição de Saúde para uma guia abrangente sobre a aparência dos nomes de personagens e saídas de saúde.
NameOcclusion
Controla se a barra de nome e saúde de um humanoide pode ser visto atrás de paredes ou outros objetos. Esta propriedade é um valor Enum.NameOcclusion e pode ser configurado para ocultar todos os nomes, nomes de inimigos ou desativar a ocultação completamente.
Em casos em que o LocalPlayer não tem Class.Humanoid associado, esta propriedade se aplica ao assunto Humanoid.
Veja Nome do Personagem/Exibição de Saúde para uma guia abrangente sobre a aparência dos nomes de personagens e saídas de saúde.
Amostras de código
local Players = game:GetService("Players")
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.NamOcclusion = Enum.NameOcclusion.OccludeAll
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
PlatformStand
Determina se o Humanoid está atualmente no estado Enum.HumanoidStateType.PlatformStanding. Quando verdadeiro, o Humanoid está em um estado onde ele está caindo livre e não pode se movimento. Este estado se comporta semelhante ao de sentar, exceto que o salto não livra o humanoid do estado.
RequiresNeck
Permite que os desenvolvedores desativem o comportamento onde um jogador Character|character morre se o Neck Motor6D for removido ou desconectado mesmo por um momento. Essa propriedade padrão é definida como verdadeiro.
RigType
RigType descreve se um Humanoid está usando o modelo de personagem R6 herdado ou o mais recente rig / plataforma / equipamentode personagem R15.
O R6 usa 6 Parts visíveis enquanto o R15 usa 15 Parts visíveis. Os R15 têm mais juntas do que R6, tornando-os muito mais versáteis ao serem animados.
Nota que se esta propriedade for definida incorretamente, o Humanoid não funcionará corretamente. Por exemplo, se o RigType de um humanóide R15 estiver definido como R6, o Humanoid morrerá, pois não
RootPart
Uma referência ao Objeto HumanoidRootPart do humanóide, a parte de raiz que controla o movimento do humanóide através do mundo 3D. Essa parte normalmente não é visível.
Nota que, no caso de personagens de jogador, RootPart é o mesmo que o Model.PrimaryPart do modelo Player.Character.
SeatPart
SeatPart é uma referência ao assento que um Humanoid está sentado no momento, se houver. O valor desta propriedade pode ser qualquer Seat ou VehicleSeat. It will be 1> nil1> if o Humanoid não estiver sentado em um assento.
Nota:
- Para um bool descrito se o Humanoid está sentado ou não, veja Humanoid.Sit
Sit
A propriedade Sit é umBooleano que indica se o Humanoid está sentado atualmente. Humanoids pode ser forçado a um estado de sentado definindo o valor desta propriedade para true. Se o Humanoid não for anexado a um assento enquanto est
Nota:
- O Seat ou VehicleSeat sentado em que Humanoid está sentado pode ser obtido usando a propriedade 2>Class.Humanoid.SeatPart2>
- É possível detectar quando um Humanoid senta conectando-se ao evento Humanoid.Seated.
TargetPoint
Não use Essa propriedade só funciona com o Modo Experimental ativado, que foi descontinuado totalmente.
Esta propriedade descreve uma posição 3D no espaço onde o Player controlando este Humanoid último clicou com um Tool equipado.
Essa propriedade é usada principalmente por ferramentas clássicas para determinar o que um humanoide está alvo quando eles ativam uma ferramenta. Se você der um lançador de foguetes clássico a um NPC, definir seu ponto de alvo e, em seguida, chamar a função Tool:Activate() da ferramenta, você pode fazer o NPC ativar um foguete no ponto de alvo.
UseJumpPower
Quando um personagem é gerado, esta propriedade é definida de acordo com o valor de StarterPlayer.CharacterUseJumpPower que padrão é verdadeiro.
Ao pular, com este set para verdadeiro, o valor Humanoid.JumpHeight é usado para garantir que os saltos humanóidem para essa altura. Com este set para falso, o valor Humanoid.JumpPower é usado para aplicar uma força para cima.
WalkSpeed
Essa propriedade descreve o quão rápido o Humanoid é capaz de andar, em studs por segundo. Ele padrão para o valor de StarterPlayer.CharacterWalkSpeed (16), o que significa que um personagem de jogador pode mover 16 studs em qualquer direção a cada segundo.
Notas
- Quando controlado em um dispositivo móvel ou em um controle / controle de jogo, um humanóide pode caminhar mais lentamente que seu WalkSpeed se o thumbstick de controle for movido apenas um grau gradual a partir do centro.
- Você pode congelar um humanoide em seu lugar ao definir WalkSpeed para 0; isso impede que o jogador controlador mova-o através dos mecanismos de movimento padrão.
- O script de animação padrão escala as animações de movimento de um humano com base em quão rápido ele está se movendo em relação à velocidade padrão de 16 studs/ segundo.
WalkToPart
WalkToPart é uma referência a uma parte que o Humanoid está tentando alcançar. Essa propriedade é normalmente definida quando uma parte é passada como o segundo argumento da função Humanoid:MoveTo() do Humanoid.
Quando WalkToPart é definido e um humanoide está tentando ativamente alcançar a peça, ele continuará atualizando seu objetivo Vector3 para ser a posição da peça, plus o Humanoid.WalkToPoint traduzido no espaço de objeto relativo à rotação da peça.
Isso pode ser descrito em Lua como:
goal = humanoid.WalkToPart.CFrame:pointToObjectSpace(humanoid.WalkToPoint)
Cavernas
- Configurar o valor de WalkToPart não é suficiente para fazer um início humanoide após uma peça.
- O Humanoide é solicitado a começar a tentar alcançar um objetivo quando o valor de WalkToPoint for alterado.
- Isso pode ser alterado no futuro.
- O estado de alcance o objetivo de um humanóide expira após 8 segundos se não atingir seu objetivo.
- Isso é feito para que os NPCs não fiquem presos esperando por Humanoid.MoveToFinished para Iniciar / executar.
- Se você não quiser que isso aconteça, você deve repetidamente chamar MoveTo para que o tempo limite seja redefinido.
WalkToPoint
WalkToPoint descreve a posição 3D no espaço que um humanoide está tentando alcançar, depois de ter sido solicitado a fazer isso pela função Humanoid:MoveTo() do humanoide.
Se o Humanoid.WalkToPart de um humanóide estiver configurar, o objetivo é definido transformando WalkToPoint relativo à posição e rotação das peças. Se WalkToPart não for configurar, então o humanóide tentará alcançar a posição 3D especificada por WalkToPoint diretamente.
Cavernas
- O valor de WalkToPoint deve ser alterado para um valor diferente para que o humanoide comece a caminhar até ele.
- Se você quiser fazer um caminhada humanoide para 0,0,0 , você deve usar a função MoveTo do Humanoid.
- Isso pode ser alterado no futuro.
- O estado de alcance o objetivo de um humanóide expira após 8 segundos se não atingir seu objetivo.
- Isso é feito para que os NPCs não fiquem presos esperando por Humanoid.MoveToFinished para Iniciar / executar.
- Se você não quiser que isso aconteça, você deve repetidamente chamar MoveTo para que o tempo limite seja redefinido.
Amostras de código
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
Métodos
AddAccessory
Este método ataca o Accessory especificado ao pai do hiperoid.
Quando este método é chamado, um Accessory é anexado ao personagem ao procurar um
Se o requerido Attachment não puder ser encontrado, então o Accessory permanecerá ligado ao pai do hidrôide, mas não será desprendido.
Normalmente, soldaduras de acessórios são criadas no servidor, mas elas podem ser criadas no cliente sob certas condições. Nessas situações, chamadas do lado do cliente para AddAccessory() podem não sempre produzir o comportamento desejado e você pode usar Class.Humanoid:BuildRigFromAttachments()|BuildRigFromAttachments
Parâmetros
Devolução
Amostras de código
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local clockworksShades = Instance.new("Accessory")
clockworksShades.Name = "ClockworksShades"
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1.6, 1)
handle.Parent = clockworksShades
local faceFrontAttachment = Instance.new("Attachment")
faceFrontAttachment.Name = "FaceFrontAttachment"
faceFrontAttachment.Position = Vector3.new(0, -0.24, -0.45)
faceFrontAttachment.Parent = handle
local mesh = Instance.new("SpecialMesh")
mesh.Name = "Mesh"
mesh.Scale = Vector3.new(1, 1.3, 1)
mesh.MeshId = "rbxassetid://1577360"
mesh.TextureId = "rbxassetid://1577349"
mesh.Parent = handle
humanoid:AddAccessory(clockworksShades)
BuildRigFromAttachments
Este método monta uma árvore de Motor6D juntas para o Humanoid . Motor6D juntas são necessárias para o playback de 1> Class.Animation|Animações1> .
Começando a partir do RootPart do humanoide, este método coleta todos os Attachments pais na parte atual cujo nome termina com R
Humanoid:BuildRigFromAttachments() também escala o personagem e configura as cores do corpo.
Devolução
Amostras de código
local function createJoint(jointName, att0, att1)
local part0, part1 = att0.Parent, att1.Parent
local newMotor = part1:FindFirstChild(jointName)
if not (newMotor and newMotor:IsA("Motor6D")) then
newMotor = Instance.new("Motor6D")
end
newMotor.Name = jointName
newMotor.Part0 = part0
newMotor.Part1 = part1
newMotor.C0 = att0.CFrame
newMotor.C1 = att1.CFrame
newMotor.Parent = part1
end
local function buildJointsFromAttachments(part, characterParts)
if not part then
return
end
-- first, loop thru all of the part's children to find attachments
for _, attachment in pairs(part:GetChildren()) do
if attachment:IsA("Attachment") then
-- only do joint build from "RigAttachments"
local attachmentName = attachment.Name
local findPos = attachmentName:find("RigAttachment")
if findPos then
-- also don't make double joints (there is the same named
-- rigattachment under two parts)
local jointName = attachmentName:sub(1, findPos - 1)
if not part:FindFirstChild(jointName) then
-- try to find other part with same rig attachment name
for _, characterPart in pairs(characterParts) do
if part ~= characterPart then
local matchingAttachment = characterPart:FindFirstChild(attachmentName)
if matchingAttachment and matchingAttachment:IsA("Attachment") then
createJoint(jointName, attachment, matchingAttachment)
buildJointsFromAttachments(characterPart, characterParts)
break
end
end
end
end
end
end
end
end
local function buildRigFromAttachments(humanoid)
local rootPart = humanoid.RootPart
assert(rootPart, "Humanoid has no HumanoidRootPart.")
local characterParts = {}
for _, descendant in ipairs(humanoid.Parent:GetDescendants()) do
if descendant:IsA("BasePart") then
table.insert(characterParts, descendant)
end
end
buildJointsFromAttachments(rootPart, characterParts)
end
local humanoid = script.Parent:WaitForChild("Humanoid")
buildRigFromAttachments(humanoid)
local AssetService = game:GetService("AssetService")
local InsertService = game:GetService("InsertService")
local MarketplaceService = game:GetService("MarketplaceService")
local PACKAGE_ASSET_ID = 193700907 -- Circuit Breaker
local function addAttachment(part, name, position, orientation)
local attachment = Instance.new("Attachment")
attachment.Name = name
attachment.Parent = part
if position then
attachment.Position = position
end
if orientation then
attachment.Orientation = orientation
end
return attachment
end
local function createBaseCharacter()
local character = Instance.new("Model")
local humanoid = Instance.new("Humanoid")
humanoid.Parent = character
local rootPart = Instance.new("Part")
rootPart.Name = "HumanoidRootPart"
rootPart.Size = Vector3.new(2, 2, 1)
rootPart.Transparency = 1
rootPart.Parent = character
addAttachment(rootPart, "RootRigAttachment")
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(2, 1, 1)
head.Parent = character
local headMesh = Instance.new("SpecialMesh")
headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
headMesh.MeshType = Enum.MeshType.Head
headMesh.Parent = head
local face = Instance.new("Decal")
face.Name = "face"
face.Texture = "rbxasset://textures/face.png"
face.Parent = head
addAttachment(head, "FaceCenterAttachment")
addAttachment(head, "FaceFrontAttachment", Vector3.new(0, 0, -0.6))
addAttachment(head, "HairAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "HatAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "NeckRigAttachment", Vector3.new(0, -0.5, 0))
return character, humanoid
end
local function createR15Package(packageAssetId)
local packageAssetInfo = MarketplaceService:GetProductInfo(packageAssetId)
local character, humanoid = createBaseCharacter()
character.Name = packageAssetInfo.Name
local assetIds = AssetService:GetAssetIdsForPackage(packageAssetId)
for _, assetId in pairs(assetIds) do
local limb = InsertService:LoadAsset(assetId)
local r15 = limb:FindFirstChild("R15")
if r15 then
for _, part in pairs(r15:GetChildren()) do
part.Parent = character
end
else
for _, child in pairs(limb:GetChildren()) do
child.Parent = character
end
end
end
humanoid:BuildRigFromAttachments()
return character
end
local r15Package = createR15Package(PACKAGE_ASSET_ID)
r15Package.Parent = workspace
ChangeState
Essa função causa o Humanoid entrar no dado Enum.HumanoidStateType, descrevendo a atividade que o Humanoid está fazendo.
Por favor, revise a página Enum.HumanoidStateType para mais informações sobre os estados, como alguns têm nomes não intuitivos. Por exemplo, Enum.HumanoidStateType.Running descreve um estado onde as pernas do humanóide estão no chão, incluindo quando estacionário.
Devido ao comportamento padrão do Humanoid, alguns estados serão alterados automaticamente quando configurar. Por exemplo:
- Configurar o estado para Enum.HumanoidStateType.Swimming quando o humanóide não estiver na água fará com que ele seja definido automaticamente para Enum.HumanoidStateType.GettingUp .
- Como não está sendo usado, definir o estado para Enum.HumanoidStateType.PlatformStanding fará com que o estado humanoide seja definido automaticamente para Enum.HumanoidStateType.Running.
Veja também Humanoid:SetStateEnabled() para ativar ou desativar um estado específico, e Humanoid:GetState() para obter o estado atual do humanóide.
Parâmetros
O Enum.HumanoidStateType que o Humanoid está para ser executado.
Devolução
Amostras de código
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
EquipTool
Essa função faz com que o Humanoid equipe o Tool dado.
O exemplo abaixo causaria um Player para equipar uma ferramenta em Workspace chamada 'Tool'.
local Players = game:GetService("Players")local player = Players:FindFirstChildOfClass("Player")if player and player.Character thenlocal humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal tool = workspace:FindFirstChild("Tool")if tool thenhumanoid:EquipTool(tool)endendend
Quando essa função for chamada, o humanóide automaticamente desequipar qualquer Tools que já estiver equipado
Embora eles sejam equipados, Tools para os quais Tool.RequiresHandle é, true não funcionará se eles não tiverem Manipulador / alça, independentemente de usar ou não esta função para equipá-los
Veja também:
- Para desequipar ferramentas, use Humanoid:UnequipTools()
Parâmetros
Devolução
GetAccessories
Essa função retorna um array de Accessory objetos que o pai do humanoide está usando atualmente. Todos esses objetos Accessory serão incluídos, independentemente de serem anexados ou não.
Se o Humanoid não tiver objetos Accessory, um array vazio será retornado.
Veja também Humanoid:AddAccessory() para adicionar um Accessory ao pai de um humanóide.
Devolução
Amostras de código
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
GetAppliedDescription
Essa função retorna uma cópia do cache do humanóide HumanoidDescription que descreve seu visual atual. Isso pode ser usado para determinar rapidamente o visual de um personagem e atribuir seu visual a outros personagens usando a função Humanoid:ApplyDescription().
Veja também
- Players:GetHumanoidDescriptionFromUserId() que retorna um HumanoidDescription descrevendo o avatar para o usuário passado.
- Players:GetHumanoidDescriptionFromOutfitId() que retorna um HumanoidDescription cujos parâmetros são inicializados para corresponder ao que está no recurso de moda do lado do servidor.
- Player:LoadCharacterWithHumanoidDescription() que gera um jogador com a aparência daquele que passou em HumanoidDescription.
Devolução
GetBodyPartR15
Essa função retorna o que Enum.BodyPartR15 ou Part é, ou Enum.BodyPartR15.Unknown se a parte não for uma parte do corpo R15. Essa função permite que os desenvolvedores recuperem partes do corpo do jogador independentemente do que sejam os nomes reais das peças do corpo, em vez de retornar um enum.
Pode ser usado em conjunto com Humanoid:ReplaceBodyPartR15() . Por exemplo, se uma parte do corpo de um jogador tocar algo, esta função retornará get a part instância. Os desenvolvedores podem então olhar para qual parte do corpo que estava, como cabeça ou braço. Depois, dependendo de qual parte foi, os desenvolvedores podem executar alguma ação de jogo ou substituir essa parte com alguma outra parte - tal
Essa função pode ser útil para jogos onde a localização do hit é importante. Por exemplo, pode ser usado para determinar se um jogador foi hit na perna e depois desacelerá-lo com base na lesão.
Parâmetros
A peça especificada está sendo verificada para ver se é uma peça de corpo R15.
Devolução
O tipo de peça R15 especificado ou desconhecido se a peça não for uma peça do corpo.
GetLimb
Essa função retorna o Enum.Limb 枚úmero que é associado com o Part dado. Funciona para ambos os modelos R15 e R6, por exemplo:
-- Para R15print(humanoid:GetLimb(character.LeftUpperLeg)) -- Entrada.Limb.LeftLegprint(humanoid:GetLimb(character.LeftLowerLeg)) -- Entrada.Limb.LeftLegprint(humanoid:GetLimb(character.LeftFoot)) -- Entrada.Limb.LeftLeg-- Para R6print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg
Nota que Humanoid:GetLimb() vai throw um erro se a parte's parent não for definido para o pai do humanoid.
Parâmetros
Devolução
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end
GetState
Essa função retorna o atual Enum.HumanoidStateType do humanóide, descrevendo a atividade que o Humanoid está fazendo, como pular ou nadar.
Veja também Humanoid:SetStateEnabled() para ativar ou desativar um estado específico, e Humanoid:ChangeState() para alterar o estado atual do humanóide.
Devolução
O atual Enum.HumanoidStateType do Humanoid.
Amostras de código
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
GetStateEnabled
A função GetStateEnabled retorna se um Enum.HumanoidStateType está ativado para o Humanoid.
O estado humanoide descreve a atividade que o humanoide está executando atualmente.
Quando um determinado Enum.HumanoidStateType é desativado, o humanóide nunca pode entrar nesse estado. Isso é verdade, independentemente de tentar alterar o estado usando Humanoid:ChangeState() ou código humano interno do Roblox.
Veja também:
- Para um evento que ocorre quando um estado de humanóide é ativado ou desativado, veja Humanoid.StateEnabledChanged
- Para ativar ou desativar um estado Humanoid use Humanoid:SetStateEnabled()
Parâmetros
O dado Enum.HumanoidStateType .
Devolução
Se o Enum.HumanoidStateType dado é habilitado.
Amostras de código
local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false
Move
Essa função faz com que o Humanoid ande na direção dada Vector3.
Por padrão, a direção é em termos de mundo, mas se o parâmetro relativeToCamera for true, a direção será relativa à direção do CFrame da 2>Class.Workspace.CurrentCamera|CurrentCamera2>.
humanoid:Move(Vector3.new(0, 0, -1), true)
Quando essa função é chamada, o Humanoid irá se mover até que a função seja chamada novamente. No entanto, se os scripts de controle padrão estiverem sendo usados, essa função será sobrescrita quando chamada no jogador Characters. Isso pode ser evitado ao não usar os scripts de controle padrão ou ao chamar ess
Essa função pode ser chamada no servidor, mas isso só deve ser feito quando o servidor tiver propriedade de rede da montagem do humanóide.
Veja também Humanoid:MoveTo() , que faz um Humanoid caminhar até um ponto, e Player:Move() , que chama essa função de forma efetiva.
Parâmetros
A direção para caminhar.
Definido para true se o parâmetro moveDirection deve ser considerado relativo à CurrentCamera.
Devolução
Amostras de código
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
RunService:BindToRenderStep("move", Enum.RenderPriority.Character.Value + 1, function()
if player.Character then
local humanoid = player.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid:Move(Vector3.new(0, 0, -1), true)
end
end
end)
MoveTo
Essa função causa o Humanoid para tentar caminhar para o local dado, definindo as propriedades Humanoid.WalkToPoint e Humanoid.WalkToPart.
Os parâmetros Class.Humanoid.WalkToPoint e Class.Humanoid.WalkToPart correspondem aos que serão definidos Humanoid.WalkToPoint e 2>Class.Humanoid.WalkToPart2>.
Se o parâmetro parte for especificado, o Humanoid ainda tentará caminhar até o ponto. No entanto, se o parte se mover, o ponto Humanoid que está caminhando para ser na mesma posição 2>relativa à parte2>
O estado de chegar ao objetivo de um humanóide será expirado após 8 segundos se ele não alcançar seu objetivo. Isso é feito para que os NPCs não fiquem presos esperando por Humanoid.MoveToFinished para Iniciar / executar. Se você não quiser que isso aconteça, você deve repetidamente chamar MoveTo para que o tempo limite seja redefinido.
MoveTo() termina se uma das seguintes condições se aplicar:
O personagem chega ao seu destino.
O personagem fica preso e o timer de oito segundos expira.
O valor de Humanoid.WalkToPoint ou Humanoid.WalkToPart muda.
Um script chama Humanoid:Move() com um novo parâmetro moveDirection.
Parâmetros
A posição para definir Humanoid.WalkToPoint para.
O BasePart para definir Humanoid.WalkToPart .
Devolução
Amostras de código
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
RemoveAccessories
Essa função remove todos os objetos Accessory usados pelo pai do humanóide. Para o jogador Characters, isso removerá todos os chapéus e outros acessórios.
Essa função remove o objeto Accessory por chamar Instance:Destroy() em seus, o que significa que o Parent dos acessórios está definido como 2>nil2> e bloqueado.
Veja também Humanoid:AddAccessory() para anexar um Accessory e Humanoid:GetAccessories() para obter todos os objetos 1> Class.Accessory1> pertencentes a um 4> Class.Humanoid4>.
Devolução
Amostras de código
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
ReplaceBodyPartR15
Substitui dinamicamente uma peça de membro R15/Rthro em um Humanoide com uma peça diferente. A peça é escalada automaticamente como normal.
Essa função é útil para modificar personagens durante o jogo ou construir personagens a partir de uma base de rig / plataforma / equipamento. A função relacionada GetBodyPartR15 pode ser útil ao usar essa função.
O nome da peça deve corresponder ao nome da BodyPartR15 Enum passada.
Parâmetros
A parte do corpo para substituir. Enum.BodyPartR15.Unknown falhará.
O Class.Part``Class.Instance que será pai do personagem.
Devolução
SetStateEnabled
Essa função define se um Enum.HumanoidStateType específico está ativado para o Humanoid. Quando um Enum.HumanoidStateType é desativado, o 1> Class.Humanoid1>
Nota que usar SetStateEnabled() no servidor não replica a alteração para o cliente, nem vice-versa.
Parâmetros
O Enum.HumanoidStateType para ser ativado ou desativado.
true se state for ativado, false se 0> state0> for desativado.
Devolução
Amostras de código
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
TakeDamage
Essa função reduz o Humanoid.Health do Humanoid pelo valor dado quanto se não for protegido por um 1> Class.ForceField1>
Essa função aceita valores negativos para o parâmetro quanto. Isso aumentará o Humanoid.Health do humanóide. No entanto, isso só terá um efeito se nenhum ForceField estiver presente.
Como ForceBlocks protege contra TakeDamage
Um Humanoid é considerado protegido por um ForceField se um ForceField atende a um dos seguintes critérios:
Para causar dano a um Humanoid irrespective of any ForceFields present, set Humanoid.Health directly.
Para mais informações sobre como ForceFields protege Humanoids veja a página ForceField
Parâmetros
O dano, ou quantidade a ser deduzida do Humanoid.Health .
Devolução
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
humanoid:TakeDamage(99)
UnequipTools
Essa função desequipa qualquer Tool atualmente equipado pelo Humanoid
O desequipado Tool será ligado à Backpack do Player associado com o 1> Class.Humanoid1>.
Se nenhum Tool estiver equipado, esta função não fará nada.
Embora Tools possa ser equipado por NPCs (Não Jogadores), esta função só funciona em Humanoids com um correspondente Player . Isso é porque um objeto 2> Class.Backpack2> é necessário para paisar o 5> Class.Tool5> desequipado
Veja também:
- Para equipar um Tool em vez disso, use Humanoid:EquipTool()
Devolução
Amostras de código
local Players = game:GetService("Players")
local ContextActionService = game:GetService("ContextActionService")
local player = Players.LocalPlayer
ContextActionService:BindAction("unequipTools", function(_, userInputState)
if userInputState == Enum.UserInputState.Begin then
if player.Character then
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:UnequipTools()
end
end
end
end, false, Enum.KeyCode.U)
ApplyDescription
Essa função de retorno faz com que o personagem pareça ser correspondente ao que o passado em HumanoidDescription . Uma cópia do passado HumanoidDescription é armazenada como o HumanoidDescription para o 1> Class.Human .
Essa função é otimizada ao fazer a suposição de que apenas essa função é usada para alterar a aparência do personagem e nenhuma alteração é feita através de outros meios entre chamadas. Se alterações forem feitas ao personagem entre chamadas. Então essa função pode não refletir o personagem de forma precisa.
Veja também
- Humanoid:GetAppliedDescription() que retorna o HumanoidDescription atualmente aplicado ao humanóide.
- Players:GetHumanoidDescriptionFromUserId() que retorna um HumanoidDescription descrevendo o avatar para o usuário passado.
- Players:GetHumanoidDescriptionFromOutfitId() que retorna um HumanoidDescription cujos parâmetros são inicializados para corresponder ao que está no recurso de moda do lado do servidor.
- Player:LoadCharacterWithHumanoidDescription() que gera um jogador com a aparência daquele que passou em HumanoidDescription.
Parâmetros
A instância HumanoidDescription que você deseja configurar para que o personagem seja conferir.
Devolução
ApplyDescriptionReset
Essa função de retorno faz com que o personagem pareça ser correspondente ao que o passado em HumanoidDescription, mesmo depois de alterações externas. Uma cópia do passado HumanoidDescription é armazenada como o HumanoidDescription para o 1> Class.Humanoid .
Essa função sempre garantirá que o personagem reflita o que foi passado em Class.Human
Parâmetros
A instância HumanoidDescription que você deseja configurar para que o personagem seja conferir.
Devolução
Eventos
Climbing
Dispara quando a velocidade em que um Humanoid está escalando muda.
Humanoids pode escalar escadas feitas de Parts ou TrussParts.
Humanoids escalar em 70% de sua Humanoid.WalkSpeed .
Este evento não sempre será disparado com uma velocidade de 0 quando o Humanoid parar de escalar.
Veja também:
- Para nadar e correr, veja os eventos Humanoid.Swimming e Humanoid.Running
- Você também pode detectar quando um Humanoid está escalando usando o evento Humanoid.StateChanged
- Você pode desativar a escalada usando a função Humanoid:SetStateEnabled()
Parâmetros
Amostras de código
local Players = game:GetService("Players")
local function onCharacterClimbing(character, speed)
print(character.Name, "is climbing at a speed of", speed, "studs / second.")
end
local function onCharacterAdded(character)
character.Humanoid.Climbing:Connect(function(speed)
onCharacterClimbing(character, speed)
end)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Died
Este evento ocorre quando o Humanoid morre, geralmente quando o Humanoid.Health atinge 0. Isso pode ser causado por desconectar sua cabeça de seu Humanoid.Torso ou diretamente definir a propriedade de saúde.
Este evento só é disparado se o Humanoid for um descendente do Workspace. Se o Dead2>Ennum.HumanoidStateType2> for desativado, ele não será Iniciar / executar.
Amostras de código
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
print(player.Name, "has died!")
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
FallingDown
O evento FallingDown é acionado quando o Humanoid entra e sai do FallingDown``Enum.HumanoidStateType.
O Humanoid entrará no estado GettingUp 3 segundos depois que o estado FallingDown for ativado. Quando isso acontecer, esse evento será disparado com um valor de 2> ativo2> de 5> falso
Parâmetros
FreeFalling
Este evento ocorre quando o Humanoid entra ou sai do Freefall``Enum.HumanoidStateType.
O parâmetro ativo representa se a Humanoid está entrando ou saindo do estado Freefall.
Embora o estado Freefall geralmente termine quando o Humanoid atinge o chão, este evento pode ocorrer com ativo igual a 2>falso2> se o estado
Parâmetros
GettingUp
Este evento ocorre quando o Humanoid entra ou sai do estado Enum.HumanoidStateType.GettingUp, um estado de transição que é ativado após o ingresso ou saída do estado Humanoid no estado 1> Enum
Quando um Humanoid tenta se reerguer, este evento será o primeiro a disparar com um parâmetro active de true antes de pouco tempo depois de disparar novamente com um parâmetro 2>active2> de 5>force5> .
Para forçar um Humanoid a cair, use a função Class.Humanoid:ChangeState() com Enumerate.HumanoidStateType.FallingDown.
Parâmetros
HealthChanged
Este evento ocorre quando a Humanoid.Health muda. No entanto, ele não será ocorrido se a saúde estiver aumentando de um valor igual ou maior que o Humanoid.MaxHealth.
Quando Humanoid.Health alcançar zero, o Humanoid morrerá e o evento Humanoid.Died será Iniciar / executar. Este evento será disparado com um valor de zero.
Parâmetros
O novo valor de Humanoid.Health .
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local currentHealth = humanoid.Health
local function onHealthChanged(health)
local change = math.abs(currentHealth - health)
print("The humanoid's health", (currentHealth > health and "decreased by" or "increased by"), change)
currentHealth = health
end
humanoid.HealthChanged:Connect(onHealthChanged)
end
player.CharacterAdded:Connect(onCharacterAdded)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
Jumping
Este evento ocorre quando o Humanoid entra e sai do Jumping``Enum.HumanoidStateType.
Quando um Humanoid salta, este evento é disparado com um active parâmetro de true antes de pouco depois de salto novamente com um
Você pode desativar o salto usando a função Humanoid:SetStateEnabled().
Parâmetros
MoveToFinished
Este evento ocorre quando o Humanoid termina de caminhar para uma meta declarada pelo Humanoid.WalkToPoint e Humanoid.WalkToPart propriedades.
As propriedades Humanoid.WalkToPoint e Humanoid.WalkToPart podem ser definidas individualmente ou usando a função Class.Humanoid:MoveTo() .
Se o Humanoid alcançar seu objetivo em 8 segundos, este evento retornará com alcançado como verdadeiro. Se o objetivo não for alcançado dentro de 8 segundos, o Humanoid parará de caminhar e 2> alcançado2> será falso. Este limite de tempo
Parâmetros
Amostras de código
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
PlatformStanding
Este evento ocorre quando o Humanoid entra ou sai do PlatformStanding``Enum.HumanoidStateType.
Enquanto o Humanoid estiver no estado PlatformStanding, a propriedade Humanoid.PlatformStand será 2> verdadeira2>.
Enquanto Humanoid.PlatformStand está definido como verdadeiro, o Humanoid não será capaz de se movimento. Para mais informações, consulte a página para 2>Class.Humanoid.PlatformStand2>.
A PlatformStand Enum.HumanoidStateType foi associada à parte agora desativada Platform. Apesar disso, ainda pode ser usada por desenvolvedores.
Parâmetros
Ragdoll
Este evento ocorre quando o Humanoid entra ou sai do Ragdoll``Enum.HumanoidStateType.
O parâmetro active terá o valor true ou false para indicar entrada ou saída.
Use Humanoid:SetStateEnabled() para desativar o estado GettingUp para permanecer no estado Ragdoll.
Veja também:
- Humanoid.FallingDown para o evento Humanoid conectado ao estado FallingDown, que se comporta da mesma forma que 0> Ragdoll0>
Parâmetros
Running
Este evento ocorre quando a velocidade em que um Humanoid está executando mudanças.
Enquanto você estiver correndo Humanoids capa, em média, seu Humanoid.WalkSpeed em studs por segundo.
Quando o Humanoid parar de executar este evento, ele será executado com uma velocidade de 0.
Veja também:
- Para nadar e escalar, veja os eventos Humanoid.Swimming e Humanoid.Climbing
- Você também pode detectar quando um Humanoid está sendo executado usando o evento Humanoid.StateChanged
Parâmetros
Amostras de código
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onRunning(speed: number)
if speed > 0 then
print(`{localPlayer.Name} is running`)
else
print(`{localPlayer.Name} has stopped`)
end
end
humanoid.Running:Connect(function(speed: number)
onRunning(speed)
end)
Seated
Este evento ocorre quando um Humanoid senta ou se levanta de um Seat ou VehicleSeat.
Quando um personagem entra em contato com um assento, eles são conectados ao assento e uma animação de sente-se toca. Para mais informações sobre isso, see the Seat page.
- Se o personagem estiver sentado, o parâmetro active será verdadeiro e currentSeatPart será o assento em que eles estão sentados.
- Se o personagem se levantar de um assento, o parâmetro active será falso e currentSeatPart será nil.
Veja também:
- Humanoid.Sit , o que indica se um Humanoid está sentado atualmente
- Humanoid.SeatPart , o que indica o assento em que um Humanoide está sentado, se houver.
Parâmetros
Amostras de código
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local function onSeated(isSeated, seat)
if isSeated then
print("I'm now sitting on: " .. seat.Name .. "!")
else
print("I'm not sitting on anything")
end
end
humanoid.Seated:Connect(onSeated)
StateChanged
Este evento ocorre quando o estado do Humanoid é alterado.
Como não há estado de humanóide "inativo", você deve usar o evento Humanoid.Running ou ouvir a parte RootPart do Velocity para obter a velocidade de quando o 2>Class.Humanoid2> está parado.
Veja também
- Humanoid:GetState() e Humanoid:ChangeState() para obter e definir o estado.
- Humanoid:SetStateEnabled() para ativar e desativar estados específicos.
Parâmetros
O digitarde estado anterior do humanóide.
O digitarde estado atual do humanóide.
Amostras de código
local character = script.Parent
local primaryPart = character.PrimaryPart
-- create particles
local particles = Instance.new("ParticleEmitter")
particles.Size = NumberSequence.new(1)
particles.Transparency = NumberSequence.new(0, 1)
particles.Acceleration = Vector3.new(0, -10, 0)
particles.Lifetime = NumberRange.new(1)
particles.Rate = 20
particles.EmissionDirection = Enum.NormalId.Back
particles.Enabled = false
particles.Parent = primaryPart
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
-- listen to humanoid state
local function onStateChanged(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
particles.Enabled = true
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
particles.Enabled = false
end
end
end
humanoid.StateChanged:Connect(onStateChanged)
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
StateEnabledChanged
O evento StateEnableChanged é acionado quando Humanoid:SetStateEnabled() é chamado no Humanoid.
Os parâmetros incluem o Enum.HumanoidStateType em questão, bem como um bool indicando se este estado está agora ativado.
Veja também:
- Para encontrar se um estado está atualmente habilitado, use Humanoid:GetStateEnabled()
- Para ouvir as mudanças de estado de Humanoid usa Humanoid.StateChanged
Parâmetros
O Enum.HumanoidStateType para o qual o estado ativado foi alterado.
Verdadeiro se o estado agora estiver ativado.
Amostras de código
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onStateEnabledChanged(state, enabled)
if enabled then
print(state.Name .. " has been enabled")
else
print(state.Name .. " has been disabled")
end
end
humanoid.StateEnabledChanged:Connect(onStateEnabledChanged)
Strafing
Este evento não é disparado quando o Humanoid está atacando e não deve ser usado por desenvolvedores
Este evento é disparado quando o Humanoid entra ou sai do StrafingNoPhysics``Enum.HumanoidStateType.
Quando a <a href="/reference/engine/datatypes">Class.Humanoid</a> entrar no estado de <a href="/reference/engine/datatypes">StrafingNoPhysics</a>, esse evento será disparado com um parâmetro <a href="/reference/engine/datatypes">ativo</a> de <a href="/reference/engine/datatypes
Este evento está associado ao estado StrafingNoPhysics e Humanoid e não queima quando o 1>Class.Humanoid1> está se movendo perpendicular à direção que está enfrentando. Este estado não está sendo usado atualmente, se for definido usando 4> Class
Parâmetros
Swimming
Este evento ocorre quando a velocidade em que um Humanoid nada na água Terrain muda.
Humanoids nada nadando em 87,5% de sua Humanoid.WalkSpeed.
Este evento não sempre será disparado com uma velocidade de 0 quando o Humanoid parar de nadar.
Veja também:
- Para correr e escalar, veja os eventos Humanoid.Running e Humanoid.Climbing
- Você também pode detectar quando um Humanoid está nadando usando o evento Humanoid.StateChanged
- Você pode desativar a natação usando a função Humanoid:SetStateEnabled()
Parâmetros
Touched
Este evento ocorre quando um dos limbes do humanóide entra em contato com outro BasePart. O BasePart que o limbo está tocando, juntamente com o limbo em si, é dado.
Este evento não será acionado quando membros que pertencem ao Humanoid entrarem em contato com eles mesmos.
Alternativas
Embora o evento Humanoid.Touched seja útil, você deve considerar se há alternativas que melhor se adequam às suas necessidades.
- Na maioria dos casos, é aconselhável conectar um evento BasePart.Touched para BaseParts de interesse, em vez disso, como o evento Humanoid.Touched
- Ao tentar trabalhar quando o Humanoid caiu no chão, o evento Humanoid.StateChanged é mais adequado. Alternativamente, você pode verificar Humanoid.FloorMaterial para ver se o humanóide está em qualquer material não aéreo.
Notas
- Conectar-se a este evento causará a criação de um TouchTransmitter em cada membro.
- Atualmente não há equivalente de BasePart.TouchEnded para Humanoids.
Parâmetros
Amostras de código
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local partInfo = {}
local debounce = false
local function onHumanoidTouched(hit, _limb)
if debounce then
return
end
if not hit.CanCollide or hit.Transparency ~= 0 then
return
end
if not partInfo[hit] then
partInfo[hit] = {
BrickColor = hit.BrickColor,
Material = hit.Material,
}
hit.BrickColor = BrickColor.new("Gold")
hit.Material = Enum.Material.Ice
debounce = true
task.wait(0.2)
debounce = false
end
end
local touchedConnection = humanoid.Touched:Connect(onHumanoidTouched)
local function onHumanoidDied()
if touchedConnection then
touchedConnection:Disconnect()
end
-- undo all of the gold
for part, info in pairs(partInfo) do
if part and part.Parent then
part.BrickColor = info.BrickColor
part.Material = info.Material
end
end
end
humanoid.Died:Connect(onHumanoidDied)