Humanoid

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

El humanoide es un objeto especial que le da a los modelos la funcionalidad de un personaje.Otorga al modelo la capacidad de caminar físicamente y interactuar con varios componentes de una experiencia de Roblox.Los humanoides siempre se crían dentro de un Model , y se espera que el modelo sea una combinación de BasePart y Motor6D ; la parte raíz de la combinación se espera que se llame HumanoidRootPart .También espera que una parte llamada Head se conecte a la parte del torso del personaje, directa o indirectamente.Por defecto, hay dos tipos oficiales de rigs de personajes suministrados por Roblox, cada uno con su propio conjunto de reglas:

R6

  • Un rig de personaje básico que utiliza 6 partes para las extremidades.
  • La parte Head debe ser adjunta a una parte llamada Torso o el Humanoide morirá inmediatamente.
  • Las apariencias de las partes del cuerpo se aplican usando objetos CharacterMesh.
  • Ciertas propiedades, como Humanoid.LeftLeg y Humanoid.RightLeg, solo funcionan con R6.

R15

  • Más complejo que R6, pero también mucho más flexible y robusto.
  • Usa 15 partes para extremidades.
  • La parte Head debe ser adjunta a una parte llamada UpperTorso o el Humanoide morirá inmediatamente.
  • Las apariencias de BodyPart tienen que ser ensambladas directamente.
  • Se puede escalar dinámicamente usando objetos especiales NumberValue dentro del Humanoide.
  • El humanoide creará automáticamente objetos Vector3Value llamados OriginalSize dentro de cada extremidad.
  • Si un valor numérico es padre dentro del humanoide y se llama uno de los siguiendo, se usará para controlar la funcionalidad de escalado:
    • Escala de profundidad del cuerpo
    • Escala de altura del cuerpo
    • Escala de ancho del cuerpo
    • Escala de cabeza

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

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)

Resumen

Propiedades

Métodos

Eventos

Propiedades

AutoJumpEnabled

Leer paralelo

AutoJumpEnabled establece si el Humanoid intentará automáticamente saltar sobre un obstáculo al que se dirige.

Actualmente, esta propiedad solo funciona cuando las siguientes condiciones son ciertas:

  • El modelo de personaje del humanoide es el Player.Character de un Player.
  • El jugador en cuestión está usando controles táctiles.

Cuando se genera el personaje de un jugador, el valor de la propiedad coincide con la propiedad del jugador Player.AutoJumpEnabled - que a su vez coincide con la propiedad StarterPlayer.AutoJumpEnabled.

Muestras de código

Este ejemplo de código está destinado a un TextButton. Permite al jugador alternar el comportamiento de salto automático mientras está en un dispositivo móvil.

Alternar salto automático

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Texto del botón de actualización
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflejar la propiedad en el personaje del jugador, si tiene uno
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Alternar salto automático
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Actualizar todo lo demás
update()
end
button.Activated:Connect(onActivated)
update()

AutoRotate

Leer paralelo

La propiedad AutoRotate describe si el Humanoide girará automáticamente hacia la dirección en la que se está moviendo.Cuando se establece en verdadero, el modelo de personaje se volverá gradualmente a la dirección de movimiento del Humanoide mientras camina alrededor.Cuando se establece en falso, el modelo de personaje se mantendrá fijado en su rotación actual, a menos que se aplique una fuerza giratoria al HumanoidRootPart.

Si el modelo de personaje resulta ser el personaje de un jugador, entonces el comportamiento de la rotación del Humanoide se ve influenciado por la propiedad RotateType de UserGameSetting.

Cuando la propiedad AutoRotate está configurada como verdadera, la propiedad RotateType tiene los siguientes efectos en la rotación del Humanoide:


<th>Comportamiento</th>
<th>Contexto</th>
</tr>
</thead>
<tbody>
<tr>
<td>MovimientoRelativo</td>
<td />
<td />
</tr>
<tr>
<td>Relación de cámara</td>
<td>El personaje girará para enfrentarse en la dirección de la cámara.</td>
<td>El jugador tiene su cámara enfocada en primera persona o está en modo de bloqueo de cambio.</td>
</tr>
</tbody>
Tipo de rotación

Muestras de código

This script adds the functionality of a button to a part, which switches the AutoRotate property of whoever touches it.

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

Leer paralelo

El humanoide tiene seis valores de escala infantil, incluyendo BodyDepthScale , BodyHeightScale , BodyProportionScale , BodyTypeScale , BodyWidthScale , HeadScale .Cambiar el valor de cualquiera de estas causas hace que las partes del cuerpo y los accesorios del personaje cambien de tamaño, pero solo si AutomaticScalingEnabled es verdadero.

BreakJointsOnDeath

Leer paralelo

Determina si las articulaciones del humanoide se rompen cuando está en el estado Enum.HumanoidStateType.Dead. Se prefiere la verdad.

CameraOffset

Leer paralelo

La propiedad CameraOffset especifica un desplazamiento a la posición del sujeto de la cámara cuando su Camera.CameraSubject está establecido a este Humanoid.

El desplazamiento se aplica en el espacio del objeto, en relación con la orientación de la parte raíz humana del Humanoide HumanoidRootPart.Por ejemplo, un valor de desplazamiento Vector3 de (0, 10, 0) desplaza la cámara del jugador a 10 metros por encima del humanoide del jugador.

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

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)
Leer paralelo

La propiedad Distancia de visualización tipo controla el comportamiento de distancia del nombre y la salud del humanoide.Esta propiedad se establece usando el enum Enum.HumanoidDisplayDistanceType con tres valores disponibles, cada uno con su propio conjunto de reglas:

  • Cuando se establece en Viewer , el humanoide ve el nombre/salud de otros humanoides dentro del rango de su propio NameDisplayDistance y HealthDisplayDistance .
  • Cuando se establece en , el humanoide toma control completo sobre su propio nombre y la visualización de su salud a través de sus valores y .
  • Cuando se establece en None, el nombre y la barra de salud del humanoide no aparecen bajo ninguna circunstancia.

Vea Nombre/visualización de salud del personaje para una guía detallada sobre el control de la apariencia de los nombres de personajes y barras de salud.

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

Displaying a Humanoid's Health and Name

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

DisplayName

Leer paralelo

DisplayName es una propiedad que determina la visualización del nombre del Humanoide cuando es visible.Por defecto, un nuevo Humanoide tendrá el valor de una cadena vacía.Si DisplayName es una cadena vacía, la pantalla de nombre del humanoide se mostrará por defecto con la propiedad de nombre del padre del humanoide.

Carga del personaje del jugador

Cuando los jugadores cargan su personaje, ya sea automáticamente o a través del uso de LoadCharacter() , el Humanoide que se crea por el motor tendrá su propiedad DisplayName configurada a la propiedad del jugador DisplayName.

StarterCharacter y StarterHumanoid

Cuando un Humanoid llamado StarterHumanoid es padre de StarterPlayer , o cuando un Humanoide está presente en un Modelo llamado StarterCharacter , la propiedad DisplayName se respetará cuando los personajes se carguen por los jugadores en el juego.El motor solo anulará la propiedad DisplayName de la Humanoid con la propiedad DisplayName del jugador si la Humanoid.DisplayName de StarterHumanoid es una cadena vacía.

EvaluateStateMachine

Leer paralelo

FloorMaterial

Solo lectura
No replicado
Leer paralelo

Esta es una propiedad de solo lectura que describe el Enum.Material el Humanoid está actualmente parado en.Funciona con ambos vóxeles regulares Parts y Terrain vóxeles.

El ejemplo de código a continuación muestra cómo escuchar cuando esta propiedad cambia usando Object:GetPropertyChangedSignal() .Cuando el material en el que se encuentra el humanoide cambia, imprimirá un mensaje que indique el nuevo material en el que se está parado.


local Humanoid = route.to.humanoid
Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
print("New value for FloorMaterial: " .. tostring(Humanoid.FloorMaterial))
end)

Caveatas

  • Cuando el Humanoid no está parado en un suelo, el valor de esta propiedad se establecerá en Aire.
    • Esto ocurre porque las propiedades de Enum no pueden tener un valor vacío.
    • Esto puede causar cierta confusión si una parte tiene su material establecido en Aire, aunque en la práctica, las piezas no se supone que usen ese material en primer lugar.
  • El modelo de personaje del Humanoid debe ser capaz de colisionar con el suelo, o de lo contrario no se detectará.

Health

No replicado
Leer paralelo

Esta propiedad representa la salud actual del Humanoid.El valor se restringe al rango entre 0 y MaxHealth .Si el humanoide está muerto, esta propiedad se establece continuamente en 0.

Tenga en cuenta que la función TakeDamage() se puede usar para restar de Health en lugar de establecer la propiedad directamente.

Regeneración de salud

Por defecto, un guión de regeneración de salud pasiva se inserta automáticamente en los humanoides.Esto hace que los personajes no muertos del jugador se regeneren 1% de MaxHealth cada segundo.Para deshabilitar este comportamiento de regeneración, agregue un vacío Script llamado Salud a StarterCharacterScripts .

Mostrador de barra de salud

Cuando Health es menos de MaxHealth, se muestra una barra de salud en la experiencia.El comportamiento de visualización de la barra de salud depende de la HealthDisplayDistance y HealthDisplayType.

Vea Nombre/visualización de salud del personaje para una guía detallada sobre el control de la apariencia de los nombres de personajes y barras de salud.

Muerte

Cuando el valor de la salud del personaje llega a 0, el Humanoid transita automáticamente al estado Enum.HumanoidStateType.Dead.En este estado, Health está bloqueado a 0; sin embargo, no hay error o advertencia por establecer el Health de un humanoide muerto a un valor positivo no nulo.

HealthDisplayDistance

Leer paralelo

Esta propiedad es un número que se utiliza junto con la propiedad DisplayDistanceType para controlar la distancia desde la cual se puede ver la barra de salud de un humanoide.

Vea Nombre/visualización de salud del personaje para una guía detallada sobre el control de la apariencia de los nombres de personajes y barras de salud.

Leer paralelo

Esta propiedad controla cuándo se permite mostrar la barra de salud de un humanoide.Por defecto, esta propiedad se establece en DisplayWhenDamaged , lo que hace que la barra de salud solo se muestre cuando el humanoide Health tenga menos de su MaxHealth .También se puede configurar en AlwaysOn , lo que hace que la barra de salud siempre se muestre, o AlwaysOff , lo que impide que nunca se muestre.

Tenga en cuenta que esta propiedad funciona de forma independiente de la propiedad humanoide HealthDisplayDistance que es responsable de hacer desaparecer la barra de salud a ciertas distancias.Si Humanoid.HealthDisplayType|HealthDisplayType está configurado a AlwaysOn, aún se desvanecerá dependiendo de cómo se haya configurado HealthDisplayDistance.

Vea Nombre/visualización de salud del personaje para una guía detallada sobre el control de la apariencia de los nombres de personajes y barras de salud.

HipHeight

Leer paralelo

Determina la distancia (en studs) fuera del suelo que el RootPart debería estar cuando el humanoide esté de pie.El RigType influye en la forma en que se comporta esta propiedad.

Para las plataformas R15, una altura de cadera adecuada se predetermina para garantizar que la altura del RootPart sea correcta.No se usa la altura de las piernas.La altura total del humanoide se puede describir en la siguiente fórmula:


Height = (0.5 * RootPart.Size.Y) + HipHeight

Para los equipos R6, HipHeight en cambio describe un desplazamiento relativo. La altura total del humanoide se puede describir en la siguiente fórmula:


Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
No replicado
Leer paralelo

Si true , los saltos Humanoid saltan con una fuerza hacia arriba igual al valor de Humanoid.JumpPower o la altura de Humanoid.JumpHeight , dependiendo del valor de Humanoid.UseJumpPower .

JumpHeight

Leer paralelo

Proporciona control sobre la altura de los saltos Humanoid en studs.El valor inicial de esta propiedad se determina por el valor de StarterPlayer.CharacterJumpHeight que se establece por defecto en 7.2.

Aunque establecer esta propiedad a 0 evitará efectivamente que el humanoide salte, se recomienda deshabilitar el salto desactivando el estado Enum.HumanoidStateType.Jumping a través de Humanoid:SetStateEnabled().

Esta propiedad solo es visible en la ventana Propiedades si Humanoid.UseJumpPower está configurada como falsa , ya que de lo contrario no sería relevante (en su lugar, se usa Humanoid.JumpPower).

JumpPower

Leer paralelo

Determina cuánta fuerza hacia arriba se aplica al Humanoid al saltar.El valor inicial de esta propiedad se determina por el valor de StarterPlayer.CharacterJumpPower que se establece en 50 y se ve limitado entre 0 y 1000.Tenga en cuenta que los saltos también se ven influenciados por la propiedad Workspace.Gravity que determina la aceleración debida a la gravedad.

Aunque establecer esta propiedad a 0 evitará efectivamente que el humanoide salte, se recomienda deshabilitar el salto desactivando el estado Enum.HumanoidStateType.Jumping a través de Humanoid:SetStateEnabled().

Esta propiedad solo es visible en la ventana Propiedades si Humanoid.UseJumpPower está configurada como verdadera , ya que de lo contrario no sería relevante (en su lugar, se usa Humanoid.JumpHeight).

MaxHealth

Leer paralelo

El valor máximo de un humanoide de Health .

El valor de esta propiedad se usa junto con la propiedad Health para dimensionar la pantalla de barra de salud predeterminada.Cuando el bar de salud de un humanoide Health llega a MaxHealth, su barra de salud puede no ser mostrada, dependiendo de su propiedad HealthDisplayType.

MaxSlopeAngle

Leer paralelo

Esta propiedad determina el ángulo de pendiente máximo que un humanoide puede escalada.Si el ángulo de una pendiente es mayor que el ángulo máximo de pendiente de un humanoide, deslizarán por la pendiente.

Cuando un personaje se genera, esta propiedad se establece de acuerdo con el valor de StarterPlayer.CharacterMaxSlopeAngle .

El valor de esta propiedad está restringido a valores entre 0° y 89°.Por defecto es de 89°, por lo que los humanoides pueden escalar prácticamente cualquier pendiente que deseen de forma predeterminada.

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

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

Solo lectura
No replicado
Leer paralelo

MoveDirection es una propiedad de lectura solo que describe la dirección en la que Humanoid camina, como un vector de unidad o fuerza vectorialde longitud cero.La dirección se describe en el espacio mundial.

Debido a que esta propiedad es solo de lectura, no se puede establecer por un Script o LocalScript.

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

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

Leer paralelo

La propiedad Distancia de visualización del nombre es un número que se utiliza en conjunción con la propiedad Humanoid.DisplayDistanceType para controlar la distancia desde la cual se puede ver el nombre de un humanoid.

Vea Nombre/visualización de salud del personaje para una guía detallada sobre el control de la apariencia de los nombres de personajes y barras de salud.

NameOcclusion

Leer paralelo

Controla si el nombre y la barra de salud de un humanoide se pueden ver detrás de paredes u otros objetos.Esta propiedad es un valor Enum.NameOcclusion y se puede configurar para excluir todos los nombres, nombres enemigos o desactivar la occlusión por completo.

En casos donde el LocalPlayer no tiene ninguna Humanoid asociada con él, esta propiedad se aplica en cambio al sujeto Humanoid.

Vea Nombre/visualización de salud del personaje para una guía detallada sobre el control de la apariencia de los nombres de personajes y barras de salud.

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

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

Leer paralelo

Determina si el Humanoid está actualmente en el estado Enum.HumanoidStateType.PlatformStanding.Cuando es verdadero, el humanoide está en un estado en el que cae libremente y no puede herramienta de movimiento.Este estado se comporta de manera similar a sentarse, excepto que saltar no libera al humanoide del estado.

RequiresNeck

Leer paralelo

Permite a los desarrolladores deshabilitar el comportamiento donde un jugador Character|character muere si se elimina o desconecta el cuello Motor6D incluso por un momento.Esta propiedad se predetermina como verdadera.

Leer paralelo

Tipo de rig describe si un Humanoid está utilizando el antiguo carácter de personaje R6 o el nuevo carácter de personaje R15.

El rig R6 usa 6 visibles Parts mientras que el rig R15 usa 15 visibles Parts .Los equipos R15 tienen más articulaciones que los equipos R6, lo que los hace mucho más versátiles al ser animados.

Tenga en cuenta que si esta propiedad se establece incorrectamente, el Humanoid no funcionará correctamente.Por ejemplo, si el Tipo de rig de un humanoide R15 está configurado como R6, el Humanoid morirá ya que no hay ningún BasePart llamado Torso conectado a un BasePart llamado Cabeza .

RootPart

Solo lectura
No replicado
Leer paralelo

Una referencia al objeto HumanoidRootPart del humanoide, la parte motriz de raíz del Humanoid que controla el movimiento de un humanoide a través del mundo 3D.Esta parte es normalmente invisible.

Para los personajes R15, Model.PrimaryPart del modelo Player.Character se establece en HumanoidRootPart .

Para los personajes R6, Model.PrimaryPart se establece en la parte Head .

SeatPart

Solo lectura
No replicado
Leer paralelo

SeatPart es una referencia al asiento en el que un Humanoid está sentado actualmente, si es que hay alguno.El valor de esta propiedad puede ser un Seat o un VehicleSeat.Será nulo si el Humanoide no está sentado actualmente en un asiento.

Nota:

Leer paralelo

La propiedad Sit es un booleano que indica si el Humanoid está sentado actualmente.Humanoids se puede forzar a un estado de inactividad al establecer el valor de esta propiedad en verdadero.Si el Humanoid no está adjunto a un asiento mientras está en su estado de reposo, se tropezará sin colisión en sus piernas.Un Humanoid puede escapar del estado de sentado al saltar.

Nota:

TargetPoint

Leer paralelo

No use Esta propiedad solo funciona con el modo experimental habilitado, que se ha descontinuado por completo.

Esta propiedad describe una posición 3D en el espacio donde el Player controla este Humanoid último clicado con un Tool equipado.

Esta propiedad es utilizada principalmente por herramientas clásicas para determinar a qué está apuntando un humanoide cuando activa una herramienta.Si le das a un NPC un lanzador de cohetes clásico, establece su punto de destino , y luego llama la función Tool:Activate() del instrumento, puedes hacer que el NPC dispare un cohete al punto de destino.

UseJumpPower

Leer paralelo

Cuando un personaje se genera, esta propiedad se establece de acuerdo con el valor de StarterPlayer.CharacterUseJumpPower que se establece como verdadero por defecto.

Al saltar, con este valor establecido en verdad, el valor Humanoid.JumpHeight se usa para garantizar los saltos humanoides a esa altura.Con esto establecido en falso, el valor Humanoid.JumpPower se usa para aplicar una fuerza ascendente.

WalkSpeed

Leer paralelo

Esta propiedad describe qué tan rápido puede caminatael Humanoid en studs por segundo.Por defecto, toma el valor de StarterPlayer.CharacterWalkSpeed (16), lo que significa que un personaje de jugador puede mover 16 tachuelas en cualquier dirección cada segundo.

Notas

  • Cuando se controla en un dispositivo móvil o un controlador para juego, un humanoide puede caminar más lento que su WalkSpeed si el joystick de control se mueve solo un grado gradual desde el centro.
  • Puedes congelar a un humanoide en el lugar al establecer WalkSpeed a 0; esto evita que el jugador controlador lo mueva a través de los mecanismos de movimiento predeterminados.
  • El guión de animación predeterminado escala las animaciones de movimiento de un humanoide en función de la velocidad a la que se mueve en relación con la velocidad predeterminada de 16 pines/segundo.
  • La velocidad a la que el Humanoid está caminando actualmente se puede obtener usando el evento Running.

WalkToPart

Leer paralelo

WalkToPart es una referencia a una parte que el Humanoide está tratando de alcanzar.Esta propiedad se establece normalmente cuando una parte se pasa como el segundo argumento de la función Humanoid:MoveTo() del Humanoide.

Cuando WalkToPart está configurado y un humanoide está tratando activamente de llegar a la parte, mantendrá actualizando su objetivo Vector3 para ser la posición de la parte, más el Humanoid.WalkToPoint traducido en el espacio del objeto en relación con la rotación de la parte.

Esto se puede describir en Luau como:


goal = humanoid.WalkToPart.CFrame:pointToObjectSpace(humanoid.WalkToPoint)

Caveatas

  • Establecer el valor de WalkToPart no es suficiente para hacer que un humanoide comience a seguir una parte.
  • Al humanoide se le solicita que comience a intentar alcanzar un objetivo cuando el valor de WalkToPoint se cambia.
  • Esto puede cambiarse en el futuro.
  • El estado de objetivo alcanzado de un humanoide expirará después de 8 segundos si no alcanza su objetivo.
  • Esto se hace para que los NPCs no se queden atascados esperando a que Humanoid.MoveToFinished desencadenar.
  • Si no quieres que esto suceda, deberías llamar repetidamente a MoveTo para que el tiempo de espera siga reiniciándose.

WalkToPoint

Leer paralelo

WalkToPoint describe la posición 3D en el espacio que un humanoide está tratando de alcanzar, después de que se le haya solicitado que lo haga la función Humanoid:MoveTo() del Humanoide.

Si el Humanoid.WalkToPart de un humanoide está establecer, el objetivo se establece transformando WalkToPoint en relación con la posición y rotación de las piezas.Si WalkToPart no está establecer, el humanoide intentará llegar a la posición 3D especificada por WalkToPoint directamente.

Caveatas

  • El valor de WalkToPoint debe cambiarse a un valor diferente para que el humanoide empiece a caminar hacia él.
  • Si quieres hacer un paseo humanoide a 0,0,0 , deberías usar la función MoveTo del humanoide.
  • Esto puede cambiarse en el futuro.
  • El estado de objetivo alcanzado de un humanoide expirará después de 8 segundos si no alcanza su objetivo.
  • Esto se hace para que los NPCs no se queden atascados esperando a que Humanoid.MoveToFinished desencadenar.
  • Si no quieres que esto suceda, deberías llamar repetidamente a MoveTo para que el tiempo de espera siga reiniciándose.

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

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

()

Este método une el especificado Accessory al padre del humanoide.

Cuando se llama este método, un se adjunta al personaje al buscar un en el padre del humanoide que comparta el mismo nombre que un en el accesorio de manejo .Si se encuentra uno, la parte de manejo se conectará al padre del Attachment usando un Weld, y se configurará la soldadura para que el Attachments ocupen el mismo espacio.

Si no se puede encontrar el requerido Attachment , entonces el Accessory permanecerá como padre del humanoide, pero se despegará.

Típicamente, las soldaduras accesorias se crean en el servidor, pero se pueden crear en el cliente bajo ciertas circunstancias.En estas situaciones, las llamadas del lado del cliente a AddAccessory() pueden no producir siempre el comportamiento deseado y puedes usar BuildRigFromAttachments() para forzar la creacionesde soldadura esperada.

Parámetros

accessory: Instance

El Accessory que se debe adjuntar.

Valor predeterminado: ""

Devuelve

()

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

[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

()

Este método ensambla un árbol de Motor6D uniones para el Humanoid . Las uniones Motor6D son requeridas para la reproducción de Animations .

Comenzando con el padre humanoide de RootPart , este método recoge todos los Attachments padres en la parte actual cuyo nombre termina con RigAttachment .Luego busca un archivo coincidente en el personaje que comparte el mismo nombre que el conexión.Usando esos dos archivos adjuntos, se genera una junta Motor6D basada en las partes asociadas con los dos archivos adjuntos y la CFrame de los archivos adjuntos.

Humanoid:BuildRigFromAttachments() también escala el personaje y establece los colores del cuerpo.


Devuelve

()

Muestras de código

A Lua port of the Humanoid's BuildRigFromAttachments function, so that the recursive behavior of the function can be seen.

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)

A script that generates an R15 character from scratch using a package's assetId.

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

()

Este método hace que el Humanoid entre en el Enum.HumanoidStateType dado, describiendo la actividad que el Humanoid está haciendo actualmente.

Por favor, revisa la página Enum.HumanoidStateType para obtener más información sobre los estados particulares, ya que algunos tienen nombres poco intuitivos.Por ejemplo, Enum.HumanoidStateType.Running describe un estado en el que las piernas del humanoide están en el suelo, incluyendo cuando están estáticas.

Debido al comportamiento predeterminado del Humanoid, algunos estados se cambiarán automáticamente cuando se establecer. Por ejemplo:

Tenga en cuenta que para establecer el estado Humanoid usando este método, debe hacerlo desde un LocalScript y el cliente debe tener propiedad de red de la Player.Character.Alternativamente, puedes llamar a este método desde un lado del servidor Script , pero el servidor debe tener la propiedad de red del personaje del jugador.

Vea también Humanoid:SetStateEnabled() para habilitar o deshabilitar un estado particular, y Humanoid:GetState() para obtener el estado humanoide actual.

Parámetros

El Enum.HumanoidStateType que el Humanoid es para realizar.

Valor predeterminado: "None"

Devuelve

()

Muestras de código

This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.

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 hace que el Humanoid equipar el dado Tool.

El ejemplo a continuación causaría un Player para equipar una herramienta en Workspace llamada 'Herramienta' .


local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
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

Cuando se llama este método, el Humanoid primero desequipará automáticamente todo Tools que actualmente tiene equipado.

Aunque estarán equipados, Tools para el cual Tool.RequiresHandle es verdadero no funcionará si no tienen controlador, independientemente de si se usa este método para equiparlos o no.

Vea también:

Parámetros

tool: Instance

El Tool para equipar.

Valor predeterminado: ""

Devuelve

()

GetAccessories

Este método devuelve un array de Accessory objetos que el padre del humanoide está usando actualmente.Todos esos objetos Accessory se incluirán, independientemente de si están adjuntos o no.

Si el Humanoid no tiene objetos Accessory, se devolverá un array vacío.

Vea también Humanoid:AddAccessory() para adjuntar un Accessory a un padre humanoide.


Devuelve

Un array de Accessory objetos que son padres del padre del humanoide.

Muestras de código

This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.

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

Este método devuelve una copia del almacenamiento en caché del humanoide HumanoidDescription que describe su aspecto actualEsto se puede usar para determinar rápidamente el aspecto de un personaje y asignar su aspecto a otros personajes usando el método Humanoid:ApplyDescription().

Ver también


Devuelve

GetBodyPartR15

Este método devuelve lo que Enum.BodyPartR15 es un Part o Enum.BodyPartR15.Unknown si la parte no es una parte del cuerpo R15.Este método permite a los desarrolladores recuperar partes del cuerpo del jugador independientemente de cuáles sean los nombres de las partes del cuerpo reales, devolviendo un enumerado en lugar de uno.

Se puede utilizar en conjunción con Humanoid:ReplaceBodyPartR15().Por ejemplo, si una parte del cuerpo de un jugador toca algo, esta función devolverá una instancia de parte.Los desarrolladores pueden entonces buscar qué parte del cuerpo era, como la cabeza o el brazo.Entonces, dependiendo de qué parte era esa, los desarrolladores pueden realizar alguna acción de juego o reemplazar esa parte con alguna otra parte - tal vez mostrando daños.

Este método puede ser útil para juegos donde la ubicación del golpe es importante.Por ejemplo, se puede usar para determinar si un jugador es golpeado en la pierna y luego ralentizarlo según la lesión.

Parámetros

part: Instance

La parte especificada que se está verificando para ver si es una parte del cuerpo R15.

Valor predeterminado: ""

Devuelve

El tipo de cuerpo R15 especificado para la parte o desconocido si la parte no es una parte del cuerpo.

GetLimb

Este método devuelve el enum Enum.Limb que está asociado con el dado Part. Funciona para ambas plataformas R15 y R6, por ejemplo:


-- Para R15
print(humanoid:GetLimb(character.LeftUpperLeg)) -- Enum.Limb.Leg izquierdo
print(humanoid:GetLimb(character.LeftLowerLeg)) -- Enum.Limb.Leg izquierdo
print(humanoid:GetLimb(character.LeftFoot)) -- Enum.Limb.Leg izquierdo
-- Para R6
print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg

Tenga en cuenta que Humanoid:GetLimb() lanzará un error si el padre de la parte no está configurado como el padre del humanoide.

Parámetros

part: Instance

El Part para el que se debe recuperar el Enum.Limb.

Valor predeterminado: ""

Devuelve

El Enum.Limb la parte a la que se corresponde.

Muestras de código

Put this in a LocalScript. The output will vary based on if the humanoid is R6 or R15.

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


Devuelve

Escribir paralelo

Este método devuelve el Enum.HumanoidStateType, que describe la actividad que el Humanoid, como saltar o nadar.

Vea también Humanoid:SetStateEnabled() para habilitar o deshabilitar un estado particular, y Humanoid:ChangeState() para cambiar el estado humanoide actual.


Devuelve

Muestras de código

This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.

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

Escribir paralelo

El método GetStateEnabled devuelve si un Enum.HumanoidStateType está habilitado para el Humanoid .

El estado humanoide describe la actividad que el humanoide está realizando actualmente.

Cuando un determinado Enum.HumanoidStateType está deshabilitado, el humanoide nunca puede entrar en ese estado.Esto es cierto independientemente de si se realiza el intento de cambiar el estado usando Humanoid:ChangeState() o código humanoide interno de Roblox.

Vea también:

Parámetros

Valor predeterminado: ""

Devuelve

Si el dado Enum.HumanoidStateType está habilitado.

Muestras 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().

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

()

Este método hace que el Humanoid camine en la dirección dada Vector3.

Por defecto, la dirección está en términos mundiales, pero si el parámetro relativeToCamera es true, la dirección es relativa a la CFrame de la CurrentCamera.Como la dirección negativa Z se considera "hacia adelante" en Roblox, el siguiente código hará que el humanoide camine en la dirección de la CurrentCamera.


humanoid:Move(Vector3.new(0, 0, -1), true)

Cuando se llama este método, el Humanoid se moverá hasta que se llame el método de nuevo.Sin embargo, este método será reemplazado en el siguiente marco por el guión de control de personajes predeterminado de Roblox.Esto se puede evitar llamando esta función cada marco usando RunService:BindToRenderStep() (ver ejemplo), o reemplazando los scripts de control en StarterPlayerScripts .

Este método se puede llamar en el servidor, pero esto solo debe hacerse cuando el servidor tenga propiedad de red de la asamblea del humanoide.

Vea también Humanoid:MoveTo() que hace un paseo de Humanoid a un punto, y Player:Move() que efectivamente llama a esta función.

Parámetros

moveDirection: Vector3

La dirección en la que caminar.

Valor predeterminado: ""
relativeToCamera: boolean

Establezca en true si el parámetro moveDirection debe tomarse como relativo al CurrentCamera.

Valor predeterminado: false

Devuelve

()

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

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

()

Este método hace que el Humanoid camine hacia la ubicación dada al establecer las propiedades Humanoid.WalkToPoint y Humanoid.WalkToPart.

Los parámetros de ubicación y parte coinciden con lo que y se establecerán.

Si se especifica el parámetro parte, la Humanoid todavía intentará caminar al punto.Sin embargo, si la parte se mueve, entonces el punto que Humanoid camina a estar en la misma posición relativa a la parte .Si no se especifica el parámetro parte, entonces la posición a la que se camina el Humanoid no cambiará.

El estado de objetivo alcanzado de un humanoide expirará después de 8 segundos si no alcanza su objetivo.Esto se hace para que los NPCs no se queden atascados esperando a que Humanoid.MoveToFinished desencadenar.Si no quieres que esto suceda, deberías llamar repetidamente a MoveTo para que el tiempo de espera siga reiniciándose.

MoveTo() termina si se aplica alguna de las siguientes condiciones:

  • El personaje llega a su destino. Hay un umbral de ~1 stud para tener en cuenta varias velocidades y framerates humanoides.

  • El personaje se atasca y expira el temporizador de ocho segundos.

  • El valor de cualquiera de Humanoid.WalkToPoint o Humanoid.WalkToPart cambia.

  • Un script llama Humanoid:Move() con un nuevo parámetro moveDirection.

  • Un script cambia la propiedad CFrame de la RootPart.

Parámetros

location: Vector3

La posición para establecer Humanoid.WalkToPoint .

Valor predeterminado: ""
part: Instance

El BasePart para establecer Humanoid.WalkToPart .

Valor predeterminado: "nil"

Devuelve

()

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

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

()

Este método elimina todos los objetos Accessory usados por el padre del humanoide. Para el jugador Characters, esto eliminará todos los sombreros y otros accesorios.

Este método elimina el objeto Accessory llamando a Instance:Destroy() en ellos, lo que significa que el Parent de los accesorios está configurado como nil y bloqueado.

Vea también Humanoid:AddAccessory() para adjuntar un Accessory , y Humanoid:GetAccessories() para obtener todos los objetos Accessory pertenecientes a un Humanoid .


Devuelve

()

Muestras de código

This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.

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

Reemplaza dinámicamente una parte de extremidad R15/Rthro en un Humanoide con una parte diferente. La parte se escala automáticamente como de costumbre.

Este método es útil para modificar personajes durante el juego o para construir personajes a partir de un rigbase.El método relacionado GetBodyPartR15 puede ser útil al usar este método.

El nombre de la parte pasada debe coincidir con el nombre de la BodyPartR15 Enum pasada.

Parámetros

La parte del cuerpo para reemplazar. Enum.BodyPartR15.Unknown fallará.

Valor predeterminado: ""
part: BasePart

El Class.Part``Class.Instance que se asignará al personaje.

Valor predeterminado: ""

Devuelve

SetStateEnabled

()

Este método establece si un dado Enum.HumanoidStateType está habilitado para el Humanoid.Cuando un determinado Enum.HumanoidStateType está deshabilitado, el Humanoid nunca puede entrar en ese estado.Esto es cierto independientemente de si se realiza el intento de cambiar el estado usando Humanoid:ChangeState() o código interno de Roblox Humanoid.

Tenga en cuenta que el uso de SetStateEnabled() en el servidor no replica el cambio al cliente, ni viceversa.

Parámetros

El Enum.HumanoidStateType que debe habilitarse o deshabilitarse.

Valor predeterminado: ""
enabled: boolean

true si state debe habilitarse, false si state debe deshabilitarse.

Valor predeterminado: ""

Devuelve

()

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

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

()

Este método reduce el Humanoid.Health de la Humanoid por la cantidad dada ** si no está protegido por un ForceField

Este método acepta valores negativos para el parámetro cantidad.Esto aumentará el humanoide de Humanoid.Health .Sin embargo, esto solo tendrá efecto si no hay ForceField presente.

¿Cómo protegen los campos de fuerza contra el daño por toma

Un Humanoid se considera protegido por un ForceField si un ForceField cumple con uno de los siguientes criterios:

Para hacer daño a un Humanoid independientemente de cualquier ForceFields presente, establece Humanoid.Health directamente.

Para obtener más información sobre cómo ForceFields proteger Humanoids vea la página ForceField.

Parámetros

amount: number

El daño, o la cantidad a deducir del Humanoid.Health .

Valor predeterminado: ""

Devuelve

()

Muestras de código

This code, put in a LocalScript, would make the local player take 99 damage only if a ForceField wasn't present.

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

()

Este método desequipa cualquier Tool actualmente equipado por el Humanoid

El desequipado Tool se asignará al Backpack del Player asociado con el Humanoid .

Si no se equipa ningún Tool, este método no hará nada.

Aunque Tools pueda ser equipado por NPCs (personajes no jugadores), este método solo funciona en Humanoids con un correspondiente Player.Esto se debe a que se requiere un objeto Backpack para padres el no equipado Tool .

Vea también:


Devuelve

()

ApplyDescription

()
Proporciona

Este método de rendimiento hace que la apariencia del personaje coincida con la de la pasada en HumanoidDescription .Se almacena una copia del pase de HumanoidDescription como el HumanoidDescription para el Humanoid .

Este método se optimiza al hacer la suposición de que solo se usa este método para cambiar la apariencia del personaje, y no se realizan cambios a través de otros medios entre las llamadas.Si se realizan cambios en el personaje entre llamadas, entonces este método puede no hacer que el personaje refleje con precisión el pasado en HumanoidDescription.Si desea utilizar este método en conjunción con otros medios de actualización del personaje, Humanoid:ApplyDescriptionReset() siempre garantizará que el personaje refleje el pasado en HumanoidDescription.

Ver también

Parámetros

humanoidDescription: HumanoidDescription

La instancia HumanoidDescription que quieres establecer para que el personaje coincidir.

Valor predeterminado: ""
assetTypeVerification: Enum.AssetTypeVerification
Valor predeterminado: "Default"

Devuelve

()

ApplyDescriptionReset

()
Proporciona

Este método de rendimiento hace que la apariencia del personaje coincida con la de la pasada en HumanoidDescription , incluso después de cambios externos.Se almacena una copia del pase de HumanoidDescription como el HumanoidDescription para el Humanoid .

Este método siempre garantizará que el personaje refleje el pasado en HumanoidDescription, incluso si se han realizado cambios en el personaje sin usar el sistema HumanoidDescription (por ejemplo, no usando ApplyDescriptionReset() o ApplyDescription() ).Esto contrasta con ApplyDescription() que se optimiza y puede aplicar incorrectamente un HumanoidDescription si el personaje ha sido cambiado por medios diferentes al sistema HumanoidDescription.

Parámetros

humanoidDescription: HumanoidDescription

La instancia HumanoidDescription que quieres establecer para que el personaje coincidir.

Valor predeterminado: ""
assetTypeVerification: Enum.AssetTypeVerification
Valor predeterminado: "Default"

Devuelve

()

PlayEmote

Proporciona

Si el emote no se pudo reproducir porque el nombre del emote no se encuentra en la descripción humanoide, este método dará un error.El método devolverá verdadero para indicar que el emote se reprodujo con éxito.

Parámetros

emoteName: string

nombre del emote para jugar.

Valor predeterminado: ""

Devuelve

reproducido con éxito.

Eventos

ApplyDescriptionFinished

Parámetros

description: HumanoidDescription

Climbing

Se enciende cuando la velocidad a la que un Humanoid está subiendo cambia.

Humanoids puede escalar escaleras hechas de Parts o TrussParts .

Humanoids escalar al 70% de su Humanoid.WalkSpeed .

Este evento no siempre se disparará con una velocidad de 0 cuando la Humanoid deje de escalar.

Vea también:

Parámetros

speed: number

La velocidad a la que actualmente está subiendo el Humanoid .


Muestras 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 se activa cuando el Humanoid muere, usualmente cuando Humanoid.Health llega a 0.Esto podría ser causado por desconectar su cabeza de su Humanoid.Torso o establecer directamente la propiedad de salud.

Este evento solo se activa si el Humanoid es un descendiente del Workspace . Si el Dead``Enum.HumanoidStateType está deshabilitado, no desencadenar.


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

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

El evento FallingDown se activa cuando el Humanoid entra y sale del FallingDown``Enum.HumanoidStateType .

El entrará en el estado 3 segundos después de que el estado se habilite.Cuando esto suceda, este evento se disparará con un valor activo de falso , y Humanoid.GettingUp disparará con un valor activo de verdad .

Parámetros

active: boolean

Describe si el Humanoid está entrando o saliendo del FallingDown``Enum.HumanoidStateType .


FreeFalling

Este evento se activa cuando el Humanoid entra o sale del Freefall``Enum.HumanoidStateType .

El parámetro activo representa si el está entrando o saliendo del estado .

Aunque el estado Freefall generalmente termina cuando el Humanoid llega al suelo, este evento puede disparar con activo igual a falso si el estado se cambia mientras el Humanoid está cayendo.Por esta razón, deberías usar Humanoid.StateChanged y escuchar el estado Landed para que funcione cuando un Humanoid haya aterrizado.

Parámetros

active: boolean

Si el está entrando o saliendo del .


GettingUp

Este evento se activa cuando el Humanoid entra o sale del estado Enum.HumanoidStateType.GettingUp, un estado de transición que se activa poco después de que el Humanoid entre en los estados FallingDown (3 segundos) o Ragdoll (1 segundo).

Cuando un Humanoid intenta volver a levantarse, este evento disparará primero con un parámetro active de true antes de disparar nuevamente con un parámetro active de false .

Para forzar a que un Humanoid caiga, use la función Humanoid:ChangeState() con Enum.HumanoidStateType.FallingDown.

Parámetros

active: boolean

Si el está entrando o saliendo del .


HealthChanged

Este evento se activa cuando los cambios de Humanoid.Health cambian.Sin embargo, no disparará si la salud está aumentando desde un valor igual o mayor que el Humanoid.MaxHealth.

Cuando Humanoid.Health llega a cero, el evento Humanoid morirá y se desencadenarel evento Humanoid.Died. Este evento se disparará con un valor de cero.

Parámetros

health: number

El nuevo valor de Humanoid.Health .


Muestras de código

The following example determines the change in health, printing it to the output. It will only work in a LocalScript.

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)

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.

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 se activa cuando el Humanoid entra y sale del Jumping``Enum.HumanoidStateType .

Cuando un Humanoid salta, este evento se activa con un parámetro active de true antes de disparar de nuevo con un parámetro active de false poco después.Este segundo disparo no coincide con un aterrizaje Class.Humanoid``Landed usando Enum.HumanoidStateType``Class.Humanoid.StateChanged .

Puedes desactivar el salto usando la función Humanoid:SetStateEnabled().

Parámetros

active: boolean

Si el está entrando o saliendo del .


MoveToFinished

Este evento se activa cuando el Humanoid finaliza de caminar hacia un objetivo declarado por las propiedades Humanoid.WalkToPoint y Humanoid.WalkToPart.

Las propiedades Humanoid.WalkToPoint y Humanoid.WalkToPart se pueden establecer individualmente o usando la función Humanoid:MoveTo().

Si el Humanoid alcanza su objetivo dentro de 8 segundos, este evento devolverá con alcanzado como verdadero.Si el objetivo no se alcanza dentro de 8 segundos, el Humanoid dejará de caminar y el alcanzado será falso.Este tiempo de espera se puede restablecer llamando Humanoid:MoveTo() de nuevo dentro del período de tiempo límite.

Parámetros

reached: boolean

Un booleano que indica si el Humanoid alcanzado es el objetivo.Verdadero si el Humanoid alcanza su objetivo, falso si la caminata se acabó antes de que se pudiera alcanzar el objetivo.


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

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 se activa cuando el Humanoid entra o sale del PlatformStanding``Enum.HumanoidStateType .

Mientras que el Humanoid está en el estado PlatformStanding, la propiedad Humanoid.PlatformStand será verdadera.

Mientras que Humanoid.PlatformStand está configurado como verdadero, el Humanoid no podrá herramienta de movimiento. Para más información, consulte la página para Humanoid.PlatformStand .

El soporte de plataforma Enum.HumanoidStateType se asoció con la parte ahora desactivada Platform. A pesar de esto, aún puede ser utilizada por los desarrolladores.

Parámetros

active: boolean

Si el está entrando o saliendo del .


Ragdoll

Este evento se activa cuando el Humanoid entra o sale del Ragdoll``Enum.HumanoidStateType .

El parámetro active tendrá el valor true o false para indicar entrar o salir.

Usa Humanoid:SetStateEnabled() para deshabilitar el estado de Obtener para quedarse en el estado de Ragdoll.

Vea también:

Parámetros

active: boolean

Si el está entrando o saliendo del .


Running

Este evento se activa cuando la velocidad a la que se ejecuta un Humanoid cambia.

Mientras se ejecuta la cubierta Humanoids , en promedio, su Humanoid.WalkSpeed en studs por segundo.

Cuando el Humanoid deje de ejecutar este evento se disparará con una velocidad de 0.

Vea también:

Parámetros

speed: number

La velocidad a la que se ejecuta el Humanoid.


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

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 se activa cuando un Humanoid se sienta en o se levanta de un Seat o VehicleSeat .

Cuando un personaje entra en contacto con un asiento, se les une al asiento y se reproduce una animación de sentarse.Para obtener más información sobre esto, consulte la página Seat .

  • Si el personaje está sentado, el parámetro active será verdadero y currentSeatPart será el asiento en el que se encuentra actualmente.
  • Si el personaje se levanta de un asiento, el parámetro active será falso y currentSeatPart será nil .

Vea también:

  • Humanoid.Sit , que indica si un Humanoide está sentado actualmente
  • Humanoid.SeatPart , que indica el asiento en el que un Humanoide está sentado actualmente, si es que hay alguno.

Parámetros

active: boolean

Verdadero si el Humanoid está sentado.

currentSeatPart: BasePart

El asiento el Humanoid está sentado si está sentado.


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

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 se activa cuando el estado de Humanoid cambia.

Como no hay estado humanoide "inactividad", deberías usar el evento Humanoid.Running en lugar de escuchar al RootPart de la parte Velocity para averiguar cuándo el Humanoid está parado.

Ver también

Parámetros

El introducirde estado anterior del humanoide.

El introducirde estado actual del humanoide.


Muestras de código

Emite partículas desde el jugador local Player.Character cuando salta. Para probar esta muestra de código, colóquela dentro de un LocalScript padre a StarterCharacterScripts .

Partículas de salto

local character = script.Parent
local primaryPart = character.PrimaryPart
-- crear partículas
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
-- escuchar el 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.

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

El evento EstadoActivadoCambiado se activa cuando se llama Humanoid:SetStateEnabled() en el Humanoid.

Los parámetros incluyen el Enum.HumanoidStateType en la pregunta junto con un bool que indica si este estado ahora está habilitado.

Vea también:

Parámetros

El Enum.HumanoidStateType para el que se ha cambiado el estado habilitado.

isEnabled: boolean

Verdadero si el estado está ahora habilitado.


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

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 no se dispara cuando el Humanoid está girando y no debe usarse por los desarrolladores

Este evento se dispara cuando el Humanoid entra o sale del StrafingNoPhysics``Enum.HumanoidStateType.

Cuando el Humanoid entra en el estado StrafingNoPhysics este evento se disparará con un parámetro activo de verdadero.El evento se disparará nuevamente con activo igual a falso cuando el Humanoid deje el estado StrafingNoPhysics.

Este evento está asociado con el estado y no dispara cuando el no se mueve perpendicular a la dirección a la que se enfrenta.Este estado está actualmente sin usar, si se establece usando Humanoid:ChangeState() el estado se revertirá a RunningNoPhysics .

Parámetros

active: boolean

Si el está entrando o saliendo del .


Swimming

Este evento se activa cuando la velocidad a la que nada un Humanoid cambia en el agua Terrain.

Humanoids nadar al 87.5% de su Humanoid.WalkSpeed .

Este evento no siempre se disparará con una velocidad de 0 cuando el Humanoid deje de nadar.

Vea también:

Parámetros

speed: number

La velocidad a la que el Humanoid nada actualmente.


Touched

Este evento se activa cuando uno de los brazos del humanoide entra en contacto con otro BasePart.Se da el BasePart que la extremidad está tocando, junto con la propia extremidad, se da.

Este evento no se disparará cuando las extremidades que pertenecen al Humanoid entren en contacto con sí mismas.

Alternativas

Aunque el evento Humanoid.Touched es útil, deberías considerar si hay alternativas que se adapten mejor a tus necesidades.

  • En la mayoría de los casos, se recomienda conectar un evento de interés en su lugar, ya que el evento disparará constantemente cuando el humanoide se esté moviendo.Por ejemplo, en un juego de dodgeball, sería más práctico conectar un evento Touched para las bolas en lugar de usar Humanoid.Touched.
  • Cuando se trata de averiguar cuándo el Humanoid ha aterrizado en el suelo, el evento Humanoid.StateChanged es más adecuado.Alternativamente, puedes comprobar Humanoid.FloorMaterial para ver si el humanoide está parado en cualquier material no aéreo.

Notas

Parámetros

touchingPart: BasePart

El BasePart el Humanoid se ha puesto en contacto con.

humanoidPart: BasePart

La extremidad del Humanoid que se ha tocado.


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

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)