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á aos modelos a funcionalidade de um personagem.Garante ao modelo a capacidade de caminhar fisicamente e interagir com vários componentes de uma experiência Roblox.Humanóides são sempre paternados dentro de um Model , e o modelo é esperado para ser uma montagem de BasePart e Motor6D ; a parte raiz da montagem é esperada para ser chamada HumanoidRootPart .Também espera que uma parte chamada Head seja conectada à parte do torso do personagem, direta ou indiretamente.Por padrão, existem dois tipos oficiais de personagens fornecidos pelo Roblox, cada um com seu próprio conjunto de regras:
R6
- Um personagem básico que usa 6 partes para membros.
- A parte Head deve ser anexada a uma parte chamada Torso , ou o Humanoide morrerá imediatamente.
- As aparências de BodyPart são aplicadas usando objetos CharacterMesh.
- Certas propriedades, como Humanoid.LeftLeg e Humanoid.RightLeg, só funcionam com o R6.
R15
- Mais complexo que o R6, mas também muito mais flexível e robusto.
- Usa 15 partes para membros.
- A parte Head deve ser anexada a uma parte chamada UpperTorso ou o Humanoide morrerá imediatamente.
- As aparências da Parte do Corpo precisam ser montadas diretamente.
- Pode ser redimensionado dinamicamente usando objetos especiais NumberValue filhos dentro do Humanoid.
- O Humanoide criará automaticamente objetos Vector3Value chamados OriginalSize dentro de cada membro.
- Se um valor de número for pai dentro do Humanoide e for chamado de um dos seguindo, ele será usado para controlar a funcionalidade de escalonamento:
- Escala de Profundidade do Corpo
- Escala de Altura do Corpo
- Tamanho da largura do corpo
- Escala de Cabeça
Amostras de código
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
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 vai pular automaticamente quando atingir um obstáculo como jogador em um dispositivo móvel.
O AutoRotate define se o Humanoide vai girar automaticamente para a direção em que está se movendo.
Quando ativado, AutomaticScalingEnabled causa a mudança do tamanho do personagem em resposta às alterações nos valores da escala filha do humanoide.
Determina se as articulações do humanoide quebram quando no estado Enum.HumanoidStateType.Dead .
Um deslocamento aplicado à posição do assunto da Câmera quando seu Assunto de Câmera for definido para este Humanoide.
Controla o comportamento de distância do nome e da exibição de saúde do humanoide.
Define o texto de um Humanoide, exibido acima de sua cabeça.
Descreve o Enum.Material que o Humanoid está atualmente em pé.Se o Humanoid não estiver em nada, o valor dessa propriedade será Ar.
Descreve a saúde atual do Humanoide 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 humanoide pode ser vista.
Controla quando a barra de saúde do humanoide é permitida ser exibida.
Determina a distância fora do chão que o Humanoid.RootPart deve estar.
Se true , o Humanoid saltos com uma força para cima.
Fornece controle sobre a altura para a qual os Humanoid saltos irão.
Determina quanta força de cima é aplicada ao Humanoid ao pular.
O valor máximo de um humanoide Health .
O ângulo máximo de inclinação que um humanoide pode caminhar sem escorregar.
Descreve a direção em 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 humanoide pode ser visto.
Controla se o nome e a barra de vida de um humanoide podem ser vistos atrás de paredes ou outros objetos.
Determina se o Humanoid está atualmente no estado Enum.HumanoidStateType.PlatformStanding.
Permite que os desenvolvedores desabilitem o comportamento onde um jogador morre se o Pescoço for removido ou desconectado mesmo por um momento.
Descreve se este Humanoid está utilizando o antigo personagem R6 ou o novo personagem R15.
Uma referência ao Objeto RootPartHumanoide do humanoide.
Uma referência ao assento em que um Humanoid está sentado no momento, se algum.
Descreve se o Humanoid está sentado atualmente.
Descreve a posição 3D onde o Player controla o Humanoid último clicado no mundo enquanto usa um Tool .
Determina se a propriedade JumpHeight (falsa) ou Humanoid.JumpPower (verdadeira) é 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 humanoide
A posição que um humanoide está tentando alcançar, após uma chamada para Humanoid:MoveTo() ser feita.
Métodos
Aplica o especificado Accessory ao pai do humanoide.
Reúne uma árvore de Motor6D juntas por meio de anexar objetos Attachment juntos no personagem de um humanoide.
Define o Humanoid para entrar no Enum.HumanoidStateType dado.
Retorna um conjunto de Accessory objetos que o pai do humanoide está usando no momento.
Retorna uma cópia do cache do humanoide HumanoidDescription que descreve sua aparência atual.
Passe uma parte do corpo para este método (a parte do corpo deve ser um irmão de Humanoide e um filho de um Modelo) para obter o Enum.BodyPartR15 da Part.
Retorna o atual do humanoide Enum.HumanoidStateType .
Retorna se um Enum.HumanoidStateType é habilitado 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 todos os objetos Accessory usados pelo pai do humanoide
Substitui dinamicamente uma parte do corpo humanoide por uma parte diferente.
Define se um determinado Enum.HumanoidStateType é habilitado para o Humanoid.
Diminui o do pelo valor dado se não for protegido por um .
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Faz com que a aparência do personagem corresponda à da passada em HumanoidDescription .
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Faz com que a aparência do personagem corresponda à da passada em HumanoidDescription, mesmo após alterações externas.
Reproduz emotes e retorna se foi executado com sucesso.
Eventos
Incêndios quando a velocidade em que um Humanoid está subindo muda.
Incêndios quando o Humanoid morre.
Incêndios quando o Humanoid entra ou sai do FallingDown``Enum.HumanoidStateType.
Incêndios quando o Humanoid entra ou sai do Freefall``Enum.HumanoidStateType.
Incêndios quando o Humanoid entra ou sai do GettingUp``Enum.HumanoidStateType.
Incêndios quando as alterações de Humanoid.Health mudam (ou quando o Humanoid.MaxHealth é configurar).
Incêndios quando o Humanoid entra e sai do Jumping``Enum.HumanoidStateType.
Incêndios quando o Humanoid termina de caminhar até um objetivo declarado por Humanoid:MoveTo().
Incêndios quando o Humanoid entra ou sai do PlatformStanding``Enum.HumanoidStateType.
Incêndios quando o Humanoid entra ou sai do Ragdoll``Enum.HumanoidStateType.
Incêndios quando a velocidade em que um Humanoid está rodando muda.
Dispedido quando um Humanoid está sentado em um Seat ou VehicleSeat ou se levanta.
Dispara quando o estado do Humanoid é alterado.
Incêndios quando Humanoid:SetStateEnabled() é chamado no Humanoid.
Incêndios quando o Humanoid entra ou sai do StrafingNoPhysics``Enum.HumanoidStateType.
Incêndios quando a velocidade em que um Humanoid nada na água Terrain muda.
Incendeia quando um dos membros do humanoide entra em contato com outro BasePart.
Propriedades
AutoJumpEnabled
O AutoJumpEnabled define se o Humanoid vai tentar pular automaticamente por um obstáculo que ele está caminhando.
Atualmente, essa propriedade só funciona quando as seguintes condições são verdadeiras:
- O modelo de personagem do Humanoide é o Player.Character de um Player.
- O Jogador em questão está usando controles de toque.
Quando o 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
Este exemplo de código é destinado a um TextButton. Ele permite que o jogador alterne o comportamento de pulo automático enquanto estiver em um dispositivo móvel.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Atualizar texto do botão
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflete a propriedade no personagem do jogador, se ele tiver uma
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Alternar pulo automático
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Atualize tudo o mais
update()
end
button.Activated:Connect(onActivated)
update()
AutoRotate
A propriedade Girar Automaticamente descreve se o Humanoide girará automaticamente para a direção em que estiver se movendo.Quando definido como verdadeiro, o modelo de personagem irá gradualmente virar para a direção de movimento deles à medida que o Humanoide caminha ao redor.Quando definido como falso, o modelo de personagem permanecerá fixado em sua rotação atual, a menos que uma força rotativa seja aplicada ao HumanoidRootPart.
Se o modelo de personagem for o personagem de um jogador, então o comportamento da rotação do Humanoide é influenciado pela propriedade RotateType do UserGameSetting.
Quando a propriedade AutoRotate é definida como verdadeira, a propriedade RotateType tem os seguintes efeitos na rotação do Humanoide:
<th>Comporte</th><th>Contexto</th></tr></thead><tbody><tr><td>MovimentoRelativo</td><td /><td /></tr><tr><td>CameraRelativa</td><td>O personagem girará para frente na direção da Câmera.</td><td>O jogador tem sua câmera ampliada para a primeira pessoa ou está no modo de bloqueio de mudança.</td></tr></tbody>
Tipo de Rotação |
---|
Amostras de código
Este script adiciona a funcionalidade de um botão a uma parte, que muda a propriedade AutoRotate de quem o toca.
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 infantil, incluindo BodyDepthScale, BodyHeightScale, BodyProportionScale, BodyTypeScale, BodyWidthScale, HeadScale.Mudar o valor de qualquer uma dessas causas faz com que as partes do corpo e acessórios do personagem mudem de tamanho, mas apenas se AutomaticScalingEnabled for verdadeiro.
BreakJointsOnDeath
Determina se as articulações do humanoide quebram quando no estado Enum.HumanoidStateType.Dead . Padrão para verdadeiro.
CameraOffset
A propriedade CameraOffset especifica um deslocamento para a posição do assunto da Câmeraquando seu Camera.CameraSubject é definido para esta Humanoid.
O deslocamento é aplicado no espaço do objeto, em relação à orientação da parte raiz do Humanoide HumanoidRootPart.Por exemplo, um valor de deslocamento Vector3 de (0, 10, 0) desloca a câmera do jogador para 10 metros acima do humanoide do jogador.
Amostras de código
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
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 Distância de ExibiçãoTipo controla o comportamento de distância da exibição do nome e da saúde do humanoide.Essa propriedade é definida usando o Enum.HumanoidDisplayDistanceType com três valores disponíveis, cada um com seu próprio conjunto de regras:
- Quando definido para Viewer , o humanoide vê o nome/saúde de outros humanóides dentro do alcance de seu próprio NameDisplayDistance e HealthDisplayDistance .
- Quando definido para , o humanoide toma controle total sobre seu próprio nome e exibição de saúde através de seus valores e .
- Quando definido para None, o nome e a barra de saúde do humanoide não aparecem em nenhuma circunstância.
Veja Nome/Saúde do Personagem para um guia detalhado sobre como controlar a aparência de nomes de personagens e barras de saúde.
Amostras de código
This example demonstrates how to set a Humanoid's Humanoid.DisplayerDistanceType, Humanoid.HealthDisplayDistance, and Humanoid.NameDisplayDistance properties. These properties determine how a humanoid's healthbar and name are rendered for a player.
First, we change the DisplayDistanceType to Viewer using Enum.HumanoidDisplayDistanceType. When set to viewer, the humanoid's Name and healthbar will be displayed based on the distance settings of the humanoid viewing them.
Then, the humanoid's HealthDisplayDistance is set to 0. Setting the property to 0 hides the healthbar completely. It is not displayed at any distance.
Finally, the humanoid's NameDisplayDistance is set to 100. This means that the humanoid's name will be visible to other humanoid's within 100 studs.
This example should work as expected when placed inside a Script that is a child of the humanoid.
local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
DisplayName
DisplayName é uma propriedade que determina a exibição do nome do Humanoide quando visível.Por padrão, um novo Humanoide terá o valor de uma string / cadeia / textovazia.Se DisplayName for uma string / cadeia / textovazia, a exibição do nome do humanoide padrãoizará a propriedade do nome do pai do humanoide.
Carregamento de Personagem de Jogador
Quando os jogadores carregam seu personagem, seja automaticamente ou através do uso de LoadCharacter() , o Humanoide que é criado pela engine terá sua propriedade DisplayName definida para a propriedade do jogador DisplayName.
Personagem Inicial e StarterHumanoid
Quando um Humanoid chamado StarterHumanoid é pai de StarterPlayer , ou quando um Humanoide está presente em um Modelo chamado StarterCharacter , a propriedade DisplayName será respeitada quando os Personagens forem carregados por Jogadores no jogo.O motor só substituirá a propriedade DisplayName da Humanoid com a propriedade DisplayName da jogadora se a Humanoid.DisplayName de StarterHumanoid for uma string / cadeia / textovazia.
EvaluateStateMachine
FloorMaterial
Esta é uma propriedade de leitura apenas que descreve o Enum.Material o Humanoid está atualmente em pé.Funciona com ambos os voxels regulares Parts e Terrain regulares.
O exemplo de código abaixo mostra como ouvir quando essa propriedade muda usando Object:GetPropertyChangedSignal().Quando o material em que o humanoide está pousado muda, ele imprimirá uma mensagem indicando o novo material em que está pousado.
local Humanoid = route.to.humanoid
Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
print("New value for FloorMaterial: " .. tostring(Humanoid.FloorMaterial))
end)
Ressalvas
- Quando o Humanoid não está em um piso, o valor dessa propriedade será definido como Ar.
- Isso ocorre porque as propriedades Enum não podem ter um valor vazio.
- Isso pode causar alguma confusão se uma parte tiver seu material definido como Ar, embora, na prática, as peças não sejam supostas usar esse material em primeiro local.
- O modelo de personagem do Humanoid deve ser capaz de colidir com o chão, caso contrário, não será detectado.
- Você não pode testar se o Humanoid está nadando com essa propriedade. Você deve usar sua função Humanoid:GetState() em vez disso.
Health
Essa propriedade representa a saúde atual do Humanoid.O valor é restrito ao intervalo entre 0 e MaxHealth .Se o humanoide estiver morto, esta propriedade é continuamente definida como 0.
Observe que a função TakeDamage() pode ser usada para subtrair de Health em vez de definir a propriedade diretamente.
Regeneração de Saúde
Por padrão, um script de regeneração de saúde passiva é automaticamente inserido em humanóides.Isso faz com que os personagens não mortos do jogador se regenerem 1% de cada segundo.Para desabilitar esse comportamento de regeneração, adicione um vazio Script chamado Saúde a StarterCharacterScripts.
Exibição da 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 HealthDisplayDistance e HealthDisplayType.
Veja Nome/Saúde do Personagem para um guia detalhado sobre como controlar a aparência de nomes de personagens e barras 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 Health de um humanoide morto para um valor positivo não zero.
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 humanoide pode ser vista.
Veja Nome/Saúde do Personagem para um guia detalhado sobre como controlar a aparência de nomes de personagens e barras de saúde.
HealthDisplayType
Essa propriedade controla quando a barra de saúde de um humanoide é permitida ser exibida.Por padrão, esta propriedade é definida como DisplayWhenDamaged, o que faz com que a barra de saúde seja exibida apenas quando a Health de um humanoide for menor que sua MaxHealth.Também pode ser definido para AlwaysOn , o que faz com que a barra de saúde sempre seja exibida ou AlwaysOff , o que impede que ela seja exibida.
Observe que essa propriedade funciona independentemente da propriedade do humanoide HealthDisplayDistance que é responsável por fazer a barra de saúde desaparecer em determinadas distâncias.Se Humanoid.HealthDisplayType|HealthDisplayType for definido para AlwaysOn, ainda desaparecerá dependendo de como HealthDisplayDistance for configurado.
Veja Nome/Saúde do Personagem para um guia detalhado sobre como controlar a aparência de nomes de personagens e barras de saúde.
HipHeight
Determina a distância (em studs) fora do chão que o RootPart deve estar quando o humanoide está de pé.O RigType influencia a maneira como essa propriedade se comporta.
Para equipamentos R15, uma altura de quadril adequada é predefinida para garantir que a altura do RootPart seja correta.A altura das pernas não é usada.A altura geral do humanoide pode ser descrita na seguinte fórmula:
Height = (0.5 * RootPart.Size.Y) + HipHeight
Para rigs R6, HipHeight em vez disso descreve um deslocamento relativo. A altura geral do humanoide pode ser descrita na seguinte fórmula:
Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
Jump
Se true , o Humanoid saltos com uma força para cima igual ao valor de Humanoid.JumpPower ou a altura de Humanoid.JumpHeight , dependendo do valor de Humanoid.UseJumpPower .
JumpHeight
Fornece controle sobre a altura de um pulo Humanoid em studs.O valor inicial desta propriedade é determinado pelo valor de StarterPlayer.CharacterJumpHeight que padrão é 7.2.
Embora definir esta propriedade para 0 efetivamente impeça o humanoide de pular, é recomendado desativar o pulo desativando o estado Enum.HumanoidStateType.Jumping através de Humanoid:SetStateEnabled().
Essa propriedade só é visível na janela Propriedades se Humanoid.UseJumpPower estiver definida como falsa , pois não seria relevante de outra forma (em vez disso, Humanoid.JumpPower é usado).
JumpPower
Determina quanta força de cima é aplicada ao Humanoid ao pular.O valor inicial desta propriedade é determinado pelo valor de StarterPlayer.CharacterJumpPower que padrão é 50 e está restrito entre 0 e 1000.Observe que os saltos também são influenciados pela propriedade Workspace.Gravity que determina a aceleração devido à gravidade.
Embora definir esta propriedade para 0 efetivamente impeça o humanoide de pular, é recomendado desativar o pulo desativando o estado Enum.HumanoidStateType.Jumping através de Humanoid:SetStateEnabled().
Essa propriedade só é visível na janela Propriedades se Humanoid.UseJumpPower estiver definida como verdadeira , pois não seria relevante de outra forma (em vez disso, Humanoid.JumpHeight é usado).
MaxHealth
O valor máximo de um humanoide Health .
O valor dessa propriedade é usado ao lado da propriedade Health para dimensionar o display padrão da barra de saúde.Quando a barra de saúde de um humanoide Health atinge MaxHealth, sua propriedade HealthDisplayType pode não ser exibida, dependendo de sua propriedade.
MaxSlopeAngle
Essa propriedade determina o ângulo máximo de inclinação que um humanoide pode escalada.Se o ângulo de um declive for maior que o ângulo máximo de um hidroide, eles deslizarão pelo declive.
Quando um personagem é gerado, esta propriedade é definida de acordo com o valor de StarterPlayer.CharacterMaxSlopeAngle .
O valor desta propriedade é limitado a valores entre 0° e 89°.Ele padrãoiza para 89°, então humanóides podem escalar praticamente qualquer declive que desejem por padrão.
Amostras de código
The example below demonstrates the effect of the MaxSlopAngle property by limiting the maximum slope the Players.LocalPlayer can walk up to 30°. The local player will slide down any slope greater than 30°.
This code below works as expected when placed in a LocalScript.
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
Direção de Movimento é uma propriedade de leitura exclusiva que descreve a direção em que um Humanoid está caminhando, como um vetor de unidade ou vetor de comprimento zero.A direção é descrita no espaço mundial.
Como essa propriedade é apenas de leitura, ela não pode ser definida por um Script ou LocalScript.
Amostras de código
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
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 Distância de Exibição do Nome é um número usado em conjunto com a propriedade Humanoid.DisplayDistanceType para controlar a distância a partir da qual o nome de um humanoide pode ser visto.
Veja Nome/Saúde do Personagem para um guia detalhado sobre como controlar a aparência de nomes de personagens e barras de saúde.
NameOcclusion
Controla se o nome e a barra de vida de um humanoide podem ser vistos atrás de paredes ou outros objetos.Essa propriedade é um valor Enum.NameOcclusion e pode ser configurada para ocultar todos os nomes, nomes inimigos ou desativar completamente a ocultação.
Em casos em que o LocalPlayer não tem Humanoid associado a ele, esta propriedade se aplica ao assunto Humanoid.
Veja Nome/Saúde do Personagem para um guia detalhado sobre como controlar a aparência de nomes de personagens e barras de saúde.
Amostras de código
In the below example, Player|Players will not be able to see each other's Player.Character names when they are obscured behind BasePart|BaseParts.
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 Humanoide está em um estado em que está caindo livremente e não pode se movimento.Este estado se comporta de forma semelhante a sentar-se, exceto que pular não libera o humanoide do estado.
RequiresNeck
Permite que os desenvolvedores desabilitem o comportamento onde um jogador morre se o Pescoço for removido ou desconectado mesmo por um momento.Essa propriedade padrão é verdadeira.
RigType
RigType descreve se um Humanoid está utilizando o legado R6 personagem rig / plataforma / equipamento, ou o personagem R15 mais novo.
O equipamento R6 usa 6 visíveis Parts enquanto o equipamento R15 usa 15 visíveis Parts .R15 equipamentos têm mais articulações do que equipamentos R6, tornando-os muito mais versáteis ao serem animados.
Observe que se esta propriedade for definida incorretamente, o Humanoid não funcionará corretamente.Por exemplo, se o Tipo de Rig de um humanoide R15 for definido como R6, o Humanoid morrerá pois não há BasePart chamado Torso conectado a um BasePart chamado Cabeça .
RootPart
Uma referência ao Objeto Raiz Humanoide do Humanoide do humanoide, a parte de condução da raiz do Humanoid que controla o movimento de um humanoide através do mundo 3D.Essa parte é normalmente invisível.
Para personagens R15, Model.PrimaryPart do modelo Player.Character é definido como Raiz Humanoide .
Para personagens R6, Model.PrimaryPart é definido para a parte Head.
SeatPart
A Parte de Assento é uma referência ao assento em que um Humanoid está sentado no momento, se algum.O valor desta propriedade pode ser um Seat ou um VehicleSeat.Será nil se o Humanoide não estiver sentado em um assento no momento.
Nota:
- Para um bool que descreve se o Humanoid está sentado atualmente ou não, veja Humanoid.Sit
Sit
A propriedade Sit é um booleano que indica se o Humanoid está sentado atualmente.Humanoids pode ser forçado a um estado sentado ao definir o valor desta propriedade para verdadeiro.Se o Humanoid não estiver anexado a um assento enquanto estiver em seu estado sentado, ele tropeçará sem colisão em suas pernas.Um Humanoid pode escapar do estado sentado pulando.
Nota:
- O Seat ou VehicleSeat o Humanoid está sentado em pode ser obtido usando a propriedade Humanoid.SeatPart
- É possível detectar quando um Humanoide se senta conectando-se ao evento Humanoid.Seated.
TargetPoint
Não use Esta propriedade só funciona com o Modo Experimental ativado, que foi totalmente descontinuado.
Essa propriedade descreve uma posição 3D no espaço onde o Player controla este Humanoid último clicado com um Tool equipado.
Essa propriedade é principalmente usada por ferramentas clássicas para determinar o que um humanoide está almejando quando ativa uma ferramenta.Se você der a um NPC um lançador de foguetes clássico, defina seu Ponto de Alvo , e então chame a função Tool:Activate(), você pode fazer o NPC disparar 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 saltar, com este valor definido como verdadeiro, o valor Humanoid.JumpHeight é usado para garantir que os saltos humanóides para essa altura.Com isso definido como falso, o valor Humanoid.JumpPower é usado para aplicar uma força ascendente.
WalkSpeed
Essa propriedade descreve quão rapidamente o Humanoid é capaz de andar, em studs por segundo.Ele padrãoiza para o valor de StarterPlayer.CharacterWalkSpeed (16), o que significa que um personagem de jogador pode se mover 16 metros em qualquer direção a cada segundo.
Notas
- Quando controlado em um dispositivo móvel ou em um controle / controle de jogo, um humanoide pode caminhar mais devagar do que seu WalkSpeed se o polegar de controle for movido apenas um grau gradual do centro.
- Você pode congelar um humanoide no lugar definindo WalkSpeed para 0; isso impede que o jogador controlador o mova através dos mecanismos de movimento padrão.
- O script de animação padrão escala as animações de movimento de um humanoide com base na velocidade com que 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 Humanoide.
Quando o WalkToPart é definido e um humanoide está ativamente tentando alcançar a peça, ele manterá atualizando seu objetivo Vector3 para ser a posição da peça, mais o Humanoid.WalkToPoint traduzido no espaço do objeto em relação à rotação da peça.
Isso pode ser descrito em Luau como:
goal = humanoid.WalkToPart.CFrame:pointToObjectSpace(humanoid.WalkToPoint)
Ressalvas
- Definir o valor de WalkToPart não é suficiente para fazer um humanoide começar a seguir uma parte.
- 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 alcançar o objetivo do robô humano expirará após 8 segundos se não alcançar seu objetivo.
- Isso é feito para que NPCs não fiquem presos esperando Humanoid.MoveToFinished para Iniciar / executar.
- Se você não quiser que isso aconteça, você deve chamar repetidamente MoveTo para que o tempo limite continue sendo reiniciado.
WalkToPoint
WalkToPoint descreve a posição 3D no espaço que um humanoide está tentando alcançar, depois de ter sido solicitado a fazê-lo pela função Humanoid:MoveTo() do Humanoide.
Se o Humanoid.WalkToPart de um humanoide for configurar, o objetivo é definido transformando WalkToPoint em relação à posição e rotação das peças.Se WalkToPart não for configurar, o humanoide tentará chegar à posição 3D especificada por WalkToPoint diretamente.
Ressalvas
- O valor de WalkToPoint deve ser alterado para um valor diferente para que o humanoide comece a caminhar até ele.
- Se você quiser fazer uma caminhada humanoide para 0,0,0 , você deve usar a função MoveTo do Humanoide.
- Isso pode ser alterado no futuro.
- O estado de alcançar o objetivo do robô humano expirará após 8 segundos se não alcançar seu objetivo.
- Isso é feito para que NPCs não fiquem presos esperando Humanoid.MoveToFinished para Iniciar / executar.
- Se você não quiser que isso aconteça, você deve chamar repetidamente MoveTo para que o tempo limite continue sendo reiniciado.
Amostras de código
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
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 anexa o especificado Accessory ao pai do humanoide.
Quando este método é chamado, um é anexado ao personagem ao procurar por um em o pai do humanoide que compartilha o mesmo nome de um no acessório Handle .Se um for encontrado, a parte Mão será conectada ao pai do Attachment usando um Weld, e a solda será configurada para que o Attachments ocupe o mesmo espaço.
Se o necessário Attachment não puder ser encontrado, então o Accessory permanecerá ligado ao pai do humanoide, mas não estará anexado.
Normalmente, soldas acessórias são criadas no servidor, mas podem ser criadas no cliente em determinadas circunstâncias.Nessas situações, chamadas do lado do cliente para AddAccessory() podem nem sempre produzir o comportamento desejado e você pode usar BuildRigFromAttachments() para forçar a criaçõesde solda esperada.
Parâmetros
Devolução
Amostras de código
This script generates the "Clockwork's Shades" Accessory from scratch, and then attaches it to the player's character using Humanoid.AddAccessory You should paste this code into a regular script, and then parent it inside of the StarterPlayer's StarterCharacterScripts folder.
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 a reprodução de Animations .
Começando com o humanoide's RootPart , este método coleta todos os Attachments pais na parte atual cujo nome termina com RigAttachment .Então, ele procura um anexo correspondente no personagem que compartilha o mesmo nome do anexo.Usando esses dois anexos, uma junta Motor6D é gerada com base nas peças associadas aos dois anexos e na CFrame das peças dos anexos.
Humanoid:BuildRigFromAttachments() também escala o personagem e define as cores do corpo.
Devolução
Amostras de código
A Lua port of the Humanoid's BuildRigFromAttachments function, so that the recursive behavior of the function can be seen.
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)
A script that generates an R15 character from scratch using a package's assetId.
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
Este método faz com que o Humanoid entre no Enum.HumanoidStateType dado, descrevendo a atividade que o Humanoid está fazendo no momento.
Por favor, revise a página Enum.HumanoidStateType para obter mais informações sobre os estados particulares, pois alguns têm nomes intuitivos.Por exemplo, Enum.HumanoidStateType.Running descreve um estado em que as pernas do humanoide estão no chão, incluindo quando estão paradas.
Devido ao comportamento padrão do Humanoid, alguns estados serão automaticamente alterados quando configurar. Por exemplo:
- Definir o estado para Enum.HumanoidStateType.Swimming quando o humanoide não está na água fará com que ele seja automaticamente definido como Enum.HumanoidStateType.GettingUp.
- Como não está sendo usado, definir o estado para Enum.HumanoidStateType.PlatformStanding causará o estado humanoide ser definido automaticamente para Enum.HumanoidStateType.Running .
Observe que, para definir o estado Humanoid usando esse método, você deve fazê-lo a partir de um LocalScript e o cliente deve ter propriedade de rede do Player.Character.Alternativamente, você pode chamar esse método de um lado do servidor Script , mas o servidor deve ter propriedade de rede do personagem do jogador.
Veja também Humanoid:SetStateEnabled() para habilitar ou desabilitar um estado específico, e Humanoid:GetState() para obter o estado humanoide atual.
Parâmetros
O Enum.HumanoidStateType que o Humanoid deve executar.
Devolução
Amostras de código
This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.
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
Este método faz com que o Humanoid equipe o dado Tool.
O exemplo abaixo causaria um Player para equipar uma ferramenta em Workspace chamada 'Ferramenta' .
local Players = game:GetService("Players")local Workspace = game:GetService("Workspace")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 este método é chamado, o Humanoid primeiro vai desequipar automaticamente todos os Tools que ele atualmente tem equipados.
Embora eles sejam equipados, Tools para o qual Tool.RequiresHandle é verdadeiro não funcionará se não tiverem Manipulador / alça, independentemente se este método for usado para equipá-los ou não.
Veja também:
- Para desequipar ferramentas, use Humanoid:UnequipTools()
Parâmetros
Devolução
GetAccessories
Este método retorna um conjunto de Accessory objetos que o pai do humanoide está usando no momento.Todos esses objetos Accessory serão incluídos, independentemente de estarem anexados ou não.
Se o Humanoid não tiver objetos Accessory, um array vazio será retornado.
Veja também Humanoid:AddAccessory() para anexar um Accessory a um pai de um humanoide.
Devolução
Amostras de código
This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.
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
Este método retorna uma cópia do cache do humanoide HumanoidDescription que descreve sua aparência atual.Isso pode ser usado para determinar rapidamente o visual de um personagem e atribuir seu visual a outros personagens usando o método 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 da entidade de roupa passada no lado do servidor.
- Player:LoadCharacterWithHumanoidDescription() que gera um jogador com o visual do passado em HumanoidDescription .
Devolução
GetBodyPartR15
Este método retorna o que Enum.BodyPartR15 um Part é, ou Enum.BodyPartR15.Unknown se a peça não for uma parte do corpo R15.Este método permite que os desenvolvedores recuperem partes do corpo do jogador independentemente do que são os nomes das partes do corpo reais, retornando um enum.
Pode ser usado em conjunto com Humanoid:ReplaceBodyPartR15().Por exemplo, se a parte do corpo de um jogador tocar em algo, essa função retornará uma instância de parte.Os desenvolvedores podem então olhar para qual parte do corpo que era, como cabeça ou braço.Então, dependendo do que essa parte era, os desenvolvedores podem executar alguma ação de jogo ou substituir essa parte por alguma outra parte - talvez mostrando danos.
Este método pode ser útil para jogos onde a localização do golpe é importante.Por exemplo, pode ser usado para determinar se um jogador foi atingido na perna e, em seguida, desacelerá-lo com base na lesão.
Parâmetros
A peça especificada sendo verificada para ver se é uma parte do corpo R15.
Devolução
O tipo de corpo R15 especificado para a parte ou desconhecido se a parte não for uma parte do corpo.
GetLimb
Este método retorna o Enum.Limb enum que está associado ao dado Part. Ele funciona para ambas as plataformas R15 e R6, por exemplo:
-- Para R15print(humanoid:GetLimb(character.LeftUpperLeg)) -- Enum.Limb.Leg Esquerdaprint(humanoid:GetLimb(character.LeftLowerLeg)) -- Enum.Limb.Leg Esquerdaprint(humanoid:GetLimb(character.LeftFoot)) -- Enum.Limb.Leg Esquerda-- Para R6print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg
Observe que Humanoid:GetLimb() vai lançar um erro se o pai da peça não for definido como o pai do humanoide.
Parâmetros
Devolução
Amostras de código
Put this in a LocalScript. The output will vary based on if the humanoid is R6 or R15.
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
Este método retorna o atual Enum.HumanoidStateType do humanoide, descrevendo a atividade que o Humanoid está fazendo no momento, como pular ou nadar.
Veja também Humanoid:SetStateEnabled() para habilitar ou desabilitar um estado específico, e Humanoid:ChangeState() para alterar o estado humanoide atual.
Devolução
O atual Enum.HumanoidStateType da Humanoid.
Amostras de código
This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.
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
O método GetStateEnabled retorna se um Enum.HumanoidStateType está habilitado para o Humanoid.
O estado humanoide descreve a atividade que o humanoide está fazendo no momento.
Quando um determinado Enum.HumanoidStateType é desativado, o humanoide nunca pode entrar nesse estado.Isso é verdade independentemente se a tentativa de alterar o estado for feita usando Humanoid:ChangeState() ou código humanoide interno do Roblox.
Veja também:
- Para um evento que dispara quando um estado humanoide é ativado ou desativado, veja Humanoid.StateEnabledChanged
- Para habilitar ou desabilitar um estado de Humanoid usar Humanoid:SetStateEnabled()
Parâmetros
O dado Enum.HumanoidStateType .
Devolução
Se o dado Enum.HumanoidStateType for habilitado.
Amostras de código
The code below sets the value of the humanoid jumping state to false using Humanoid:SetStateEnabled() and then retrieves and prints the value of this state (false) using Humanoid:GetStateEnabled().
local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false
Move
Este método faz com que o Humanoid caminhe na direção dada Vector3.
Por padrão, a direção está em termos mundiais, mas se o parâmetro relativeToCamera for true, a direção é relativa ao CFrame do CurrentCamera.Como a direção negativa Z negativa é considerada "para frente" no Roblox, o seguinte código fará a caminhada humanoide na direção do CurrentCamera.
humanoid:Move(Vector3.new(0, 0, -1), true)
Quando este método é chamado, o Humanoid se moverá até que o método seja chamado novamente.No entanto, esse método será substituído na próxima frame pelo script de controle de personagem padrão do Roblox.Isso pode ser evitado chamando essa função a cada quadro usando RunService:BindToRenderStep() (veja exemplo), ou substituindo os scripts de controle em StarterPlayerScripts .
Este método pode ser chamado no servidor, mas isso só deve ser feito quando o servidor tiver propriedade de rede da montagem do humanoide.
Veja também Humanoid:MoveTo() que faz um Humanoid caminhada para um ponto, e Player:Move() que chama efetivamente essa função.
Parâmetros
A direção para caminhar.
Defina para true se o parâmetro moveDirection deve ser tomado como relativo ao CurrentCamera.
Devolução
Amostras de código
This code sample uses the Humanoid:Move() function to make the player's Character walk in the direction of the Camera. RunService:BindToRenderStep() is required here as the default control scripts will overwrite the player's movement every frame.
To run this sample, place it inside a LocalScript parented to StarterCharacterScripts.
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
Este método causa o Humanoid para tentar caminhar para o local dado definindo as propriedades Humanoid.WalkToPoint e Humanoid.WalkToPart.
Os parâmetros de localização e peça correspondem ao que e serão definidos.
Se o parâmetro parte for especificado, o Humanoid ainda tentará caminhar até o ponto.No entanto, se a peça se mover, então o ponto Humanoid que está caminhando para será movido para a mesma posição em relação à peça .Se o parâmetro parte não for especificado, então a posição para a qual a Humanoid não mudará.
O estado de alcançar o objetivo do robô humano expirará após 8 segundos se não alcançar seu objetivo.Isso é feito para que NPCs não fiquem presos esperando Humanoid.MoveToFinished para Iniciar / executar.Se você não quiser que isso aconteça, você deve chamar repetidamente MoveTo para que o tempo limite continue sendo reiniciado.
MoveTo() termina se alguma das seguintes condições se aplicar:
O personagem chega ao seu destino. Existe um limite de ~1 stud para contabilizar várias velocidades e taxas de quadros humanóides.
O personagem fica preso e o cronômetro de oito segundos expira.
O valor de qualquer 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 .
O BasePart para definir Humanoid.WalkToPart para.
Devolução
Amostras de código
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
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
Este método remove todos os Accessory objetos usados pelo pai do humanoide. Para o jogador Characters, isso removerá todos os chapéus e outros acessórios.
Este método remove o objeto Accessory por chamar Instance:Destroy() sobre eles, significando que o Parent dos acessórios está definido como nil e bloqueado.
Veja também Humanoid:AddAccessory() para anexar um Accessory e Humanoid:GetAccessories() para obter todos os objetos Accessory pertencentes a um Humanoid .
Devolução
Amostras de código
This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.
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 parte de membro R15/Rthro em um Humanoide por uma parte diferente. A parte é automaticamente escalada como normal.
Este método é útil para modificar personagens durante o jogo ou construir personagens a partir de um rig / plataforma / equipamentobase.O método relacionado GetBodyPartR15 pode ser útil ao usar este método.
O nome da peça passada deve coincidir com o 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
Este método define se um determinado Enum.HumanoidStateType é habilitado para o Humanoid.Quando um determinado Enum.HumanoidStateType é desativado, o Humanoid nunca pode entrar nesse estado.Isso é verdade independentemente se a tentativa de alterar o estado for feita usando Humanoid:ChangeState() ou código interno do Roblox Humanoid.
Observe que usar SetStateEnabled() no servidor não replica a alteração para o cliente, nem vice-versa.
Parâmetros
O Enum.HumanoidStateType a ser ativado ou desativado.
true se state for habilitado, false se state for desativado.
Devolução
Amostras de código
The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.
To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
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
Este método reduz o do pelo valor dado se não for protegido por um
Este método aceita valores negativos para o parâmetro quantidade.Isso aumentará o humanoide de Humanoid.Health.No entanto, isso só terá efeito se não houver ForceField presente.
Como os ForceFields protegem contra Tomar Dano
Um Humanoid é considerado protegido por um ForceField se um ForceField atender a um dos seguintes critérios:
Para causar dano a um Humanoid independentemente de qualquer ForceFields presente, defina Humanoid.Health diretamente.
Para mais informações sobre como ForceFields proteger Humanoids veja a página ForceField.
Parâmetros
O dano, ou quantia a ser deduzida do Humanoid.Health .
Devolução
Amostras de código
This code, put in a LocalScript, would make the local player take 99 damage only if a ForceField wasn't present.
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
Este método desequipa qualquer Tool atualmente equipado pelo Humanoid
O desequipado Tool será pai do Backpack do Player associado ao Humanoid .
Se nenhum Tool for equipado, este método não fará nada.
Embora Tools possa ser equipado por NPCs (Personagens Não Jogadores), este método só funciona em Humanoids com um correspondente Player.Isso porque um objeto Backpack é necessário para parenter o desequipado Tool para.
Veja também:
- Para equipar um Tool, use Humanoid:EquipTool()
Devolução
ApplyDescription
Este método de cedência faz com que a aparência do personagem corresponda à do passado em HumanoidDescription .Uma cópia do passado HumanoidDescription é armazenada como o HumanoidDescription para o Humanoid .
Este método é otimizado através da suposição de que apenas este método é usado para alterar a aparência do personagem e nenhuma alteração é feita por meio de outros meios entre as chamadas.Se forem feitas alterações no personagem entre as chamadas, então esse método pode não fazer o personagem refletir o passado em HumanoidDescription com precisão.Se você quiser usar esse método em conjunto com outros meios de atualizar o personagem, Humanoid:ApplyDescriptionReset() sempre garantirá que o personagem reflita o passado em HumanoidDescription.
Veja também
- Humanoid:GetAppliedDescription() que retorna o HumanoidDescription atualmente aplicado ao humanoide.
- 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 da entidade de roupa passada no lado do servidor.
- Player:LoadCharacterWithHumanoidDescription() que gera um jogador com o visual do passado em HumanoidDescription .
Parâmetros
A instância HumanoidDescription que você deseja definir para que o personagem conferir.
Devolução
ApplyDescriptionReset
Este método de cedência faz com que a aparência do personagem corresponda à do passado em HumanoidDescription, mesmo após alterações externas.Uma cópia do passado HumanoidDescription é armazenada como o HumanoidDescription para o Humanoid .
Este método sempre garantirá que o personagem reflita o passado em HumanoidDescription, mesmo que alterações tenham sido feitas ao personagem não usando o sistema HumanoidDescription (por exemplo, não usando ApplyDescriptionReset() ou ApplyDescription() ).Isso contrasta com ApplyDescription() que é otimizado e pode aplicar incorretamente um HumanoidDescription se o personagem foi alterado por meios diferentes do sistema HumanoidDescription.
Parâmetros
A instância HumanoidDescription que você deseja definir para que o personagem conferir.
Devolução
PlayEmote
Se o emote não puder ser reproduzido porque o emoteName não é encontrado na Descrição Humanoide, este método dará um erro.O método retornará verdadeiro para indicar que o emote foi tocado com sucesso.
Parâmetros
nome do emote para jogar.
Devolução
reproduzido com sucesso.
Eventos
Climbing
Incêndios quando a velocidade em que um Humanoid está subindo muda.
Humanoids pode escalar escadas feitas de Parts ou TrussParts.
Humanoids escalar em 70% de seu Humanoid.WalkSpeed .
Este evento não sempre disparará 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 dispara quando o Humanoid morre, geralmente quando Humanoid.Health atinge 0.Isso pode ser causado por desconectar sua cabeça de seu Humanoid.Torso ou definir diretamente a propriedade de saúde.
Este evento só dispara se o Humanoid for um descendente do Workspace. Se o Dead``Enum.HumanoidStateType estiver desativado, não Iniciar / executar.
Amostras de código
The code below would print the player's name, followed by "has died!", whenever a player dies. For example, if the player was named "Shedletsky", "Shedletsky has died!" would be printed to the output when they died.
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 após o estado FallingDown ser habilitado.Quando isso acontece, este evento disparará com um valor ativo de falso e Humanoid.GettingUp disparará com um valor ativo de verdadeiro .
Parâmetros
FreeFalling
Este evento dispara quando o Humanoid entra ou sai do Freefall``Enum.HumanoidStateType.
O parâmetro ativo representa se o Humanoid está entrando ou saindo do estado Freefall.
Embora o estado Freefall geralmente termine quando o Humanoid chegar ao chão, este evento pode disparar com ativo igual a falso se o estado for alterado enquanto o Humanoid está caindo.Por esse motivo, você deve usar Humanoid.StateChanged e ouvir o estado Landed quando um Humanoid tiver desembarcado.
Parâmetros
GettingUp
Este evento dispara quando o Humanoid entra ou sai do estado Enum.HumanoidStateType.GettingUp , um estado de transição que é ativado pouco depois que o Humanoid entra nos estados FallingDown (3 segundos) ou Ragdoll (1 segundo).
Quando um Humanoid tenta se recuperar, este evento primeiro disparará com um active parâmetro de true antes de disparar novamente com um active parâmetro de false .
Para forçar um Humanoid cair, use a função Humanoid:ChangeState() com Enum.HumanoidStateType.FallingDown.
Parâmetros
HealthChanged
Este evento dispara quando as alterações de Humanoid.Health mudam.No entanto, não disparará se a saúde estiver aumentando a partir de um valor igual ou maior que o Humanoid.MaxHealth.
Quando Humanoid.Health atinge 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
The following example determines the change in health, printing it to the output. It will only work in a LocalScript.
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)
This code sample allows you to create a simple color-changing health bar using two nested Frames. Paste this into a LocalScript on the inner frame.
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 dispara quando o Humanoid entra e sai do Jumping``Enum.HumanoidStateType.
Quando um pulo Humanoid ocorre, este evento dispara com um parâmetro active de true antes de disparar novamente em breve com um parâmetro active de false.Este segundo disparo não corresponde a um pouso Class.Humanoid``Landed usando Enum.HumanoidStateType``Class.Humanoid.StateChanged .
Você pode desativar o pulo usando a função Humanoid:SetStateEnabled().
Parâmetros
MoveToFinished
Este evento dispara quando o Humanoid termina de caminhar até um objetivo declarado pelas propriedades Humanoid.WalkToPoint e Humanoid.WalkToPart.
As propriedades Humanoid.WalkToPoint e Humanoid.WalkToPart podem ser definidas individualmente ou usando a função Humanoid:MoveTo().
Se o Humanoid alcançar seu objetivo dentro de 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 o alcançado será falso.Este tempo limite pode ser redefinido ao chamar Humanoid:MoveTo() novamente dentro do período de tempo limite.
Parâmetros
Amostras de código
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
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 dispara quando o Humanoid entra ou sai do PlatformStanding``Enum.HumanoidStateType.
Enquanto o Humanoid está no estado PlatformStanding, a propriedade Humanoid.PlatformStand será verdadeira.
Enquanto Humanoid.PlatformStand é definido como verdadeiro, o Humanoid não poderá se movimento. Para mais informações, consulte a página para Humanoid.PlatformStand .
O PlatformStand Enum.HumanoidStateType foi associado à parte agora desativada Platform. Apesar disso, ainda pode ser usada por desenvolvedores.
Parâmetros
Ragdoll
Este evento dispara quando o Humanoid entra ou sai do Ragdoll``Enum.HumanoidStateType.
O parâmetro active terá o valor true ou false para indicar entrar ou sair.
Use Humanoid:SetStateEnabled() para desativar o estado de Obter para permanecer no estado Ragdoll.
Veja também:
- Humanoid.FallingDown para o evento Humanoid conectado com o estado FallingDown, que se comporta de forma semelhante ao Ragdoll
Parâmetros
Running
Este evento dispara quando a velocidade em que um Humanoid está executando alterações muda.
Ao executar Humanoids cobertura, em média, seus Humanoid.WalkSpeed em studs por segundo.
Quando o Humanoid parar de executar este evento disparará 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á rodando usando o evento Humanoid.StateChanged
Parâmetros
Amostras de código
Demonstrates connecting to the Humanoid.Running event. The event is connected to every player's humanoid that joins.
The function connected will print whether or not the humanoid is running based on the speed.
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 dispara quando um Humanoid está sentado ou se levanta de um Seat ou VehicleSeat.
Quando um personagem entra em contato com um assento, eles são anexados ao assento e uma animação de sentar é reproduzida.Para mais informações sobre isso, veja a página Seat .
- Se o personagem estiver sentado, o parâmetro active será verdadeiro e currentSeatPart será o assento em que eles estão sentados no momento.
- Se o personagem se levantou de um assento, o parâmetro active será falso e currentSeatPart será nil.
Veja também:
- Humanoid.Sit , o que indica se um Humanoide está sentado no momento
- Humanoid.SeatPart , que indica o assento em que um Humanoide está sentado no momento, se algum.
Parâmetros
Amostras de código
This code sample demonstrates when the local player's Character sits down or stands up. It should be placed inside a LocalScript within StarterCharacterScripts in order to run when the player's character spawns in.
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 dispara quando o estado do Humanoid é alterado.
Como não há estado "inativo" de humanoide, você deve usar o evento Humanoid.Running em vez disso ou ouvir a parte RootPart do Velocity para descobrir quando o Humanoid está parado.
Veja também
- Humanoid:GetState() e Humanoid:ChangeState() para obter e definir o estado.
- Humanoid:SetStateEnabled() para habilitar e desabilitar estados específicos.
Parâmetros
O digitarde estado anterior do humanóide.
O digitarde estado atual do humanoide.
Amostras de código
Emite partículas do jogador local de Player.Character quando eles saltam. Para tentar este exemplo de código, coloque-o dentro de um LocalScript pai para StarterCharacterScripts .
local character = script.Parent
local primaryPart = character.PrimaryPart
-- criar particulas
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
-- ouvir o estado humanoide
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)
The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.
To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
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 na questão junto com um bool que indica se esse estado está agora ativado.
Veja também:
- Para encontrar se um estado está atualmente habilitado, use Humanoid:GetStateEnabled()
- Para ouvir mudanças de estado Humanoid use Humanoid.StateChanged
Parâmetros
O Enum.HumanoidStateType para o qual o estado ativado foi alterado.
Verdadeiro se o estado estiver agora ativado.
Amostras de código
When a humanoid state changes for the Players.LocalPlayer, the code below prints whether the state has been enabled or disabled.
This code should work as expected when placed in a LocalScript.
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á desviando e não deve ser usado por desenvolvedores
Este evento é disparado quando o Humanoid entra ou sai do StrafingNoPhysics``Enum.HumanoidStateType.
Quando o Humanoid entra no estado StrafingNoPhysics este evento será disparado com um parâmetro ativo de verdadeiro.O evento disparará novamente com ativo igual a falso quando o Humanoid deixar o estado StrafingNoPhysics.
Este evento está associado ao estado e não dispara quando o não estiver se movendo perpendicular à direção que está enfrentando.Este estado está atualmente inutilizado, se for definido usando Humanoid:ChangeState() o estado voltará para RunningNoPhysics.
Parâmetros
Swimming
Este evento dispara quando a velocidade em que um Humanoid nada na água muda para Terrain.
Humanoids nade em 87.5% de seu Humanoid.WalkSpeed .
Este evento não sempre disparará 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 dispara quando um dos membros do humanoide entra em contato com outro BasePart.O BasePart que a extremidade está tocando, juntamente com a própria extremidade, é dado.
Este evento não disparará quando membros pertencentes ao Humanoid entrarem em contato com eles mesmos.
Alternativas
Embora o evento Humanoid.Touched seja útil, você deve considerar se existem alternativas que melhor atendam às suas necessidades.
- Na maioria dos casos, é aconselhável conectar um evento de interesse em vez disso, pois o evento disparará constantemente quando o humanoide estiver se movendo.Por exemplo, em um jogo de dodgeball, seria mais prático conectar um evento Touched para as bolas ao invés de usar Humanoid.Touched.
- Ao tentar descobrir quando o Humanoid desembarcou no chão, o evento Humanoid.StateChanged é mais adequado.Alternativamente, você pode verificar Humanoid.FloorMaterial para ver se o humanoide está em pé em qualquer material não-ar.
Notas
- Conectar a este evento causará a criação de um TouchTransmitter em cada membro.
- Não há atualmente equivalente a BasePart.TouchEnded para Humanoids.
Parâmetros
Amostras de código
When placed inside a Player.Character model this code will give a player the 'Midas touch'. Everything their character touches will change to gold.
When the Humanoid dies, this change is undone and the golden BasePart|BaseParts are returned to their original state.
To test this out, place this code inside a Script and place it in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
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)