Humanoid
*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.
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
Establece si el personaje saltará automáticamente cuando golpee un obstáculo como jugador en un dispositivo móvil.
AutoRotate establece si el Humanoide girará automáticamente hacia la dirección en la que se está moviendo.
Cuando está habilitado, AutomaticScalingEnabled hace que el tamaño del personaje cambie en respuesta a los valores en los valores de escala del hijo del humanoide que cambian.
Determina si las articulaciones del humanoide se rompen cuando está en el estado Enum.HumanoidStateType.Dead.
Un desplazamiento aplicado a la posición del sujeto de la cámara cuando su sujeto de cámara se establece en este humanoide.
Controla el comportamiento de distancia del nombre y la salud del humanoide.
Establece el texto de un Humanoide, que se muestra por encima de su cabeza.
Describe el Enum.Material que el Humanoid está actualmente parado en.Si el Humanoid no está parado en nada, el valor de esta propiedad será Aire.
Describe la salud actual del Humanoide en el rango [0, Humanoid.MaxHealth].
Se usa en conjunción con la propiedad DisplayDistanceType para controlar la distancia desde la cual se puede ver la barra de salud de un humanoide.
Controles cuando se permite que la barra de salud del humanoide se muestre.
Determina la distancia desde el suelo que el Humanoid.RootPart debería ser.
Si true , los Humanoid saltos con una fuerza hacia arriba.
Proporciona control sobre la altura a la que los saltos Humanoid saltan.
Determina cuánta fuerza hacia arriba se aplica al Humanoid al saltar.
El valor máximo de un humanoide de Health .
El ángulo de pendiente máximo que un humanoide puede caminar sin resbalar.
Describe la dirección en la que el Humanoid camina.
Se usa en conjunción con la propiedad Humanoid.DisplayDistanceType para controlar la distancia desde la cual se puede ver el nombre de un humanoide.
Controla si el nombre y la barra de salud de un humanoide se pueden ver detrás de paredes u otros objetos.
Determina si el Humanoid está actualmente en el estado Enum.HumanoidStateType.PlatformStanding.
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.
Describe si este Humanoid está utilizando el antiguo personaje R6 o el nuevo personaje R15.
Una referencia al objeto HumanoidRootPart del humanoide.
Una referencia al asiento en el que un Humanoid está sentado actualmente, si es que hay alguno.
Describe si el Humanoid está sentado actualmente.
Describe la posición 3D en la que el Player controla el Humanoid último que se hizo clic en el mundo mientras se usa un Tool .
Determina si se usa la propiedad JumpHeight (falsa) o Humanoid.JumpPower (verdadera).
Describe la velocidad máxima de movimiento del humanoide en studs por segundo.
Una referencia a una parte cuya posición está tratando de alcanzar un humanoide
La posición que un humanoide está tratando de alcanzar, después de hacer una llamada a Humanoid:MoveTo() se hace.
Métodos
Ata el especificado Accessory al padre del humanoide.
Reúne un árbol de Motor6D uniones al unir objetos Attachment en el carácter de un humanoide.
Establece el Humanoid para entrar en el dado Enum.HumanoidStateType.
Devuelve un array de Accessory objetos que el padre del humanoide está usando actualmente.
Devuelve una copia del almacenamiento en caché del humanoide HumanoidDescription que describe su aspecto actual.
Pasa una parte del cuerpo a este método (la parte del cuerpo debe ser un hermano de Humanoid, y un hijo de un modelo) para obtener la Enum.BodyPartR15 de la Part.
Devuelve el enum Enum.Limb que está asociado con el dado Part.
Devuelve el actual Enum.HumanoidStateType del humanoide.
Devuelve si un Enum.HumanoidStateType está habilitado para el Humanoid .
Causa que el Humanoid camine en la dirección dada.
Hace que el Humanoid intente caminar a la ubicación dada al configurar las propiedades Humanoid.WalkToPoint y Humanoid.WalkToPart.
Elimina todos los objetos Accessory usados por el padre del humanoide.
Reemplaza dinámicamente una parte del cuerpo humanoide con una parte diferente.
Establece si un dado Enum.HumanoidStateType está habilitado para el Humanoid .
Reduce el Humanoid.Health del Humanoid por la cantidad dada ** si no está protegido por un ForceField .
Desequipa cualquier Tool actualmente equipado por el Humanoid .
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Hace que la apariencia del personaje coincida con la de la pasada en HumanoidDescription .
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Hace que la apariencia del personaje coincida con la de la pasada en HumanoidDescription , incluso después de cambios externos.
Reproduce emotes y devuelve si se ejecutó con éxito.
Eventos
Se enciende cuando la velocidad a la que un Humanoid está subiendo cambia.
Se enciende cuando el Humanoid muere.
Se enciende cuando el Humanoid entra o sale del FallingDown``Enum.HumanoidStateType .
Se enciende cuando el Humanoid entra o sale del Freefall``Enum.HumanoidStateType .
Se enciende cuando el Humanoid entra o sale del GettingUp``Enum.HumanoidStateType .
Se enciende cuando los cambios de Humanoid.Health cambian (o cuando se establece el Humanoid.MaxHealth).
Se enciende cuando el Humanoid entra y sale del Jumping``Enum.HumanoidStateType .
Se enciende cuando el Humanoid termina de caminar hacia un objetivo declarado por Humanoid:MoveTo().
Se enciende cuando el Humanoid entra o sale del PlatformStanding``Enum.HumanoidStateType .
Se enciende cuando el Humanoid entra o sale del Ragdoll``Enum.HumanoidStateType .
Se enciende cuando la velocidad a la que se ejecuta un Humanoid cambia.
Despedido cuando un Humanoid se sienta en un Seat o VehicleSeat se levanta.
Se enciende cuando el estado de Humanoid cambia.
Se enciende cuando se llama a Humanoid:SetStateEnabled() en el Humanoid.
Se enciende cuando el Humanoid entra o sale del StrafingNoPhysics``Enum.HumanoidStateType .
Se enciende cuando la velocidad a la que nada un Humanoid cambia en el agua Terrain.
Se enciende cuando uno de los miembros del humanoide entra en contacto con otro BasePart.
Propiedades
AutoJumpEnabled
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.
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
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.
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
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
Determina si las articulaciones del humanoide se rompen cuando está en el estado Enum.HumanoidStateType.Dead. Se prefiere la verdad.
CameraOffset
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.
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
DisplayDistanceType
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.
local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
DisplayName
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
FloorMaterial
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á.
- No puedes probar si el Humanoid nada con esta propiedad. Deberías usar en su lugar su función Humanoid:GetState().
Health
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
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.
HealthDisplayType
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
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
Jump
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
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
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
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
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.
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
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.
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
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
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.
local Players = game:GetService("Players")
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.NamOcclusion = Enum.NameOcclusion.OccludeAll
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
PlatformStand
Determina 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
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.
RigType
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
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
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:
- Para un bool que describa si el Humanoid está sentado actualmente o no, vea Humanoid.Sit
Sit
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:
- El Seat o VehicleSeat el Humanoid está sentado en se puede obtener usando la propiedad Humanoid.SeatPart
- Es posible detectar cuando un Humanoide se sienta conectándose al evento Humanoid.Seated.
TargetPoint
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
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
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.
WalkToPart
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
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.
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
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.
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.
local function createJoint(jointName, att0, att1)
local part0, part1 = att0.Parent, att1.Parent
local newMotor = part1:FindFirstChild(jointName)
if not (newMotor and newMotor:IsA("Motor6D")) then
newMotor = Instance.new("Motor6D")
end
newMotor.Name = jointName
newMotor.Part0 = part0
newMotor.Part1 = part1
newMotor.C0 = att0.CFrame
newMotor.C1 = att1.CFrame
newMotor.Parent = part1
end
local function buildJointsFromAttachments(part, characterParts)
if not part then
return
end
-- first, loop thru all of the part's children to find attachments
for _, attachment in pairs(part:GetChildren()) do
if attachment:IsA("Attachment") then
-- only do joint build from "RigAttachments"
local attachmentName = attachment.Name
local findPos = attachmentName:find("RigAttachment")
if findPos then
-- also don't make double joints (there is the same named
-- rigattachment under two parts)
local jointName = attachmentName:sub(1, findPos - 1)
if not part:FindFirstChild(jointName) then
-- try to find other part with same rig attachment name
for _, characterPart in pairs(characterParts) do
if part ~= characterPart then
local matchingAttachment = characterPart:FindFirstChild(attachmentName)
if matchingAttachment and matchingAttachment:IsA("Attachment") then
createJoint(jointName, attachment, matchingAttachment)
buildJointsFromAttachments(characterPart, characterParts)
break
end
end
end
end
end
end
end
end
local function buildRigFromAttachments(humanoid)
local rootPart = humanoid.RootPart
assert(rootPart, "Humanoid has no HumanoidRootPart.")
local characterParts = {}
for _, descendant in ipairs(humanoid.Parent:GetDescendants()) do
if descendant:IsA("BasePart") then
table.insert(characterParts, descendant)
end
end
buildJointsFromAttachments(rootPart, characterParts)
end
local humanoid = script.Parent:WaitForChild("Humanoid")
buildRigFromAttachments(humanoid)
A script that generates an R15 character from scratch using a package's assetId.
local AssetService = game:GetService("AssetService")
local InsertService = game:GetService("InsertService")
local MarketplaceService = game:GetService("MarketplaceService")
local PACKAGE_ASSET_ID = 193700907 -- Circuit Breaker
local function addAttachment(part, name, position, orientation)
local attachment = Instance.new("Attachment")
attachment.Name = name
attachment.Parent = part
if position then
attachment.Position = position
end
if orientation then
attachment.Orientation = orientation
end
return attachment
end
local function createBaseCharacter()
local character = Instance.new("Model")
local humanoid = Instance.new("Humanoid")
humanoid.Parent = character
local rootPart = Instance.new("Part")
rootPart.Name = "HumanoidRootPart"
rootPart.Size = Vector3.new(2, 2, 1)
rootPart.Transparency = 1
rootPart.Parent = character
addAttachment(rootPart, "RootRigAttachment")
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(2, 1, 1)
head.Parent = character
local headMesh = Instance.new("SpecialMesh")
headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
headMesh.MeshType = Enum.MeshType.Head
headMesh.Parent = head
local face = Instance.new("Decal")
face.Name = "face"
face.Texture = "rbxasset://textures/face.png"
face.Parent = head
addAttachment(head, "FaceCenterAttachment")
addAttachment(head, "FaceFrontAttachment", Vector3.new(0, 0, -0.6))
addAttachment(head, "HairAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "HatAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "NeckRigAttachment", Vector3.new(0, -0.5, 0))
return character, humanoid
end
local function createR15Package(packageAssetId)
local packageAssetInfo = MarketplaceService:GetProductInfo(packageAssetId)
local character, humanoid = createBaseCharacter()
character.Name = packageAssetInfo.Name
local assetIds = AssetService:GetAssetIdsForPackage(packageAssetId)
for _, assetId in pairs(assetIds) do
local limb = InsertService:LoadAsset(assetId)
local r15 = limb:FindFirstChild("R15")
if r15 then
for _, part in pairs(r15:GetChildren()) do
part.Parent = character
end
else
for _, child in pairs(limb:GetChildren()) do
child.Parent = character
end
end
end
humanoid:BuildRigFromAttachments()
return character
end
local r15Package = createR15Package(PACKAGE_ASSET_ID)
r15Package.Parent = workspace
ChangeState
Este método 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:
- Establecer el estado en Enum.HumanoidStateType.Swimming cuando el humanoide no está en el agua hará que se establezca automáticamente en Enum.HumanoidStateType.GettingUp .
- Como no se usa, establecer el estado en Enum.HumanoidStateType.PlatformStanding hará que el estado humanoide se establezca automáticamente en Enum.HumanoidStateType.Running .
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.
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.
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 thenlocal humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal tool = Workspace:FindFirstChild("Tool")if tool thenhumanoid:EquipTool(tool)endendend
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:
- Para desequipar herramientas, use Humanoid:UnequipTools()
Parámetros
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
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.
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
- Players:GetHumanoidDescriptionFromUserId() que devuelve un HumanoidDescription que describe el avatar para el usuario pasado.
- Players:GetHumanoidDescriptionFromOutfitId() que devuelve un HumanoidDescription cuyos parámetros se inicializan para coincidir con el de la asignación de recursodel lado del servidor pasada.
- Player:LoadCharacterWithHumanoidDescription() que genera un jugador con el aspecto de la pasada en HumanoidDescription .
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
La parte especificada que se está verificando para ver si es una parte del cuerpo R15.
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 R15print(humanoid:GetLimb(character.LeftUpperLeg)) -- Enum.Limb.Leg izquierdoprint(humanoid:GetLimb(character.LeftLowerLeg)) -- Enum.Limb.Leg izquierdoprint(humanoid:GetLimb(character.LeftFoot)) -- Enum.Limb.Leg izquierdo-- Para R6print(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
Devuelve
Muestras de código
Put this in a LocalScript. The output will vary based on if the humanoid is R6 or R15.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end
GetState
Este método 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
El actual Enum.HumanoidStateType de la Humanoid.
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.
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
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:
- Para un evento que se activa cuando se habilita o deshabilita un estado humanoide, vea Humanoid.StateEnabledChanged
- Para habilitar o deshabilitar un estado Humanoid use Humanoid:SetStateEnabled()
Parámetros
El dado Enum.HumanoidStateType .
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().
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
La dirección en la que caminar.
Establezca en true si el parámetro moveDirection debe tomarse como relativo al CurrentCamera.
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.
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.
Parámetros
La posición para establecer Humanoid.WalkToPoint .
El BasePart para establecer Humanoid.WalkToPart .
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.
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.
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á.
El Class.Part``Class.Instance que se asignará al personaje.
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.
true si state debe habilitarse, false si state debe deshabilitarse.
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.
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
El daño, o la cantidad a deducir del Humanoid.Health .
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.
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:
- Para equipar en su lugar un Tool, use Humanoid:EquipTool()
Devuelve
ApplyDescription
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
- Humanoid:GetAppliedDescription() que devuelve el HumanoidDescription actualmente aplicado al humanoide.
- Players:GetHumanoidDescriptionFromUserId() que devuelve un HumanoidDescription que describe el avatar para el usuario pasado.
- Players:GetHumanoidDescriptionFromOutfitId() que devuelve un HumanoidDescription cuyos parámetros se inicializan para coincidir con el de la asignación de recursodel lado del servidor pasada.
- Player:LoadCharacterWithHumanoidDescription() que genera un jugador con el aspecto de la pasada en HumanoidDescription .
Parámetros
La instancia HumanoidDescription que quieres establecer para que el personaje coincidir.
Devuelve
ApplyDescriptionReset
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
La instancia HumanoidDescription que quieres establecer para que el personaje coincidir.
Devuelve
PlayEmote
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
nombre del emote para jugar.
Devuelve
reproducido con éxito.
Eventos
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:
- Para nadar y correr, vea los eventos Humanoid.Swimming y Humanoid.Running
- También puedes detectar cuando un Humanoid está subiendo usando el evento Humanoid.StateChanged
- Puedes deshabilitar la escalada usando la función Humanoid:SetStateEnabled()
Parámetros
Muestras de código
local Players = game:GetService("Players")
local function onCharacterClimbing(character, speed)
print(character.Name, "is climbing at a speed of", speed, "studs / second.")
end
local function onCharacterAdded(character)
character.Humanoid.Climbing:Connect(function(speed)
onCharacterClimbing(character, speed)
end)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Died
Este evento 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.
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
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
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
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
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.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local currentHealth = humanoid.Health
local function onHealthChanged(health)
local change = math.abs(currentHealth - health)
print("The humanoid's health", (currentHealth > health and "decreased by" or "increased by"), change)
currentHealth = health
end
humanoid.HealthChanged:Connect(onHealthChanged)
end
player.CharacterAdded:Connect(onCharacterAdded)
This code sample allows you to create a simple color-changing health bar using two nested Frames. Paste this into a LocalScript on the inner frame.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
Jumping
Este evento 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
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
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.
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
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:
- Humanoid.FallingDown para el evento Humanoid conectado con el estado FallingDown, que se comporta de manera similar a Ragdoll
Parámetros
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:
- Para nadar y escalar, vea los eventos Humanoid.Swimming y Humanoid.Climbing
- También puedes detectar cuando un Humanoid está en ejecución usando el evento Humanoid.StateChanged
Parámetros
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.
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
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.
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
- Humanoid:GetState() y Humanoid:ChangeState() para obtener y establecer el estado.
- Humanoid:SetStateEnabled() para habilitar y deshabilitar estados específicos.
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 .
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.
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:
- Para encontrar si un estado está actualmente habilitado, use Humanoid:GetStateEnabled()
- Para escuchar los cambios de estado Humanoid use Humanoid.StateChanged
Parámetros
El Enum.HumanoidStateType para el que se ha cambiado el estado habilitado.
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.
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
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:
- Para correr y escalar, vea los eventos Humanoid.Running y Humanoid.Climbing
- También puedes detectar cuando un Humanoid nada usando el evento Humanoid.StateChanged
- Puedes desactivar la natación usando la función Humanoid:SetStateEnabled()
Parámetros
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
- Conectarse a este evento causará que se cree un TouchTransmitter en cada extremidad.
- No hay actualmente un equivalente de BasePart.TouchEnded para Humanoids .
Parámetros
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.
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)