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 Húmed es un objeto especial que le otorga a los modelos la funcionalidad de un personaje. Él otorga al modelo la capac

R6

  • Un rígido de personaje básico que utiliza 6 partes para los miembros.
  • La parte Head debe ser añadida a una parte llamada Torso, o el Humanoid morirá inmediatamente.
  • Las apariencias de BodyPart se aplican con el objeto 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 los extremos.
  • La parte Head debe ser añadida a una parte llamada UpperTorso o el Humanoid morirá inmediatamente.
  • Las apariencias de BodyPart deben ser montadas directamente.
  • Puede ser escalado dinámicamente por el uso de objetos especiales de NumberValue dentro del Humanoid.
  • El Humaide creará automáticamente Vector3Value objetos nombrados OriginalSize dentro de cada miembro.
  • Si un valor numérico está dentro de un humanoid 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

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á o no saltar automáticamente sobre un obstáculo que está caminando hacia.

Actualmente, esta propiedad solo funciona cuando se cumplen las siguientes condiciones:

  • El modelo de personaje del Humanoid 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

Auto-Jump Toggle

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()

AutoRotate

Leer paralelo

La propiedad AutoRotate describe si el Híper Rotará automáticamente para alinearse en la dirección en la que se está moviendo. Cuando se establece en verdadero, el modelo de personaje se girará gradualmente para alinearse con la dirección de su movimiento mientras el Híper Rotará. Cuando se establece en falso, el modelo de personaje se mantendrá fijo en su rotación actual, a menos que se aplique una fuerza giratoria a la Parte de Raíz del Híper.

Si el modelo de personaje sucede ser el personaje de un jugador, entonces el comportamiento de la rotación del Humanoid está influido por la propiedad RotateType de UserGameSettings.

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


<tbody>
<tr>
<td>Relativo de movimiento</td>
<td />
<td />
</tr>
<tr>
<td>Relación de cámara</td>
<td>El personaje girará para mirar en la dirección de la cámara.</td>
<td>El jugador tiene su cámara acercada a la primera persona, o está en modo de bloqueo de turno.</td>
</tr>
</tbody>
Tipo de rotaciónComportamientoContexto

Muestras de código

AutoRotate Button

local button = script.Parent
local enabled = true
local ON_COLOR = BrickColor.Green()
local OFF_COLOR = BrickColor.Red()
local function touchButton(humanoid)
if enabled then
enabled = false
button.BrickColor = OFF_COLOR
if humanoid.AutoRotate then
print(humanoid:GetFullName() .. " can no longer auto-rotate!")
humanoid.AutoRotate = false
else
print(humanoid:GetFullName() .. " can now auto-rotate!")
humanoid.AutoRotate = true
end
task.wait(1)
button.BrickColor = ON_COLOR
enabled = true
end
end
local function onTouched(hit)
local char = hit:FindFirstAncestorWhichIsA("Model")
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
touchButton(humanoid)
end
end
end
button.Touched:Connect(onTouched)
button.BrickColor = ON_COLOR

AutomaticScalingEnabled

Leer paralelo

El Humanoide tiene seis valores de escala de hijos, incluido BodyDepthScale, BodyHeightScale », BodyProportionScale », 1> BodyTypeScale », 4> HeadScale ». Al cambiar el valor de cualquiera de estos factores, las partes y accesorios del c

BreakJointsOnDeath

Leer paralelo

Determina si se rompen las articulaciones del humanoide cuando están en el estado Enum.HumanoidStateType.Dead . Por defecto, esto es cierto.

CameraOffset

Leer paralelo

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

El desplazamiento se aplica en el espacio de objeto, relativo a la orientación del Humanoid's HumanoidRootPart . Por ejemplo, un valor de desplazamiento Vector3 de (0, 10, 0) desplaza la cámara del jugador a 10 studs por encima del jugador's humanoid.

Muestras de código

Walking Camera Bobble Effect

local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
Leer paralelo

La propiedad DisplayDistanceType controla el comportamiento de distancia del nombre y la salud de los humanoides. Esta propiedad se establece utilizando el conjunto de propiedades 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 de su propio rango de NameDisplayDistance y HealthDisplayDistance .
  • Cuando se establece en Subject, el humanoide toma el control completo sobre su propio nombre y estado de salud a través de sus valores NameDisplayDistance y HealthDisplayDistance.
  • Cuando se establece a None del modo humano, el nombre y la barra de salud del humano no aparecen bajo ninguna circunstancia.

Vea Nombre/Salud de Personaje para obtener una guía en profundidad sobre cómo controlar la apariencia de los nombres de personajes y las barras de salud.

Muestras de código

Displaying a Humanoid's Health and Name

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

DisplayName

Leer paralelo

DisplayName es una propiedad que determina el nombre de visualización del Humanoid cuando es visible. Por defecto, un nuevo Humanoid tendrá el valor de una cadena vacía. Si DisplayName es una cadena vacía, el nombre de visualización del Humanoid se establecerá por defecto en el nombre de su padre.

Cargando personaje del jugador

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

StarterCharacter y StarterHumanoid

Cuando un Humanoid llamado StarterHumanoid está asociado a StarterPlayer

EvaluateStateMachine

Leer paralelo

FloorMaterial

Solo lectura
No replicado
Leer paralelo

Esta es una propiedad de solo lectura que describe el Enum.Material que se encuentra actualmente en el Humanoid. Funciona con tanto Parts y 2>Class.Terrain2> como con voces.

El código de abajo muestra cómo escuchar cuando esta propiedad cambia usando Object:GetPropertyChangedSignal() . Cuando el material que está en el suelo cambia, se imprimirá un mensaje que indica que el nuevo material está en el suelo.


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

Cavernas

  • Cuando el Humanoid no esté en un suelo, el valor de esta propiedad se establecerá en Aire.
    • Esto se debe a que las propiedades de lista no pueden tener un valor vacío.
    • Esto puede causar algunas confusiones si se ha establecido el material de una parte en Air, aunque en la práctica, las partes no deben usar ese material en primer lugar.
  • El modelo de personaje del Humanoid debe ser capaz de chocar con el suelo, o no se detectará.

Health

No replicado
Leer paralelo

Esta propiedad representa la salud actual del Humanoid. El valor se limita a la gama entre 0 y MaxHealth. Si el humanoid está muerto, esta propiedad se establece continuamente en 0.

Nota que la función TakeDamage() puede usarse para restar de Health en lugar de configurar la propiedad directamente.

Regeneración de Salud

Por defecto, un script de regeneración de salud pasiva se insertará automáticamente en los humanoides. Esto causa que los personajes no muertos de los juegos de salud se regeneren el 1% de MaxHealth cada segundo. Para desactivar este comportamiento de regeneración, agregue un script de salud vacía nombrada Script a Class.StarterCharacterScripts

Mostrar barra de salud

Cuando Health es menor que MaxHealth, se muestra una barra de salud en la experiencia. El comportamiento de la barra de salud depende de la distancia de HealthDisplayDistance y 1> Class.Humanoid.HealthDisplayType|HealthDisplayType

Vea Nombre/Salud de Personaje para obtener una guía en profundidad sobre cómo controlar la apariencia de los nombres de personajes y las barras de salud.

Muerte

Cuando el valor de la salud del personaje alcanza 0, el Humanoid se transfiere automáticamente al estado Enum.HumanoidStateType.Dead. En este estado, Health está bloqueado para establecer el 2>Class.Humanoid.Health|Health2>

HealthDisplayDistance

Leer paralelo

Esta propiedad es un número que se utiliza en conjunción con la propiedad DisplayDistanceType para controlar la distancia desde la que se puede ver la barra de salud de un humanoid.

Vea Nombre/Salud de Personaje para obtener una guía en profundidad sobre cómo controlar la apariencia de los nombres de personajes y las barras de salud.

Leer paralelo

Esta propiedad controla cuando se permite que la barra de salud de un humanoid se muestre. Por defecto, esta propiedad está configurada como <a href="https://www.microsoft.com/en-us/

Nota que esta propiedad funciona independientemente de la propiedad de HealthDisplayDistance de la cual es responsable de hacer que la barra de salud se desvanezca en ciertas distancias. Si Humanoid.HealthDisplayType|HealthDisplayType está configurado como Enum.H

Vea Nombre/Salud de Personaje para obtener una guía en profundidad sobre cómo controlar la apariencia de los nombres de personajes y las barras de salud.

HipHeight

Leer paralelo

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

Para los modelos R15, se preset una altura de eje adecuada para garantizar la altura de la RootPart correcta. La altura de las piernas no se usa. La altura total del humanoid se puede describir en la siguiente fórmula:


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

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


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

Jump

No replicado
Leer paralelo

Si true , el salto Humanoid con una fuerza hacia arriba que es igual a la valor de Humanoid.JumpPower o la altura de 1> Class.Humanoid.JumpHeight1>, dependiendo del valor de 4> Class.Humanoid.UseJumpPower4> .

JumpHeight

Leer paralelo

Proporciona control sobre los saltos de altura de un Humanoid saltos, 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 desactivar el salto desactivando el estado de Enum.HumanoidStateType.Jumping a través de Humanoid:SetStateEnabled() .

Esta propiedad solo es visible en la ventana Propiedades si Humanoid.UseJumpPower está configurado como falso , ya que no sería relevante de otra manera (en cambio, se usa 1> Class.Humanoid.JumpPower1>).

JumpPower

Leer paralelo

Determina la fuerza hacia arriba que se aplica a la Humanoid cuando salta. El valor inicial de esta propiedad se determina por el valor de StarterPlayer.CharacterJumpPower que es predeterminado para 50 y está limitado entre 0 y 1000. Nota que los saltos también están afectados por la propiedad Class.Workspace

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

Esta propiedad solo es visible en la ventana Propiedades si Humanoid.UseJumpPower está configurado como verdadero , ya que no sería relevante de otra manera (en cambio, se usa 1> Class.Humanoid.JumpHeight1>).

MaxHealth

Leer paralelo

El valor máximo de un Health de un humanoide.

El valor de esta propiedad se utiliza junto con la propiedad Health para escalar la pantalla de salud predeterminada. Cuando un humanoid's Health alcanza MaxHealth, su barra de salud puede no mostrarse, dependiendo de su propiedad 2>Class

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 MaxSlopeAngle de un humanoide, se deslizarán por la pendiente.

Cuando se genera un personaje, esta propiedad se establece según el valor de StarterPlayer.CharacterMaxSlopeAngle .

El valor de esta propiedad está limitado a valores entre 0 ° y 89 °. Por defecto, está 89 °, por lo que los humanoides pueden escalar casi cualquier pendiente que quieran por defecto.

Muestras de código

Limiting The Slope a Humanoid Can Walk Up

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

MoveDirection

Solo lectura
No replicado
Leer paralelo

MoveDirection es una propiedad de lectura que describe la dirección en la que se está caminando un Humanoid como un vehículo de unidad o un fuerza vectorialde longitud cero. La dirección se describe en el espacio del mundo.

Dado que esta propiedad es solo de lectura, no puede ser establecida por un Script o LocalScript .

Muestras de código

Walking Camera Bobble Effect

local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)

NameDisplayDistance

Leer paralelo

La propiedad Nombre de distancia de visualización 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/Salud de Personaje para obtener una guía en profundidad sobre cómo controlar la apariencia de los nombres de personajes y las barras de salud.

NameOcclusion

Leer paralelo

Controla si la barra de nombre y salud de un humanoide se puede ver detrás de paredes o otros objetos. Esta propiedad es un valor de Enum.NameOcclusion y se puede configurar para ocultar todos los nombres, nombres de enemigos o desactivar la ocultación completamente.

En los casos en que el LocalPlayer no tiene asociado ningún Humanoid con él, esta propiedad se aplica en su lugar a la materia Humanoid .

Vea Nombre/Salud de Personaje para obtener una guía en profundidad sobre cómo controlar la apariencia de los nombres de personajes y las barras de salud.

Muestras de código

Occlude Player Names

local Players = game:GetService("Players")
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.NamOcclusion = Enum.NameOcclusion.OccludeAll
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

PlatformStand

Leer paralelo

Determina si el Humanoid está actualmente en el estado Enum.HumanoidStateType.PlatformStanding. Cuando es así, el Humanoid está en un estado en el que es de caída libre y no se puede herramienta de movimiento. Este estado se comporta similar al de sentarse, excepto que saltar no libera el humanoid del estado.

RequiresNeck

Leer paralelo

Permite a los desarrolladores desactivar el comportamiento donde un jugador muere si el cuello se elimina o se desconecta incluso en un momento. Esta propiedad predeterminada es verdadera.

Leer paralelo

RigType describe si un Humanoid está utilizando el rigde personaje legado R6 o el rigde personaje más nuevo R15.

El R6 utiliza 6 visible Parts mientras que el R15 utiliza 15 visible Parts . Los R15 tienen más articulaciones que los R6, lo que los hace mucho más versátiles cuando se animan.

Nota que si esta propiedad se establece incorrectamente, el Humanoid no funcionará correctamente. Por ejemplo, si se establece el RigType de un R15 a R6, el Humanoid morirá, ya que no hay 2>Class.Base

RootPart

Solo lectura
No replicado
Leer paralelo

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

Nota que en el caso de los personajes del jugador, RootPart es lo mismo que el Model.PrimaryPart del aplicación de modeladoPlayer.Character.

SeatPart

Solo lectura
No replicado
Leer paralelo

SeatPart es una referencia a la asiento que un Humanoid está sentado en, si corresponde. El valor de esta propiedad puede ser cualquier Seat o VehicleSeat. Será 2> nulo2> si el Humanoid no está sentado en una asiento.

Nota:

Sit

Leer paralelo

La propiedad Sit es una propiedad de valor que indica si el Humanoid está sentado actualmente. Humanoids puede ser forzado a un estado de sentado estableciendo el valor de esta propiedad a true. Si el Humanoid no está asociado a un asiento mientras que está

Nota:

TargetPoint

Leer paralelo

No usar Esta propiedad solo funciona con el Modo Experimental activado, que se ha descontinuado por completo.

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

Esta propiedad se utiliza principalmente por las herramientas clásicas para determinar qué es 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() de la herramienta, puedes hacer que el NPC dispare un cohete en el punto de destino.

UseJumpPower

Leer paralelo

Cuando se genera un personaje, esta propiedad se establece según el valor de StarterPlayer.CharacterUseJumpPower que predetermina ser cierto.

Al saltar, con este conjunto a la verdad, el valor de Humanoid.JumpHeight se usa para garantizar que los saltos de humanoides a esa altura. Con este conjunto a falso, el valor de Humanoid.JumpPower se usa para aplicar una fuerza hacia arriba.

WalkSpeed

Leer paralelo

Esta propiedad describe con qué rapidez el Humanoid puede caminata, en studs por segundo. Por defecto, tiene el valor de StarterPlayer.CharacterWalkSpeed (16), lo que significa que un personaje de jugador puede mover 16 studs en cualquier dirección cada segundo.

Notas

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

WalkToPart

Leer paralelo

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

Cuando WalkToPart está configurado y un humanoide está tratando activamente de alcanzar la parte, seguirá actualizando su objetivo de Vector3 para ser la posición de la parte, plus la Humanoid.WalkToPoint traducida en el espacio de objetos relativo a la rotación de la parte.

Esto se puede describir en Lua como:


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

Cavernas

  • Configurar el valor de WalkToPart no es suficiente para hacer un inicio humanoide después de una parte.
  • Se le solicita al Humanoide comenzar a intentar alcanzar un objetivo cuando se cambia el valor de WalkToPoint.
  • Esto puede cambiarse en el futuro.
  • El estado de alcanzar el objetivo de un humanoid se acaba de tiempo después de 8 segundos si no alcanza su objetivo.
  • Esto se hace para que los NPC no se queden atascados esperando a que Humanoid.MoveToFinished para desencadenar.
  • Si no desea que esto suceda, debe llamar repetidamente a MoveTo para que el tiempo límite se mantenga restablecido.

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 por la función Humanoid:MoveTo() del humanoide.

Si se establecerel Humanoid.WalkToPart de un humanoid, el objetivo se establece al transformar WalkToPoint relativo a la posición y la rotación de las partes. Si no se establecerel Class.Humanoid.WalkToPart de un humanoid, entonces el humanoid intentará alcanzar la posición y la rotación especificadas por WalkToPoint directamente.

Cavernas

  • El valor de WalkToPoint debe cambiarse a un valor diferente para que el humanoide comience a caminar hacia él.
  • Si desea crear un paseo humanoide a 0,0,0 , debe usar la función MoveTo del Humanoid.
  • Esto puede cambiarse en el futuro.
  • El estado de alcanzar el objetivo de un humanoid se acaba de tiempo después de 8 segundos si no alcanza su objetivo.
  • Esto se hace para que los NPC no se queden atascados esperando a que Humanoid.MoveToFinished para desencadenar.
  • Si no desea que esto suceda, debe llamar repetidamente a MoveTo para que el tiempo límite se mantenga restablecido.

Muestras de código

Humanoid MoveTo Without Time out

local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)

Métodos

AddAccessory

void

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

Cuando se llama este método, se aplica un <a href="https://developer.microsoft.espacio

Si no se puede encontrar el requerido Attachment, entonces el Accessory seguirá siendo padre del humanoide, pero no se desprenderá.

Tipualmente, las soldaduras de accesorios se crean en el servidor, pero pueden ser creadas en el cliente en ciertas situaciones. En estas situaciones, las llamadas cliente a AddAccessory() pueden no siempre producir el comportamiento deseado y puedes usar BuildRigFromAttachments() para

Parámetros

accessory: Instance

El Accessory para ser adjunto.


Devuelve

void

Muestras de código

[Humanoid] AddAccessory Example

local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local clockworksShades = Instance.new("Accessory")
clockworksShades.Name = "ClockworksShades"
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1.6, 1)
handle.Parent = clockworksShades
local faceFrontAttachment = Instance.new("Attachment")
faceFrontAttachment.Name = "FaceFrontAttachment"
faceFrontAttachment.Position = Vector3.new(0, -0.24, -0.45)
faceFrontAttachment.Parent = handle
local mesh = Instance.new("SpecialMesh")
mesh.Name = "Mesh"
mesh.Scale = Vector3.new(1, 1.3, 1)
mesh.MeshId = "rbxassetid://1577360"
mesh.TextureId = "rbxassetid://1577349"
mesh.Parent = handle
humanoid:AddAccessory(clockworksShades)

BuildRigFromAttachments

void

Este método asigna un árbol de Motor6D juntas para el Humanoid . Se requieren juntas de Motor6D para la reproducción de 1> Class.Animation|Animaciones1> .

Desde el RootPart del humanoide, este método recoge todos los Attachments padres en la parte actual cuyo nombre termina con RigAppearance

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


Devuelve

void

Muestras de código

Lua Port of BuildRigFromAttachments

local function createJoint(jointName, att0, att1)
local part0, part1 = att0.Parent, att1.Parent
local newMotor = part1:FindFirstChild(jointName)
if not (newMotor and newMotor:IsA("Motor6D")) then
newMotor = Instance.new("Motor6D")
end
newMotor.Name = jointName
newMotor.Part0 = part0
newMotor.Part1 = part1
newMotor.C0 = att0.CFrame
newMotor.C1 = att1.CFrame
newMotor.Parent = part1
end
local function buildJointsFromAttachments(part, characterParts)
if not part then
return
end
-- first, loop thru all of the part's children to find attachments
for _, attachment in pairs(part:GetChildren()) do
if attachment:IsA("Attachment") then
-- only do joint build from "RigAttachments"
local attachmentName = attachment.Name
local findPos = attachmentName:find("RigAttachment")
if findPos then
-- also don't make double joints (there is the same named
-- rigattachment under two parts)
local jointName = attachmentName:sub(1, findPos - 1)
if not part:FindFirstChild(jointName) then
-- try to find other part with same rig attachment name
for _, characterPart in pairs(characterParts) do
if part ~= characterPart then
local matchingAttachment = characterPart:FindFirstChild(attachmentName)
if matchingAttachment and matchingAttachment:IsA("Attachment") then
createJoint(jointName, attachment, matchingAttachment)
buildJointsFromAttachments(characterPart, characterParts)
break
end
end
end
end
end
end
end
end
local function buildRigFromAttachments(humanoid)
local rootPart = humanoid.RootPart
assert(rootPart, "Humanoid has no HumanoidRootPart.")
local characterParts = {}
for _, descendant in ipairs(humanoid.Parent:GetDescendants()) do
if descendant:IsA("BasePart") then
table.insert(characterParts, descendant)
end
end
buildJointsFromAttachments(rootPart, characterParts)
end
local humanoid = script.Parent:WaitForChild("Humanoid")
buildRigFromAttachments(humanoid)
R15 Package Importer

local AssetService = game:GetService("AssetService")
local InsertService = game:GetService("InsertService")
local MarketplaceService = game:GetService("MarketplaceService")
local PACKAGE_ASSET_ID = 193700907 -- Circuit Breaker
local function addAttachment(part, name, position, orientation)
local attachment = Instance.new("Attachment")
attachment.Name = name
attachment.Parent = part
if position then
attachment.Position = position
end
if orientation then
attachment.Orientation = orientation
end
return attachment
end
local function createBaseCharacter()
local character = Instance.new("Model")
local humanoid = Instance.new("Humanoid")
humanoid.Parent = character
local rootPart = Instance.new("Part")
rootPart.Name = "HumanoidRootPart"
rootPart.Size = Vector3.new(2, 2, 1)
rootPart.Transparency = 1
rootPart.Parent = character
addAttachment(rootPart, "RootRigAttachment")
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(2, 1, 1)
head.Parent = character
local headMesh = Instance.new("SpecialMesh")
headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
headMesh.MeshType = Enum.MeshType.Head
headMesh.Parent = head
local face = Instance.new("Decal")
face.Name = "face"
face.Texture = "rbxasset://textures/face.png"
face.Parent = head
addAttachment(head, "FaceCenterAttachment")
addAttachment(head, "FaceFrontAttachment", Vector3.new(0, 0, -0.6))
addAttachment(head, "HairAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "HatAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "NeckRigAttachment", Vector3.new(0, -0.5, 0))
return character, humanoid
end
local function createR15Package(packageAssetId)
local packageAssetInfo = MarketplaceService:GetProductInfo(packageAssetId)
local character, humanoid = createBaseCharacter()
character.Name = packageAssetInfo.Name
local assetIds = AssetService:GetAssetIdsForPackage(packageAssetId)
for _, assetId in pairs(assetIds) do
local limb = InsertService:LoadAsset(assetId)
local r15 = limb:FindFirstChild("R15")
if r15 then
for _, part in pairs(r15:GetChildren()) do
part.Parent = character
end
else
for _, child in pairs(limb:GetChildren()) do
child.Parent = character
end
end
end
humanoid:BuildRigFromAttachments()
return character
end
local r15Package = createR15Package(PACKAGE_ASSET_ID)
r15Package.Parent = workspace

ChangeState

void

Esta función hace que la Humanoid ingrese al dado Enum.HumanoidStateType, que describe la actividad que la Humanoid está realizando.

Por favor, revisa la página Enum.HumanoidStateType para obtener más información sobre los estados en particular, ya que algunos tienen nombres inintuitivos. Por ejemplo, Enum.HumanoidStateType.Running describe un estado en el que las piernas del humano están en el suelo, incluida la posición estática.

Debido al comportamiento predeterminado de la Humanoid , algunos estados se cambiarán automáticamente al establecerse. Por ejemplo:

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

Parámetros

El Enum.HumanoidStateType que el Humanoid está para realizar.

Valor predeterminado: "None"

Devuelve

void

Muestras de código

Double Jump

local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)

EquipTool

void

Esta función hace que el Humanoid lleve el dado Tool .

El ejemplo de abajo haría que un Player equipara una herramienta en Workspace llamada 'Herramienta' .


local Players = game:GetService("Players")
local player = Players:FindFirstChildOfClass("Player")
if player and player.Character then
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local tool = workspace:FindFirstChild("Tool")
if tool then
humanoid:EquipTool(tool)
end
end
end

Cuando se llama esta función, el humanoid desequipará automáticamente cualquier Tools que tenga actualmente equipado

Aunque estarán equipados, Tools para los cuales Tool.RequiresHandle no funcionará si no tienen controlador, independientemente de si esta función se usa para equiparlos o no

Véase también:

Parámetros

tool: Instance

El Tool para equipar.


Devuelve

void

GetAccessories

Esta función devuelve un arreglo de Accessory objetos que el padre del humanoide está usando actualmente. Todos estos objetos de clase de accesorios se incluirán, independientemente de si están o no asociados.

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

Vea también Humanoid:AddAccessory() para unir un Accessory a un padre de humanoid.


Devuelve

Un arreglo de Accessory objetos que son padre del humanoide.

Muestras de código

Remove Accessories After Loading

local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)

GetAppliedDescription

Esta función devuelve una copia del almacenado de HumanoidDescription que describe su apariencia actual. Esto se puede usar para determinar rápidamente el aspecto de un personaje y asignar su apariencia a otros personajes usando la función Humanoid:ApplyDescription().

Ver también


Devuelve

GetBodyPartR15

Esta función devuelve lo que Enum.BodyPartR15 es, o Part si la parte no es una parte del cuerpo R15. Esta función permite que los desarrolladores recuperen partes del cuerpo del jugador independientemente de los nombres de las partes del cuerpo reales, en lugar de devolver un enum.

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á get a part instancia. Los desarrolladores pueden entonces mirar qué parte del cuerpo que estaba, como la cabeza o el brazo. Luego, dependiendo de qué parte fue, los desarrolladores pueden entonces realizar alguna acción de juego o reemplazar esa parte con alguna otra parte - quizás mostrando daño

Esta función puede ser útil para los juegos en los que la ubicación del golpe es importante. Por ejemplo, se puede usar para determinar si un jugador está golpeado en la pierna y luego ralentizarlo según la lesión.

Parámetros

part: Instance

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


Devuelve

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

GetLimb

Esta función Enum.Limb devuelve el enum.Limb</enu> que está asociado con el Part dado. Funciona para ambas plataformas R15 y R6, por ejemplo:


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

Nota que Humanoid:GetLimb() lanzará un error si el padre de la parte no está configurado para el padre del humanoid.

Parámetros

part: Instance

El Part para el cual se recuperará el Enum.Limb .


Devuelve

El Enum.Limb la parte que coincide.

Muestras de código

Getting a Humanoid's Limbs

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end

GetMoveVelocity


Devuelve

Escribir paralelo

Esta función devuelve el estado actual del Enum.HumanoidStateType , que describe la actividad que el Humanoid está realizando, como saltar o nadar.

También vea Humanoid:SetStateEnabled() para habilitar o deshabilitar un estado específico, y Humanoid:ChangeState() para cambiar el estado actual del humanoid.


Devuelve

Muestras de código

Double Jump

local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)

GetStateEnabled

Escribir paralelo

La función GetStateEnabled返回是否启用 Enum.HumanoidStateType 中的 Humanoid .

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

Cuando se desactivó un particular Enum.HumanoidStateType el humanoid nunca puede ingresar a ese estado. Esto es cierto independientemente de si se hace el intento de cambiar de estado usando Humanoid:ChangeState() o código humano interno de Roblox.

Véase también:

Parámetros


Devuelve

Si el dado Enum.HumanoidStateType está habilitado.

Muestras de código

Setting and Getting Humanoid States

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

Move

void

Esta función 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 está relativa a la dirección del CFrame del 2>Class.Workspace.CurrentCamera|CurrentCamera2> . Como la dire


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

Cuando se llama esta función, el Humanoid se moverá hasta que se llame la función de nuevo. Sin embargo, si se están utilizando los scripts de control predeterminados, esta función se sobrescribirá cuando se llame al jugador Characters . Esto se puede evitar al no utilizar los scripts de control predeterminados o llamar esta función cada marco usando

Esta función se puede llamar en el servidor, pero esto solo se debe hacer cuando el servidor tenga propiedad de red de la instalación del humanoid.

También se ve Humanoid:MoveTo() que hace que un Humanoid camine hacia un punto, y Player:Move() que efectivamente llama a esta función.

Parámetros

moveDirection: Vector3

La dirección para caminar.

relativeToCamera: bool

Establecer a true si el parámetro moveDirection debe tomarse en relación con el CurrentCamera .

Valor predeterminado: false

Devuelve

void

Muestras de código

Moving a Humanoid Forwards

local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
RunService:BindToRenderStep("move", Enum.RenderPriority.Character.Value + 1, function()
if player.Character then
local humanoid = player.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid:Move(Vector3.new(0, 0, -1), true)
end
end
end)

MoveTo

void

Esta función hace que el Humanoid intente caminar hacia la ubicación proporcionada estableciendo las propiedades Humanoid.WalkToPoint y Humanoid.WalkToPart.

Los parámetros lugar y parte coinciden con lo que Humanoid.WalkToPoint y 1> Class.Humanoid.WalkToPart1> serán establecidos.

Si se especifica el parámetro parte, el Humanoid seguirá intentando caminar hacia el punto. Sin embargo, si el par se mueve, el punto Humanoid que está caminando hacia la posición se moverá para estar en la misma posición 1>relativa

El estado de alcanzar el objetivo de un humanoid se acabará 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 para desencadenar. Si no quieres que esto suceda, deberás repetiramente llamar MoveTo para que el tiempo de espera se mantenga reiniciado.

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

Parámetros

location: Vector3

La posición para establecer Humanoid.WalkToPoint a.

part: Instance

El BasePart para establecer Humanoid.WalkToPart a.

Valor predeterminado: "nil"

Devuelve

void

Muestras de código

Humanoid MoveTo Without Time out

local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)

RemoveAccessories

void

Esta función elimina todos los objetos Accessory usados por el padre del humanoide. Para el jugador Characters, esto eliminará todos los sombreros y otros accesorios.

Esta función elimina el objeto Accessory por llamar Instance:Destroy() en ellos, lo que significa que el Parent de los accesorios está configurado como 2>nil2> y está bloqueado.

También vea Humanoid:AddAccessory() para agregar un Accessory y Humanoid:GetAccessories() para obtener todos los objetos 1> Class.Accessory1> que pertenecen a un 4> Class.Humanoid4> .


Devuelve

void

Muestras de código

Remove Accessories After Loading

local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)

ReplaceBodyPartR15

Reemplaza dinámicamente una parte de la extremidad R15/Rthro en un Humanoid con una parte diferente. La parte se escala automáticamente como lo haría normalmente.

Esta función es útil para modificar personajes durante el juego o construir personajes desde una base de rig. La función relacionada GetBodyPartR15 puede ser útil cuando se utiliza esta función.

El nombre de la parte que se pasó debe coincidir con el nombre de la BodyPartR15 Enum pasada.

Parámetros

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

part: BasePart

El Class.Part``Class.Instance que será padre del personaje.


Devuelve

SetStateEnabled

void

Esta función establece si un Enum.HumanoidStateType en particular está habilitado para el Humanoid . Cuando un Enum.HumanoidStateType en particular está deshabilitado, el 1> Class.Humanoid1>

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

Parámetros

El Enum.HumanoidStateType para habilitar o deshabilitar.

enabled: bool

true si state está para ser habilitado, false si 0> state0> está para ser deshabilitado.


Devuelve

void

Muestras de código

Jump Cooldown

local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)

TakeDamage

void

Esta función reduce el Humanoid.Health del Humanoid por el valor dado si no está protegido por un campo de fuerza

Esta función acepta valores negativos para el parámetro cantidad. Esto aumentará el Humanoid.Health del humano. Sin embargo, esto solo tendrá un efecto si no hay ForceField presente.

Cómo ForceFields protege contra TakeDamage

Un Humanoid está considerado protegido por un ForceField si un ForceField cumple con uno de los siguientes criterios:

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

Para obtener más información sobre cómo protege Class.ForceField|ForceFields``Class.Humanoid|Humanoids la página ForceField

Parámetros

amount: number

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


Devuelve

void

Muestras de código

Damaging a Humanoid

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
humanoid:TakeDamage(99)

UnequipTools

void

Esta función desequipa cualquier Tool actualmente equipado por el Humanoid

El Tool desequipado será padre del Backpack de la Player asociado con el 1> Class.Humanoid1> .

Si no se equipa Tool, esta función no hará nada.

Aunque Tools puede ser equipado por NPCs (no jugadores), esta función solo funciona en Humanoids con un padre correspondiente Player . Esto se debe a que un objeto 1> Class.Backpack1> es requerido para padre del desequipado 4> Class.Tool4>

Véase también:


Devuelve

void

Muestras de código

Unequip Tool Keybind

local Players = game:GetService("Players")
local ContextActionService = game:GetService("ContextActionService")
local player = Players.LocalPlayer
ContextActionService:BindAction("unequipTools", function(_, userInputState)
if userInputState == Enum.UserInputState.Begin then
if player.Character then
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:UnequipTools()
end
end
end
end, false, Enum.KeyCode.U)

ApplyDescription

void
Proporciona

Esta función de rendimiento hace que el personaje se vea que coincida con el de la pasada en HumanoidDescription . Una copia de la pasada HumanoidDescription está almacenada como la HumanoidDescription para el 1> Class.Humanoid1> .

Esta función se optimiza al hacer la suposición de que solo esta función se usa para cambiar la apariencia del personaje, y no se hacen cambios a través de otros medios entre llamadas. Si se hacen cambios en el personaje entre llamadas. Entonces esta función puede no hacer que el personaje refleje el pasado en Class.HumanoidDescription

Ver también

Parámetros

humanoidDescription: HumanoidDescription

La HumanoidDescription que quieres coincidirpara que coincida el personaje.

assetTypeVerification: Enum.AssetTypeVerification
Valor predeterminado: "Default"

Devuelve

void

ApplyDescriptionReset

void
Proporciona

Esta función de rendimiento hace que el personaje se vea igual que el de la pasada en HumanoidDescription, incluso después de cambios externos. Una copia del pasado HumanoidDescription está guardada como el HumanoidDescription para el 1> Class.Humanoid1> .

Esta función siempre garantizará que el personaje refleje el pasado en Class.HumanoidDescription

Parámetros

humanoidDescription: HumanoidDescription

La instancia HumanoidDescription que quieres coincidirpara que coincida el personaje.

assetTypeVerification: Enum.AssetTypeVerification
Valor predeterminado: "Default"

Devuelve

void

PlayEmote

Proporciona

Si el emote no se pudo reproducir porque el emoteName no se encuentra en la descripción del humano, esta API devolverá un error. La API devolverá true para indicar que el emote se ha jugado con éxito.

Parámetros

emoteName: string

nombre del emote para jugar.


Devuelve

reproducido con éxito.

Eventos

ApplyDescriptionFinished

Parámetros

description: HumanoidDescription

Climbing

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

Humanoids puede escalar por las escaleras hechas de Parts o TrussParts .

Humanoids escalan en un 70% de su Humanoid.WalkSpeed .

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

Véase también:

Parámetros

speed: number

La velocidad a la que se está subiendo actualmente 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, generalmente cuando el Humanoid.Health alcanza 0. Esto podría ser causado por desconectar su cabeza de su Humanoid.Torso o configurar directamente la propiedad de salud.

Este evento solo se activa si el Humanoid es un descendiente del Workspace. Si el Dead2>Encuentro.HumanoidStateType2> está desactivado, no se desencadenar.


Muestras de código

Humanoid.Died

local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
print(player.Name, "has died!")
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

FallingDown

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

El Humanoid entrará en el estado GettingUp 3 segundos después de que el estado FallingDown esté habilitado. Cuando esto sucede, este evento se disparará con un valor de 2>activo2> de 5>falso5>

Parámetros

active: bool

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


FreeFalling

Este evento se activa cuando el Humanoid ingresa o salga del Freefall``Enum.HumanoidStateType

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

Aunque el estado Freefall generalmente termina cuando el Humanoid alcanza el suelo, este evento puede dispararse con activos iguales a 2>falso2> si el estado

Parámetros

active: bool

Si el Humanoid está entrando o saliendo del Freefall``Enum.HumanoidStateType .


GettingUp

Este evento se activa cuando el Humanoid ingresa o salga del estado Enum.HumanoidStateType.GettingUp, un estado de transición que se activa poco después de que el Humanoid ingrese al estado 2>Enmarcar estado2> (3 segundos) o 5>En

Cuando un Humanoid intenta volver, este evento se disparará primero con un parámetro active de true antes de poco después de volver a disparar con un parámetro 1> active1> de 4> force4> .

Para forzar un Humanoid a caer, usa la función Humanoid:ChangeState() con Enum.HumanoidStateType.FallingDown .

Parámetros

active: bool

Si el Humanoid está entrando o saliendo del GettingUp``Enum.HumanoidStateType .


HealthChanged

Este evento se activa cuando el Humanoid.Health cambia. Sin embargo, no se activará si la salud está aumentando a partir de un valor igual o mayor a Humanoid.MaxHealth .

Cuando Humanoid.Health alcanza cero, el Humanoid morirá y el evento Humanoid.Died se desencadenar. Este evento se disparará con un valor de cero.

Parámetros

health: number

El nuevo valor de Humanoid.Health .


Muestras de código

Humanoid.HealthChanged

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local currentHealth = humanoid.Health
local function onHealthChanged(health)
local change = math.abs(currentHealth - health)
print("The humanoid's health", (currentHealth > health and "decreased by" or "increased by"), change)
currentHealth = health
end
humanoid.HealthChanged:Connect(onHealthChanged)
end
player.CharacterAdded:Connect(onCharacterAdded)
Health Bar

local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end

Jumping

Este evento se activa cuando el Humanoid ingresa y salga del Jumping``Enum.HumanoidStateType .

Cuando un Humanoid salta, este evento se activa con un parámetro active de true justo antes de que se active de nuevo con

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

Parámetros

active: bool

Si el Humanoid está entrando o saliendo del Jumping``Enum.HumanoidStateType .


MoveToFinished

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

Las propiedades Humanoid.WalkToPoint y Humanoid.WalkToPart se pueden configurar individualmente, o utilizando la función Humanoid:MoveTo().

Si el Humanoid alcanza su objetivo en 8 segundos, este evento se devolverá con alcanzado como cierto. Si el objetivo no se alcanza en 8 segundos, el Humanoid dejará de caminar y 2> alcanzado2> será falso. Este tiempo de espera se puede restablecer llam

Parámetros

reached: bool

Un valor deBooleano que indica si el Humanoid alcanzado es el objetivo. Verdadero si el Humanoid alcanza su objetivo, 2> falso2> si el tiempo de caminata se acabó antes de que se pudiera alcanzar el objetivo.


Muestras de código

Humanoid MoveTo Without Time out

local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)

PlatformStanding

Este evento se activa cuando el Humanoid ingresa o salga del PlatformStanding``Enum.HumanoidStateType .

Mientras que el Humanoid está en el estado PlatformStanding, la propiedad Humanoid.PlatformStand será 2> verdadera2>.

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

La PlatformStand Enum.HumanoidStateType estaba asociada con la parte ahora desactivada Platform. A pesar de esto, todavía se puede usar por los desarrolladores.

Parámetros

active: bool

Si el Humanoid está entrando o saliendo del PlatformStanding``Enum.HumanoidStateType


Ragdoll

Este evento se activa cuando el Humanoid ingresa o salga del Ragdoll``Enum.HumanoidStateType .

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

Usa Humanoid:SetStateEnabled() para desactivar el estado de Disponible para quedarse en el estado de Muñeco de Papel.

Véase también:

  • Humanoid.FallingDown para el evento Class.Humanoid con el estado FallingDown, que se comporta similarmente a Ragdoll

Parámetros

active: bool

Si el Humanoid está entrando o saliendo del Ragdoll``Enum.HumanoidStateType


Running

Este evento se activa cuando la velocidad con la que se están ejecutando los cambios en un Humanoid es.

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

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

Véase también:

Parámetros

speed: number

La velocidad a la que se está ejecutando el Humanoid


Muestras de código

Humanoid Running

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onRunning(speed: number)
if speed > 0 then
print(`{localPlayer.Name} is running`)
else
print(`{localPlayer.Name} has stopped`)
end
end
humanoid.Running:Connect(function(speed: number)
onRunning(speed)
end)

Seated

Este evento se activa cuando un Humanoid o un Seat o un VehicleSeat está sentado en o se levanta.

Cuando un personaje entra en contacto con un asiento, se aplica a la asiento y se muestra una animación de sentado. 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 están sentados.
  • Si el personaje se levantó de un asiento, el parámetro active será falso y currentSeatPart será nulo.

Véase también:

  • Humanoid.Sit , lo que indica si un Humanoid está sentado actualmente
  • Humanoid.SeatPart , lo que indica el asiento en el que se encuentra actualmente un Humanoid, si corresponde.

Parámetros

active: bool

Verdadero si el Humanoid está sentado.

currentSeatPart: BasePart

El asiento en el que se sienta el Humanoid está sentado si está sentado.


Muestras de código

Finding a Player's Seat

local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local function onSeated(isSeated, seat)
if isSeated then
print("I'm now sitting on: " .. seat.Name .. "!")
else
print("I'm not sitting on anything")
end
end
humanoid.Seated:Connect(onSeated)

StateChanged

Este evento se activa cuando el estado del Humanoid es cambiado.

Dado que no hay estado humanoide "inactividad", deberías usar el evento Humanoid.Running o escuchar la parte RootPart del Velocity para trabajar cuando el 2>Class.Humanoid2> está parado en su lugar.

Ver también

Parámetros

El introducirde estado anterior del humanoide.

El introducirde estado actual del humanoide.


Muestras de código

Jumping Particles

local character = script.Parent
local primaryPart = character.PrimaryPart
-- create particles
local particles = Instance.new("ParticleEmitter")
particles.Size = NumberSequence.new(1)
particles.Transparency = NumberSequence.new(0, 1)
particles.Acceleration = Vector3.new(0, -10, 0)
particles.Lifetime = NumberRange.new(1)
particles.Rate = 20
particles.EmissionDirection = Enum.NormalId.Back
particles.Enabled = false
particles.Parent = primaryPart
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
-- listen to humanoid state
local function onStateChanged(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
particles.Enabled = true
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
particles.Enabled = false
end
end
end
humanoid.StateChanged:Connect(onStateChanged)
Jump Cooldown

local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)

StateEnabledChanged

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

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

Véase también:

Parámetros

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

isEnabled: bool

Es cierto si el estado ahora está habilitado.


Muestras de código

Humanoid State Change Detector

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onStateEnabledChanged(state, enabled)
if enabled then
print(state.Name .. " has been enabled")
else
print(state.Name .. " has been disabled")
end
end
humanoid.StateEnabledChanged:Connect(onStateEnabledChanged)

Strafing

Este evento no se activa cuando el Humanoid está saturendo y no debe ser usado por los desarrolladores

Este evento se activa cuando el Humanoid ingresa o salga del StrafingNoPhysics``Enum.HumanoidStateType .

Cuando la Humanoid ingrese al estado de StrafingNoPhysics este evento se disparará con un parámetro activo de 2>verdadero2> . El evento se disparará de nuevo con un parámetro 5>act

Este evento está asociado con el estado StrafingNoPhysics``Class.Humanoid y no hace no fuego cuando el estado 1> Class.Humanoid1> está en movimiento perpendicular a la dirección que está hacia. Este estado no está en uso, si se establece us

Parámetros

active: bool

Si el Humanoid está entrando o saliendo del StrafingNoPhysics``Enum.HumanoidStateType .


Swimming

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

Humanoids nada en 87.5% de su Humanoid.WalkSpeed .

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

Véase también:

Parámetros

speed: number

La velocidad a la que actualmente nada el Humanoid


Touched

Este evento se activa cuando uno de los limbos del humanoide entra en contacto con otro BasePart . El BasePart que toca el limbo, junto con el propio limbo, se da.

Este evento no se activará cuando los limbes que pertenecen a Humanoid entren en contacto con ellos mismos.

Alternativas

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

  • En la mayoría de los casos, se recomienda conectar un evento de BasePart.Touched para BaseParts de interés en lugar, como el evento de Class.Humanoid.Touched</
  • Cuando intenta trabajar cuando el Humanoid ha aterrizado en el suelo, el evento Humanoid.StateChanged es más adecuado. Alternativamente, puede verificar Humanoid.FloorMaterial para ver si el humanoid está en cualquier material que no sea de aire.

Notas

Parámetros

touchingPart: BasePart

El BasePart el Humanoid ha entrado en contacto.

humanoidPart: BasePart

El miembro del Humanoid que ha sido tocado.


Muestras de código

Midas Touch

local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local partInfo = {}
local debounce = false
local function onHumanoidTouched(hit, _limb)
if debounce then
return
end
if not hit.CanCollide or hit.Transparency ~= 0 then
return
end
if not partInfo[hit] then
partInfo[hit] = {
BrickColor = hit.BrickColor,
Material = hit.Material,
}
hit.BrickColor = BrickColor.new("Gold")
hit.Material = Enum.Material.Ice
debounce = true
task.wait(0.2)
debounce = false
end
end
local touchedConnection = humanoid.Touched:Connect(onHumanoidTouched)
local function onHumanoidDied()
if touchedConnection then
touchedConnection:Disconnect()
end
-- undo all of the gold
for part, info in pairs(partInfo) do
if part and part.Parent then
part.BrickColor = info.BrickColor
part.Material = info.Material
end
end
end
humanoid.Died:Connect(onHumanoidDied)