Humanoid

Mostrar obsoleto

*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

Walking Camera Bobble Effect

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

Métodos

Eventos

Propriedades

AutoJumpEnabled

Ler Parallel

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

Auto-Jump Toggle

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

Ler Parallel

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çãoComportamentoConteúdo

Amostras de código

AutoRotate Button

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

Ler Parallel

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

Ler Parallel

Determina se as juntas do humanóide são quebradas quando no estado Enum.HumanoidStateType.Dead . Padrões para verdadeiro.

CameraOffset

Ler Parallel

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

Walking Camera Bobble Effect

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)
Ler Parallel

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

Displaying a Humanoid's Health and Name

local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100

DisplayName

Ler Parallel

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

Ler Parallel

FloorMaterial

Somente leitura
Não replicado
Ler Parallel

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

Não replicado
Ler Parallel

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

Ler Parallel

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.

Ler Parallel

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

Ler Parallel

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

Não replicado
Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Limiting The Slope a Humanoid Can Walk Up

local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30

MoveDirection

Somente leitura
Não replicado
Ler Parallel

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

Walking Camera Bobble Effect

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

Ler Parallel

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

Ler Parallel

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

Occlude Player Names

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

Ler Parallel

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

Ler Parallel

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.

Ler Parallel

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

Somente leitura
Não replicado
Ler Parallel

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

Somente leitura
Não replicado
Ler Parallel

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:

Sit

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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

Ler Parallel

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.
  • A velocidade em que o Humanoid está atualmente andando pode ser obtida usando o evento Running.

WalkToPart

Ler Parallel

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

Ler Parallel

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

Humanoid MoveTo Without Time out

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

void

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

accessory: Instance

O Accessory a ser anexado.


Devolução

void

Amostras de código

[Humanoid] AddAccessory Example

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

void

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

void

Amostras de código

Lua Port of BuildRigFromAttachments

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)
R15 Package Importer

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

void

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:

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.

Valor Padrão: "None"

Devolução

void

Amostras de código

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

void

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 then
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local tool = workspace:FindFirstChild("Tool")
if tool then
humanoid:EquipTool(tool)
end
end
end

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:

Parâmetros

tool: Instance

O Tool para equipar.


Devolução

void

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

Um array de Accessory objetos que são filhos do pai do humanóide.

Amostras de código

Remove Accessories After Loading

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


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

part: Instance

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 R15
print(humanoid:GetLimb(character.LeftUpperLeg)) -- Entrada.Limb.LeftLeg
print(humanoid:GetLimb(character.LeftLowerLeg)) -- Entrada.Limb.LeftLeg
print(humanoid:GetLimb(character.LeftFoot)) -- Entrada.Limb.LeftLeg
-- Para R6
print(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

part: Instance

O Part para o qual o Enum.Limb será recuperado.


Devolução

O Enum.Limb a peça correspondente.

Amostras de código

Getting a Humanoid's Limbs

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

GetMoveVelocity


Devolução

Escrever Parallel

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

Amostras de código

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

Escrever Parallel

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:

Parâmetros


Devolução

Se o Enum.HumanoidStateType dado é habilitado.

Amostras de código

Setting and Getting Humanoid States

local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false

Move

void

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

moveDirection: Vector3

A direção para caminhar.

relativeToCamera: bool

Definido para true se o parâmetro moveDirection deve ser considerado relativo à CurrentCamera.

Valor Padrão: false

Devolução

void

Amostras de código

Moving a Humanoid Forwards

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

void

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:

Parâmetros

location: Vector3

A posição para definir Humanoid.WalkToPoint para.

part: Instance

O BasePart para definir Humanoid.WalkToPart .

Valor Padrão: "nil"

Devolução

void

Amostras de código

Humanoid MoveTo Without Time out

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

void

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

void

Amostras de código

Remove Accessories After Loading

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á.

part: BasePart

O Class.Part``Class.Instance que será pai do personagem.


Devolução

SetStateEnabled

void

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.

enabled: bool

true se state for ativado, false se 0> state0> for desativado.


Devolução

void

Amostras de código

Jump Cooldown

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

void

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

amount: number

O dano, ou quantidade a ser deduzida do Humanoid.Health .


Devolução

void

Amostras de código

Damaging a Humanoid

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

void

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:


Devolução

void

Amostras de código

Unequip Tool Keybind

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

void
Rendimentos

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

Parâmetros

humanoidDescription: HumanoidDescription

A instância HumanoidDescription que você deseja configurar para que o personagem seja conferir.

assetTypeVerification: Enum.AssetTypeVerification
Valor Padrão: "Default"

Devolução

void

ApplyDescriptionReset

void
Rendimentos

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

humanoidDescription: HumanoidDescription

A instância HumanoidDescription que você deseja configurar para que o personagem seja conferir.

assetTypeVerification: Enum.AssetTypeVerification
Valor Padrão: "Default"

Devolução

void

PlayEmote

Rendimentos

Se a emoção não pôde ser jogada porque o emoteName não é encontrado na Descrição Humanoide, esta API retornará um erro. A API retornará true para indicar que a emoção foi jogada com sucesso.

Parâmetros

emoteName: string

nome do emote para jogar.


Devolução

jogado com sucesso.

Eventos

ApplyDescriptionFinished

Parâmetros

description: HumanoidDescription

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:

Parâmetros

speed: number

A velocidade em que o Humanoid está atualmente escalando.


Amostras de código

Humanoid.Climbing

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

Humanoid.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 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

active: bool

Descreve se o Humanoid está entrando ou saindo do FallingDown``Enum.HumanoidStateType .


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

active: bool

Se o Humanoid está entrando ou saindo do Freefall``Enum.HumanoidStateType.


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

active: bool

Se o Humanoid está entrando ou saindo do GettingUp``Enum.HumanoidStateType.


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

health: number

O novo valor de Humanoid.Health .


Amostras de código

Humanoid.HealthChanged

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)
Health Bar

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

active: bool

Se o Humanoid está entrando ou saindo do Jumping``Enum.HumanoidStateType.


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

reached: bool

UmBooleano indicando se o Humanoid alcançado é o objetivo. Verdadeiro se o Humanoid alcançado for seu objetivo, 2> falso2> se a caminhada expirou antes que o objetivo pudesse ser alcançado.


Amostras de código

Humanoid MoveTo Without Time out

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

active: bool

Se o Humanoid está entrando ou saindo do PlatformStanding``Enum.HumanoidStateType .


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:

Parâmetros

active: bool

Se o Humanoid está entrando ou saindo do Ragdoll``Enum.HumanoidStateType .


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:

Parâmetros

speed: number

A velocidade em que o Humanoid está sendo executado.


Amostras de código

Humanoid Running

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

active: bool

Verdadeiro se o Humanoid estiver sentado.

currentSeatPart: BasePart

O assento que o Humanoid está sentado se estiver sentado.


Amostras de código

Finding a Player's Seat

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

Parâmetros

O digitarde estado anterior do humanóide.

O digitarde estado atual do humanóide.


Amostras de código

Jumping Particles

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)
Jump Cooldown

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:

Parâmetros

O Enum.HumanoidStateType para o qual o estado ativado foi alterado.

isEnabled: bool

Verdadeiro se o estado agora estiver ativado.


Amostras de código

Humanoid State Change Detector

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

active: bool

Se o Humanoid está entrando ou saindo do StrafingNoPhysics``Enum.HumanoidStateType .


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:

Parâmetros

speed: number

A velocidade em que Humanoid está nadando atualmente.


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.

Notas

Parâmetros

touchingPart: BasePart

O BasePart que Humanoid entrou em contato.

humanoidPart: BasePart

O limbo do Humanoid que foi tocado.


Amostras de código

Midas Touch

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)