Humanoid

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Le humanoid est un objet spécial qui donne aux modèles la fonctionnalité d'un personnage. Il accorde au modèle la capacité de marcher

R6

  • Une base de données de personnage basique qui utilise 6 parties pour les membres.
  • La partie Head doit être attachée à une partie nommée Torso, ou le humanoid mourra immédiatement.
  • Les apparences de BodyPart sont appliquées à l'aide de CharacterMesh objets.
  • Certaines propriétés, telles que Humanoid.LeftLeg et Humanoid.RightLeg, ne fonctionnent que avec R6.

R15

  • Plus complexe que R6, mais également beaucoup plus flexible et robuste.
  • Utilise 15 parties pour les membres.
  • La partie Head doit être attachée à une partie nommée UpperTorso ou le humanoid mourra immédiatement.
  • Les apparences de BodyPart doivent être assemblées directement.
  • Peut être redimensionné dynamiquement en utilisant des objets spéciaux NumberValue parentés à l'intérieur du Humanoid.
  • Le Humanoid générera automatiquement Vector3Value objets nommés OriginalSize à l'intérieur de chaque membre.
  • Si une valeur numérique est parentée à l'intérieur du Humanoid et est nommée l'un des éléments suivre, il sera utilisé pour contrôler la fonctionnalité de mise à l'échelle :
    • Échelle de profondeur du corps
    • Hauteur du corps
    • Échelle de largeur du corps
    • Taille de tête

Échantillons de code

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)

Résumé

Propriétés

Méthodes

Évènements

Propriétés

AutoJumpEnabled

Lecture parallèle

AutoJumpEnabled détermine si oui ou non le Humanoid essaie de sauter automatiquement par-dessus un obstacle qu'il traverse.

Actuellement, cette propriété ne fonctionne que lorsque les conditions suivantes sont vérées :

  • Le modèle de caractère du Humanoid est le Player.Character d'un Player .
  • Le joueur en question utilise des contrôles tactiles.

Lorsque le personnage d'un joueur apparaît, la valeur de la propriété correspond à la propriété du joueur Player.AutoJumpEnabled - qui, à son tour, correspond à la propriété StarterPlayer.AutoJumpEnabled.

Échantillons de code

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

Lecture parallèle

La propriété AutoRotate décrit si oui ou non le Humanoid tournera automatiquement pour faire face dans la direction dans laquelle ils se déplacent. Lorsqu'il est réglé sur vrai, le modèle de caractère se tournera progressivement pour faire face à leur direction de déplacement à mesure que le Humanoid se promène. Lorsqu'il est réglé sur faux, le modèle de caractère restera fixé dans sa rotation actuelle, à moins qu'une force de rotation soit appliquée au Rotation de la partie racine du humanoid.

Si le modèle de personnage se trouve être le personnage d'un joueur, alors le comportement de la rotation de l'humanoïde est influencé par la propriété Type de rotation de l'UserGameSettings.

Lorsque la propriété AutoRotate est réglée sur vrai, la propriété RotateType a les effets suivants sur la rotation de l'humanoïde :


<tbody>
<tr>
<td>Mouvement relatif</td>
<td />
<td />
</tr>
<tr>
<td>Caméra relative</td>
<td>Le personnage tournera pour faire face dans la direction de la caméra.</td>
<td>Le joueur a sa caméra zoomée en vue subjective, ou il est en mode mode de changement de vitesse.</td>
</tr>
</tbody>
Type de rotationComportementContexte

Échantillons de code

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

Lecture parallèle

Le Humanoid a six valeurs de mise à l'échelle des enfants, y compris BodyDepthScale, BodyHeightScale », BodyProportionScale », 1> BodyTypeScale », 4> HeadScale ». Changer la valeur de l'un de ces facteurs provoque que les parties et accesso

BreakJointsOnDeath

Lecture parallèle

Détermine si les articulations du humanoid se brisent lorsque vous êtes dans l'état Enum.HumanoidStateType.Dead. Par défaut, les valeurs sont réglées sur true.

CameraOffset

Lecture parallèle

La propriété CameraOffset spécifie un décalage à la position de l'objet de la caméra lorsque son Camera.CameraSubject est défini sur cette position Humanoid.

L'Offset est appliqué dans l'espace objet, relativement à l'orientation du Humanoid's HumanoidRootPart . Par exemple, une valeur Vector3 d'unOffset de (0, 10, 0) déplace la caméra du joueur de 10 studs au-dessus du joueur's humanoid.

Échantillons de code

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)
Lecture parallèle

La propriété DisplayDistanceType contrôle le comportement de distance du nom et de la santé du humanoïde. Cette propriété est définie en utilisant le Enum.HumanoidDisplayDistanceType enum avec trois valeurs disponibles, chacune avec leur propre ensemble de règles :

  • Lorsque vous avez défini sur Viewer, le humanoid voit le nom/santé des autres humanoïdes dans la portée de son propre NameDisplayDistance et HealthDisplayDistance .
  • Lorsque vous avez défini sur Subject, le humanoid prend le contrôle complet sur son propre nom et sa santé affichée à travers ses valeurs NameDisplayDistance et NameDisplayDistance.
  • Lorsque vous avez défini sur None, la barre de nom et la santé du humanoid ne s'affichent pas sous aucune circonstance.

Voir Nom du personnage/Affichage de la santé pour un guide en détail sur le contrôle de l'apparence des noms de personnages et des barres de santé.

Échantillons de code

Displaying a Humanoid's Health and Name

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

DisplayName

Lecture parallèle

DisplayName est une propriété qui détermine la façon dont le nom du humanoid est affiché lorsqu'il est visible. Par défaut, un nouveau humanoid aura la valeur d'une chaîne vide. Si DisplayName est une chaîne vide, la façon dont le nom du humanoid sera affiché sera la valeur par défaut du nom de l'父.

Chargement du personnage du joueur

Lorsque les joueurs chargent leur personnage, soit automatiquement soit par l'utilisation de LoadCharacter(), le Humanoid qui est créé par le moteur aura son DisplayName propriété de DisplayName à la propriété du joueur.

StarterCharacter et StarterHumanoid

Lorsqu'un Humanoid nommé StarterHumanoid est associé à StarterHumanoid, ou

EvaluateStateMachine

Lecture parallèle

FloorMaterial

Lecture uniquement
Non répliqué
Lecture parallèle

Ceci est une propriété de lecture unique qui décrit le Enum.Material sur lequel se trouve actuellement le Humanoid. Il fonctionne avec les deux types de voxels Parts et 1> Class.Terrain1>.

L'exemple de code ci-dessous montre comment écouter quand cette propriété change en utilisant Object:GetPropertyChangedSignal() . Lorsque le matériau sur lequel se trouve le humanoid change, il imprimera un message indiquant que le nouveau matériau est sur lequel il est basé.


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

Grotte

  • Lorsque la valeur Humanoid n'est pas sur un sol, la valeur de cette propriété sera réglée sur Air.
    • Ceci se produit car les propriétés de ce type ne peuvent pas avoir de valeur vide.
    • Ceci peut causer une certaines modifications si un matériau est réglé sur Air, bien que dans la pratique, les parties ne sont pas censées utiliser ce matériau en premier emplacement.
  • Le modèle de caractère du Humanoid doit être capable de se heurter au sol, ou il ne sera pas détecté.

Health

Non répliqué
Lecture parallèle

Cette propriété représente la santé actuelle du Humanoid . La valeur est restreinte à la tranche entre 0 et MaxHealth . Si le humanoid est mort, cette propriété est continuellement réglée sur 0.

Notez que la fonction TakeDamage() peut être utilisée pour soustraire de Health au lieu de définir la propriété directement.

Régénération de la santé

Par défaut, un script de régénération de santé passif est automatiquement inséré dans les humanoides. Cela cause les personnages non morts de générer 1 % de MaxHealth chaque seconde. Pour désactiver ce comportement de régénération, ajoutez un script vide nommé Script nommé Santé à 1> Class.StarterCharacterScript

Affichage de la barre de santé

Lorsque Health est inférieur à MaxHealth, une barre de santé est affichée dans l'expérience. Le comportement d'affichage de la barre de santé dépend du HealthDisplayDistance et du 1> Class.Humanoid.HealthDisplayType

Voir Nom du personnage/Affichage de la santé pour un guide en détail sur le contrôle de l'apparence des noms de personnages et des barres de santé.

Mort

Lorsque la valeur de la santé du personnage atteint 0, le Humanoid passe automatiquement au Enum.HumanoidStateType.Dead état. Dans cet état, Health est verrouillé à 0 ; cependant, il n'y a pas d'erreur ou d'

HealthDisplayDistance

Lecture parallèle

Cette propriété est un nombre utilisé conjointement avec la propriété DisplayDistanceType pour contrôler la distance à partir de laquelle la barre de santé d'un humanoid peut être vue.

Voir Nom du personnage/Affichage de la santé pour un guide en détail sur le contrôle de l'apparence des noms de personnages et des barres de santé.

Lecture parallèle

Cette propriété contrôle quand la barre de santé d'un humanoid's peut être affichée. Par défaut, cette propriété est réglée sur Class.Humanoid.Health|

Remarquez que cette propriété fonctionne indépendamment de la propriété HealthDisplayDistance du humanoid qui est responsable de la suppression de la barre de santé à certaines distances. Si Humanoid.HealthDisplayType|HealthDisplayType est défini sur Enum.Humanoid

Voir Nom du personnage/Affichage de la santé pour un guide en détail sur le contrôle de l'apparence des noms de personnages et des barres de santé.

HipHeight

Lecture parallèle

Détermine la distance (en studs) du sol lequel le RootPart devrait être quand le humanoid est debout. Le RigType influence la façon dont cette propriété se comporte.

Pour les R15, une hauteur d'hippade appropriée est préset pour assurer la hauteur de la RootPart correcte. La hauteur des jambes n'est pas utilisée. La hauteur globale du humanoid peut être décrite dans la formule suivante :


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

Pour les R6, HipHeight au lieu de décrire un décentragerelatif. La hauteur globale du humanoid peut être décrite dans la formule suivante :


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

Jump

Non répliqué
Lecture parallèle

Si true , le saut Humanoid avec une force vers le haut égale à la valeur de Humanoid.JumpPower ou la hauteur de 1> Class.Humanoid.JumpHeight1> , en fonction de la valeur de 4> Class.Humanoid.UseJumpPower4> .

JumpHeight

Lecture parallèle

Fournit un contrôle sur la hauteur d'un saut Humanoid, dans les studs. La valeur de départ de cette propriété est déterminée par la valeur de StarterPlayer.CharacterJumpHeight, qui est par défaut 7.2.

Bien que le fait de définir cette propriété à 0 empêche effectivement la saut, il est recommandé de désactiver le saut en désactivant l'état Enum.HumanoidStateType.Jumping .

Cette propriété n'est visible que dans la fenêtre propriétés si Humanoid.UseJumpPower est réglé sur faux , car il ne serait pas pertinent sinon (au lieu de cela, 1> Class.Humanoid.JumpPower1> est utilisé).

JumpPower

Lecture parallèle

Détermine la force vers le haut appliquée au Humanoid lors du saut. La valeur de départ de cette propriété est déterminée par la valeur de StarterPlayer.CharacterJumpPower qui est par défaut de 50 et est comprise entre 0 et 1000. Notez que les sauts sont également influencés par la propriété Class.Workspace.Gr

Bien que le fait de définir cette propriété à 0 empêche effectivement la saut, il est recommandé de désactiver le saut en désactivant l'état Enum.HumanoidStateType.Jumping .

Cette propriété n'est visible que dans la fenêtre propriétés si Humanoid.UseJumpPower est réglé sur oui , car sinon (au lieu de cela, 1> Class.Humanoid.JumpHeight1> est utilisé).

MaxHealth

Lecture parallèle

La valeur maximale d'un humanoid's Health .

La valeur de cette propriété est utilisée avec la propriété Health pour afficher la barre de santé par défaut. Lorsque un humanoid atteint Health , sa barre de santé peut ne pas être affichée, en fonction de sa propriété MaxHealth.

MaxSlopeAngle

Lecture parallèle

Cette propriété détermine l'angle de pente maximum qu'un humanoïde peut escalader. Si l'angle d'une pente est supérieur à l'angle de pente maximum d'un humanoïde, ils glisseront vers le bas de la pente.

Lorsqu'un personnage apparaît, cette propriété est définie en fonction de la valeur de StarterPlayer.CharacterMaxSlopeAngle .

La valeur de cette propriété est restreinte aux valeurs entre 0° et 89°. Il s'agit par défaut de 89°, afin que les humanoïdes puissent facilement escalader n'importe quelle pente qu'ils veuillent par défaut.

Échantillons de code

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

Lecture uniquement
Non répliqué
Lecture parallèle

MoveDirection est une propriété de lecture qui décrit la direction dans laquelle un Humanoid marche, en tant que vecteur d'unité ou de longueur force vectorielle. La direction est décrite dans l'espace mondial.

Puisque cette propriété est seulement lue, elle ne peut pas être définie par un Script ou un LocalScript.

Échantillons de code

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

Lecture parallèle

La propriété NomDisplayDistance est un nombre utilisé conjointement avec la propriété Humanoid.DisplayDistanceType pour contrôler la distance à partir de laquelle le nom d'un humanoid peut être vu.

Voir Nom du personnage/Affichage de la santé pour un guide en détail sur le contrôle de l'apparence des noms de personnages et des barres de santé.

NameOcclusion

Lecture parallèle

Contrôle si la barre de nom et de santé d'un humanoid peut être vue derrière des murs ou d'autres objets. Cette propriété est une valeur Enum.NameOcclusion et peut être configurée pour exclure tous les noms, les noms des ennemis ou désactiver l'occlusion entièrement.

Dans les cas où le LocalPlayer n'a pas de Humanoid associé avec lui, cette propriété s'applique plutôt à l'objet Humanoid.

Voir Nom du personnage/Affichage de la santé pour un guide en détail sur le contrôle de l'apparence des noms de personnages et des barres de santé.

Échantillons de code

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

Lecture parallèle

Détermine si le Humanoid est actuellement dans l'état Enum.HumanoidStateType.PlatformStanding. Lorsque c'est le cas, le Humanoid est dans un état où il tombe librement et ne peut pas mouvement. Ce comportement ressemble à celui de la position assise, sauf que le saut ne libère pas le Humanoid de l'état.

RequiresNeck

Lecture parallèle

Permet aux développeurs de désactiver le comportement où un joueur meurt si le Neck Character|character est retiré ou déconnecté même pendant un court instant. Cette propriété par défaut est vraie.

Lecture parallèle

RigType décrit si un Humanoid utilise le plateformede caractères R6 hérité ou le plateformede caractères R15 plus récent.

Le R6 utilise 6 Parts visibles, tandis que le R15 utilise 15 Parts visibles. Les R15 ont plus de joints que les R6, ce qui les rend beaucoup plus polyvalents lorsqu'ils sont animés.

Remarquez que si cette propriété est définie incorrectement, la Humanoid ne fonctionnera pas correctement. Par exemple, si le RigType d'un humanoid R15 est réglé sur R6, le Humanoid mourra car il n'y a pas de <

RootPart

Lecture uniquement
Non répliqué
Lecture parallèle

Une référence à l'objet HumanoidRootPart du Humanoid qui contrôle le comportement d'un humanoïde dans le monde 3D. Cette partie est généralement invisible.

Remarquez que dans le cas des personnages de joueurs, RootPart est la même que la Model.PrimaryPart de la modèlisationPlayer.Character.

SeatPart

Lecture uniquement
Non répliqué
Lecture parallèle

SeatPart est une référence à la siège dans laquelle un Humanoid est actuellement assis, si nécessaire. La valeur de cette propriété peut être soit un Seat , soit un VehicleSeat. Il sera 2> nul2> si le Humanoid n'est pas actuellement assis dans une siège.

Remarque :

Sit

Lecture parallèle

La propriété Sit est un booléen qui indique si le Humanoid est actuellement assis. Humanoids peut être forcé dans un état assis en définissant la valeur de cette propriété à vrai. Si le Humanoid n'est pas attach

Remarque :

  • Le Seat ou VehicleSeat le Humanoid assis sur peut être obtenu en utilisant la propriété 1> Class.Humanoid.SeatPart1>
  • Il est possible de détecter quand un Humanoid se sitte en se connectant à l'événement Humanoid.Seated.

TargetPoint

Lecture parallèle

Ne pas utiliser Cette propriété ne fonctionne que avec le mode expérimental activé, qui a été entièrement abandonné.

Cette propriété décrit une position 3D dans l'espace où le Player contrôlant ce Humanoid a cliqué avec un Tool équipé.

Cette propriété est principalement utilisée par les outils classiques pour déterminer lequel d'un humanoid vise lorsqu'il active un outil. Si vous donnez à un NPC un lanceur de fusée classique, définissez leur Point cible et puis appelez la fonction Tool:Activate() de l'outil, vous pouvez faire en sorte que le NPC tire une fusée au point cible.

UseJumpPower

Lecture parallèle

Lorsqu'un personnage apparaît, cette propriété est définie en fonction de la valeur de StarterPlayer.CharacterUseJumpPower qui par défaut est réglée sur true.

Lorsque vous sautez, avec ce paramètre à vrai, la valeur Humanoid.JumpHeight est utilisée pour garantir que les sauts humanoides atteignent cette hauteur. Avec ce paramètre à faux, la valeur Humanoid.JumpPower est utilisée pour appliquer une force vers le haut.

WalkSpeed

Lecture parallèle

Cette propriété décrit la vitesse à laquelle le Humanoid peut marcher, en studs par seconde. Il s'agit par défaut de la valeur de StarterPlayer.CharacterWalkSpeed (16), ce qui signifie qu'un personnage de joueur peut déplacer 16 studs dans n'importe quelle direction chaque seconde.

Notes

  • Lorsqu'il est contrôlé sur un appareil mobile ou sur un gamepad, un humanoid peut marcher plus lentement que sa vitesse de marche WalkSpeed si le joystick de contrôle est déplacé d'un degré graduel du centre.
  • Vous pouvez geler un humanoid en place en définissant WalkSpeed sur 0 ; cela empêche le joueur de le déplacer à travers les mécanismes de déplacement par défaut.
  • Le script d'animation par défaut fait en sorte que les animations de déplacement d'un humanoid se basent sur la vitesse de déplacement relative de 16 studs/seconde.
  • La vitesse à laquelle le Humanoid marche actuellement peut être obtenue en utilisant l'événement Running.

WalkToPart

Lecture parallèle

WalkToPart est une référence à une partie que le Humanoid essaie d'atteindre. Cette propriété est habituellement définie lorsqu'une partie est passée en tant que deuxième argument de la fonction Humanoid:MoveTo() du Humanoid.

Lorsque WalkToPart est défini et qu'un humanoid essaie activement de toucher la partie, il continuera à mettre à jour son objectif Vector3 pour être la position de la partie, plus le Humanoid.WalkToPoint traduit dans l'espace d'objet relatif à la rotation de la partie.

Ceci peut être décrit en Lua comme :


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

Grotte

  • Définir la valeur de WalkToPart n'est pas suffisant pour faire un début humanoïde après une partie.
  • Le Humanoid est invité à commencer à essayer d'atteindre un objectif lorsque la valeur de WalkToPoint est modifiée.
  • Cela peut être modifié à l'avenir.
  • L'état de atteindre la cible d'un humanoid atteint son expiration après 8 secondes s'il ne atteint pas sa cible.
  • Ceci est fait afin que les PNJ ne se retrouvent pas coincés en attendant Humanoid.MoveToFinished pour lancer.
  • Si vous ne voulez pas que cela se produise, vous devez répéter plusieurs fois MoveTo afin que la minuterie se réinitialise.

WalkToPoint

Lecture parallèle

WalkToPoint décrit la position 3D dans l'espace que un humanoïde essaie d'atteindre, après avoir été invité à le faire par la fonction Humanoid:MoveTo() du humanoïde.

Si un humanoid est configurer, le but est défini en transformant WalkToPoint relatif à la position et la rotation des parties. Si WalkToPart n'est pas configurer, le humanoid essaie de atteindre la position 3D spécifiée par WalkToPoint directement.

Grotte

  • La valeur de WalkToPoint doit être modifiée pour que le humanoid commence à marcher vers elle.
  • Si vous voulez faire un marché humanoïde à 0,0,0 , vous devriez utiliser la fonction MoveTo du Humanoid.
  • Cela peut être modifié à l'avenir.
  • L'état de atteindre la cible d'un humanoid atteint son expiration après 8 secondes s'il ne atteint pas sa cible.
  • Ceci est fait afin que les PNJ ne se retrouvent pas coincés en attendant Humanoid.MoveToFinished pour lancer.
  • Si vous ne voulez pas que cela se produise, vous devez répéter plusieurs fois MoveTo afin que la minuterie se réinitialise.

Échantillons de code

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éthodes

AddAccessory

void

Cette méthode attache le Accessory spécifié au parent de l'humanoïde.

Lorsque cette méthode est appelée, une Accessory est attachée au personnage en recherchant un Class.

Si le requis Attachment ne peut pas être trouvé, alors le Accessory restera parenté au parent du humanoid mais il sera détaché.

En général, les soudures d'accessoires sont créées sur le serveur, mais elles peuvent être créées sur le client sous certaines conditions. Dans ces situations, les appels côté client à AddAccessory() peuvent ne pas toujours produire le comportement souhaité et vous pouvez utiliser BuildRigFromAttachments() pour for

Paramètres

accessory: Instance

Le Accessory à attacher.


Retours

void

Échantillons de code

[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

Cette méthode assemble une arbre de Motor6D joints pour le Humanoid . Motor6D joints sont requis pour le playback de 1> Class.Animation|Animations1> .

En commençant à partir de la racine du RootPart du humanoïde, cette méthode collecte tous les Attachments parents dans la partie actuelle dont le nom se termine par

Humanoid:BuildRigFromAttachments() échelle également le personnage et définit les couleurs du corps.


Retours

void

Échantillons de code

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

Cette fonction cause le Humanoid à entrer dans le donné Enum.HumanoidStateType, décrivant l'activité que le Humanoid est en train de faire.

Veuillez consulter la page Enum.HumanoidStateType pour plus d'informations sur les États spécifiques, car certains ont des noms inintuitifs. Par exemple, Enum.HumanoidStateType.Running décrit un État où les jambes du humanoid sont sur le sol, y compris lorsqu'il est stationnaire.

En raison du comportement par défaut de Humanoid, certaines états seront automatiquement modifiés lorsqu'il est configurer. Par exemple :

Voir aussi Humanoid:SetStateEnabled() pour activer ou désactiver un certain état, et Humanoid:GetState() pour obtenir l'état actuel du humanoid.

Paramètres

Le Enum.HumanoidStateType qui doit être exécuté.

Valeur par défaut : "None"

Retours

void

Échantillons de code

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

Cette fonction fait en sorte que le Humanoid équipe le Tool donné.

L'exemple ci-dessous provoquerait qu'un Player équipe un outil dans un Workspace nommé 'Tool' .


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

Lorsque cette fonction est appelée, le humanoid dééquipera automatiquement n'importe lequel des Tools qu'il a actuellement équipé

Bien qu'ils soient équipés, Tools pour lesquels Tool.RequiresHandle est true ne fonctionnera pas s'ils n'ont pas de contrôleur, qu'il s'agisse d'équiper ou non

Voir aussi :

Paramètres

tool: Instance

Le Tool pour équiper.


Retours

void

GetAccessories

Cette fonction renvoie un tableau d'objets Accessory que le parent de l'humanoid porte actuellement. Tous ces objets Accessory seront inclus, indépendamment de si ils sont attachés ou non.

Si la Humanoid n'a pas d'objets Accessory, un tableau vide sera renvoyé.

Voir aussi Humanoid:AddAccessory() pour attacher un Accessory à un parent d'un humanoid.


Retours

Un tableau d'objets Accessory qui sont parentés à la racine du parent du humanoid.

Échantillons de code

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

Cette fonction renvoie une copie du cache de l'humanoid's HumanoidDescription qui décrit son apparence actuelle. Cela peut être utilisé pour déterminer rapidement le look d'un personnage et l'attribuer à un autre personnage en utilisant la fonction Humanoid:ApplyDescription().

Voir aussi


Retours

GetBodyPartR15

Cette fonction renvoie ce que Enum.BodyPartR15 est, ou Part est si la partie n'est pas une partie du corps R15. Cette fonction permet aux développeurs de récupérer les parties du corps des joueurs indépendamment de ce que sont les noms de la partie réelle, ce qui retourne un enum.

Il peut être utilisé en conjonction avec Humanoid:ReplaceBodyPartR15() . Par exemple, si une partie du corps d'un joueur touche quelque chose, cette fonction retournera get a part instance. Les développeurs peuvent alors regarder ce que partie du corps a été, comme la tête ou l'épaule. Ensuite, en fonction de ce que cette partie a été, les développeurs peuvent soit effectuer une action de jeu en jeu, soit remplacer cette partie par une autre partie - peut-

Cette fonction peut être utile pour les jeux où la position d'impact est importante. Par exemple, il peut être utilisé pour déterminer si un joueur est touché dans la jambe et puis les ralentir en fonction de l'injure.

Paramètres

part: Instance

La partie spécifiée étant vérifiée pour voir si c'est une partie du corps R15.


Retours

Type de pièce du corps R15 spécifié ou inconnu si la pièce n'est pas une pièce du corps.

GetLimb

Cette fonction renvoie l'ensemble Enum.Limb qui est associé avec le Part donné. Il fonctionne pour les R15 et R6 rigs, par exemple :


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

Notez que Humanoid:GetLimb() lancera une erreur si le parent de la partie n'est pas défini sur le parent du humanoid.

Paramètres

part: Instance

La Part pour laquelle le Enum.Limb doit être récupéré.


Retours

Le Enum.Limb la partie correspond.

Échantillons de code

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


Retours

Écrire en parallèle

Cette fonction renvoie le Enum.HumanoidStateType actuel de l'humanoïde, qui décrit l'activité que le Humanoid est en train de faire, telle que la saut ou la natation.

Voir aussi Humanoid:SetStateEnabled() pour activer ou désactiver un certain état, et Humanoid:ChangeState() pour modifier l'état actuel du humanoid.


Retours

Échantillons de code

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

Écrire en parallèle

La fonction GetStateEnabled renvoie si un Enum.HumanoidStateType est activé pour le Humanoid.

L'état humanoïde décrit l'activité que le humanoïde effectue actuellement.

Lorsqu'un Enum.HumanoidStateType spécifique est désactivé, le humanoid ne peut jamais entrer dans cet état. Ceci est vrai, indépendamment si l'attempt de changer d'état est fait à l'aide de Humanoid:ChangeState() ou du code humanoïde interne de Roblox.

Voir aussi :

Paramètres


Retours

Whether the given Enum.HumanoidStateType is enabled.

Échantillons de code

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

Cette fonction cause le Humanoid à marcher dans la direction donnée Vector3.

Par défaut, la direction est dans les conditionsdu monde, mais si le paramètre relativeToCamera est true, la direction est relative à la CFrame du 1> Class.Workspace.CurrentCamera|CurrentCamera1> . En tant que direction négative


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

Lorsque cette fonction est appelée, le Humanoid bougera jusqu'à ce que la fonction soit appelée à nouveau. Cependant, si les scripts de contrôle par défaut sont utilisés, ce Characters sera écrasé lors de l'appel du joueur RunService:BindToRenderStep(). Cela peut être évité en utilisant soit les scripts de contrôle par défaut, soit en appelant cette fonction

Cette fonction peut être appelée sur le serveur, mais cela ne doit être fait que lorsque le serveur a propriété du réseau de l'assemblage du humanoid.

Voir aussi Humanoid:MoveTo() qui fait un Humanoid marcher jusqu'à un point, et Player:Move() qui appelle effectivement cette fonction.

Paramètres

moveDirection: Vector3

La direction à prendre pour marcher.

relativeToCamera: bool

Définir à true si le paramètre moveDirection doit être pris par rapport à la CurrentCamera.

Valeur par défaut : false

Retours

void

Échantillons de code

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

Cette fonction cause le Humanoid à essayer de marcher à l'endroit donné en définissant les propriétés Humanoid.WalkToPoint et Humanoid.WalkToPart.

Les lieux et parties paramètres correspondent à ce que Humanoid.WalkToPoint et 2> Class.Humanoid.WalkToPart2> seront définis.

Si le paramètre pièce est spécifié, le Humanoid tentera toujours de marcher vers le point. Cependant, si la partie se déplace, le point Humanoid que la partie est en train de marcher à sera à la position 2>relative à la partie2>. Si le paramè

L'état atteindre le but d'un humanoid atteindra son but après 8 secondes s'il ne l'atteint pas. Ceci est fait pour que les PNJ ne se retrouvent pas coincés en attendant Humanoid.MoveToFinished pour lancer. Si vous ne voulez pas que cela se produise, vous devriez appeler MoveTo à plusieurs reprises afin que le temps limite se rafraîchisse.

MoveTo() se termine si l'une des conditions suivantes s'applique :

Paramètres

location: Vector3

La position à laquelle définir Humanoid.WalkToPoint .

part: Instance

Le BasePart pour définir Humanoid.WalkToPart .

Valeur par défaut : "nil"

Retours

void

Échantillons de code

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

Cette fonction supprime tous les objets Accessory portés par le parent de l'humanoïde. Pour le joueur Characters, cela supprime tous les chapeaux et autres accessoires.

Cette fonction supprime l'objet Accessory par le biais de l'appel Instance:Destroy() sur eux, ce qui signifie que le Parent des accessoires est réglé sur 2>nil2> et verrouillé.

Voir également Humanoid:AddAccessory() pour attacher un Accessory et Humanoid:GetAccessories() pour obtenir tous les objets appartenant à un 1> Class.Humanoid1> .


Retours

void

Échantillons de code

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

Remplace dynamiquement une partie de membre R15/Rthro dans un Humanoid par une autre partie. La partie est automatiquement redimensionnée comme d'habitude.

Cette fonction est utile pour modifier des personnages pendant le jeu ou pour construire des personnages à partir d'une base plateforme. La fonction liée GetBodyPartR15 peut être utile lors de l'utilisation de cette fonction.

Le nom de la partie qui passe doit correspondre au nom de l' BodyPartR15 Enum qui passe.

Paramètres

La partie du corps à remplacer. Enum.BodyPartR15.Unknown échouera.

part: BasePart

Le Class.Part``Class.Instance qui sera associé au personnage.


Retours

SetStateEnabled

void

Cette fonction détermine si un Enum.HumanoidStateType est activé pour le Humanoid. Lorsqu'un Enum.HumanoidStateType est désactivé, le 2> Class.Humanoid2> ne peut jamais entrer dans cet ét

Notez que l'utilisation de SetStateEnabled() sur le serveur ne réplique pas la modification au client, ni vice versa.

Paramètres

Le Enum.HumanoidStateType pour être activé ou désactivé.

enabled: bool

true si state est à activer, false si 0> state0> est à désactiver.


Retours

void

Échantillons de code

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

Cette fonction réduit la Humanoid.Health du Humanoid par le montant donné si elle n'est pas protégée par un 2>Class.ForceField2>

Cette fonction accepte les valeurs négatives pour le montant paramètre. Cela augmentera la santé du humanoid Humanoid.Health . Cependant, cela n'aura effet que si aucun ForceField n'est présent.

Comment ForceFields se protégeant contre TakeDamage

Un Humanoid est considéré comme protégé par un ForceField si un ForceField répond à l'un des critères suivants :

Pour faire des dégâts à un Humanoid irréduction de tout ForceFields présent, définissez Humanoid.Health directement.

Pour plus d'informations sur la façon dont ForceFields protégez Humanoids voir la page ForceField

Paramètres

amount: number

Les dégâts, ou la quantité à déduire du Humanoid.Health .


Retours

void

Échantillons de code

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

Cette fonction dééquipe n'importe lequel des Tool actuellement équipé par le Humanoid

Le Tool non équipé sera associé au Backpack de l'Player associé avec le 1> Class.Humanoid1> .

Si aucun Tool n'est équipé, cette fonction ne fera rien.

Bien que Tools puisse être équipé par les NPCs (non-joueurs), cette fonction ne fonctionne que sur Humanoids avec un correspondant Player . C'est parce que un objet 1> Class.Backpack1> est requis pour parent le 4> Class.Tool

Voir aussi :


Retours

void

Échantillons de code

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
Rendement

Cette fonction d'ajustement fait en sorte que le personnage ressemble à celui du passe dans HumanoidDescription. Une copie du passe HumanoidDescription est mise en cache en tant que HumanoidDescription pour le 1> Class.Humanoid1> .

Cette fonction est optimisée en supposant que seule cette fonction est utilisée pour modifier l'apparence du personnage, et que aucun changement n'est apporté par d'autres moyens entre les appels. Si des modifications sont apportées au personnage entre les appels. alors cette fonction peut ne pas refléter exactement le personnage dans Class.Humanoid

Voir aussi

Paramètres

humanoidDescription: HumanoidDescription

La HumanoidDescription instance que vous souhaitez configurer pour correspondre au personnage.

assetTypeVerification: Enum.AssetTypeVerification
Valeur par défaut : "Default"

Retours

void

ApplyDescriptionReset

void
Rendement

Cette fonction d'ajustement fait en sorte que le personnage soit à l'affût de celui du passe dans HumanoidDescription, même après les modifications externes. Une copie du passe HumanoidDescription est stockée en tant que HumanoidDescription pour le 1> Class.Humanoid1> .

Cette fonction garantira toujours que le personnage reflète le caractère passé dans Class.HumanoidDescription</

Paramètres

humanoidDescription: HumanoidDescription

L'instance HumanoidDescription que vous souhaitez configurer pour correspondre au personnage.

assetTypeVerification: Enum.AssetTypeVerification
Valeur par défaut : "Default"

Retours

void

PlayEmote

Rendement

Si l'emote ne pouvait pas être joué car le nom de l'emote n'est pas trouvé dans la description humanoïde, cette API renverra une erreur. L'API renverra true pour indiquer que l'emote a été joué avec succès.

Paramètres

emoteName: string

nom de l'emote à jouer.


Retours

joué avec succès.

Évènements

ApplyDescriptionFinished

Paramètres

description: HumanoidDescription

Climbing

Tire quand la vitesse à laquelle un Humanoid monte change.

Humanoids peut escalader les échevres faites de Parts ou TrussParts.

Humanoids monte à 70% de leur Humanoid.WalkSpeed .

Cet événement ne se déclenchera pas toujours avec une vitesse de 0 lorsque le Humanoid arrêtera de escalader.

Voir aussi :

Paramètres

speed: number

La vitesse à laquelle le Humanoid monte actuellement.


Échantillons de code

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

Cet événement se déclenche lorsque le Humanoid meurt, généralement lorsque Humanoid.Health atteint 0. Cela peut être causé soit par la déconnecte de leur tête de leur Humanoid.Torso, soit en définissant directement la propriété de santé.

Cet événement ne se déclenche que si le Humanoid est un descendant du Workspace. Si le Dead est désactivé, il ne se lancerpas.


Échantillons de code

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

L'événement FallingDown se déclenche lorsque le Humanoid entre et quitte le FallingDown``Enum.HumanoidStateType.

Le Humanoid entrera dans l'état GettingUp 3 secondes après que l'état FallingDown soit activé. Lorsque cela se produit, cet événement se déclenchera avec une valeur active de 2> faux2> et avec l'état

Paramètres

active: bool

Détermine si le Humanoid entre ou quitte le FallingDown``Enum.HumanoidStateType.


FreeFalling

Cet événement se déclenche lorsque le Humanoid entre ou quitte le Freefall``Enum.HumanoidStateType.

Le actif paramètre représente si le Humanoid entre ou quitte l'état Freefall.

Bien que l'état Freefall se termine généralement lorsque le Humanoid atteint le sol, cet événement peut se déclencher avec actif équivalant à

Paramètres

active: bool

Que le Humanoid entre ou quitte le Freefall``Enum.HumanoidStateType.


GettingUp

Cet événement se déclenche lorsque le Humanoid entre ou quitte l'état Enum.HumanoidStateType.GettingUp, un état de transition qui est activé peu après que le Class.H

Lorsqu'un Humanoid essaie de se redresser, cet événement se déclenchera en premier avec un paramètre active de true avant peu après avoir redémarré avec un paramètre 1> active1> de 4> force4> avant .

Pour forcer un Humanoid à tomber, utilisez la fonction Class.Humanoid:ChangeState() avec Enums.HumanoidStateType.FallingDown.

Paramètres

active: bool

Que le Humanoid entre ou quitte le GettingUp``Enum.HumanoidStateType.


HealthChanged

Cet événement se déclenche lorsque la santé Humanoid.Health change. Cependant, il ne se déclenira pas si la santé augmente à partir d'une valeur égale ou supérieure à la valeur Humanoid.MaxHealth.

Lorsque Humanoid.Health atteint zéro, le Humanoid mourra et l'événement Humanoid.Died se lancer. Cet événement se déclenchera avec une valeur zéro.

Paramètres

health: number

La nouvelle valeur de Humanoid.Health .


Échantillons de code

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

Cet événement se déclenche lorsque le Humanoid entre et quitte le Jumping``Enum.HumanoidStateType.

Lorsqu'un Humanoid saute, cet événement se déclenche avec un active paramètre de true en arrière avant de sauter à nouveau avec

Vous pouvez désactiver le saut en utilisant la fonction Humanoid:SetStateEnabled().

Paramètres

active: bool

Que le Humanoid entre ou quitte le Jumping``Enum.HumanoidStateType .


MoveToFinished

Cet événement se déclenche lorsque le Humanoid a fini de marcher vers une cible déclarée par le Humanoid.WalkToPoint et Humanoid.WalkToPart propriétés.

Les propriétés Humanoid.WalkToPoint et Humanoid.WalkToPart peuvent être définies individuellement, ou en utilisant la fonction Humanoid:MoveTo().

Si le Humanoid atteint son objectif dans les 8 secondes, cet événement se terminera avec atteint en tant que vrai. Si l'objectif n'est pas atteint dans les 8 secondes, le Humanoid arrêtera de marcher et sera faux. Ce délai d'expiration peut être réinitialisé en appelant 1>

Paramètres

reached: bool

Un booléen indiquant si le Humanoid atteint est la cible. Vrai si le Humanoid atteint son objectif, 2> faux2> si le temps de marche a expiré avant que l'objectif puisse être atteint.


Échantillons de code

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

Cet événement se déclenche lorsque le Humanoid entre ou quitte le PlatformStanding``Enum.HumanoidStateType.

Alors que le Humanoid est dans l'état PlatformStanding, la propriété Humanoid.PlatformStand sera 2> vraie2>.

Alors que Humanoid.PlatformStand est réglé sur vrai, le Humanoid ne pourra pas mouvement. Pour plus d'informations, consultez la page pour 2>Class.Humanoid2>.

Le PlatformStand Enum.HumanoidStateType a été associé à la partie maintenant désactivée Platform. Malgré cela, il peut toujours être utilisé par les développeurs.

Paramètres

active: bool

Que le Humanoid entre ou quitte le PlatformStanding``Enum.HumanoidStateType .


Ragdoll

Cet événement se déclenche lorsque le Humanoid entre ou quitte le Ragdoll``Enum.HumanoidStateType.

Le active paramètre aura la valeur true ou false pour indiquer l'entrée ou la sortie.

Utilisez Humanoid:SetStateEnabled() pour désactiver l'état GettingUp pour rester dans l'état Ragdoll.

Voir aussi :

Paramètres

active: bool

Que le Humanoid entre ou quitte le Ragdoll``Enum.HumanoidStateType .


Running

Cet événement se déclenche lorsque la vitesse à laquelle un Humanoid est en train de faire des changements.

Pendant l'exécution de Humanoids couverture, en moyenne, leur Humanoid.WalkSpeed dans les studs par seconde.

Lorsque le Humanoid arrête de s'exécuter cet événement, il se déclenche avec une vitesse de 0.

Voir aussi :

Paramètres

speed: number

La vitesse à laquelle le Humanoid fonctionne.


Échantillons de code

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

Cet événement se déclenche lorsqu'un Humanoid se trouve dans ou se lève d'un Seat ou VehicleSeat.

Lorsqu'un personnage entre en contact avec une siège, il est attaché à la siège et une animation de siège est jouée. Pour plus d'informations à ce sujet, voir la page Seat.

  • Si le personnage est assis, le paramètre active sera vrai et currentSeatPart sera le siège dans lequel ils sont actuellement assis.
  • Si le personnage se levé d'un siège, le paramètre active sera faux et currentSeatPart sera nul.

Voir aussi :

  • Humanoid.Sit , qui indique si un Humanoid est actuellement assis
  • Humanoid.SeatPart , qui indique le siège dans lequel un Humanoid se trouve actuellement, s'il y en a un.

Paramètres

active: bool

Vrai si le Humanoid est assis.

currentSeatPart: BasePart

Le siège sur lequel le Humanoid est assis s'il est assis.


Échantillons de code

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

Cet événement se déclenche lorsque l'état du Humanoid est modifié.

Puisque il n'y a pas d'état humanoïde « inactif », vous devriez plutôt utiliser l'événement Humanoid.Running ou écouter la partie RootPart de l'événement Velocity pour déterminer le travail lorsque le 1> Class.Humanoid1> est immobile.

Voir aussi

Paramètres

taperde statut précédent de l'humanoid.

taperde statut actuel de l'humanoid.


Échantillons de code

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

L'événement StateEnableChanged se déclenche lorsque Humanoid:SetStateEnabled() est appelé sur le Humanoid .

Les paramètres incluent le Enum.HumanoidStateType dans la question ainsi qu'un boîtier indiquant si cet état est maintenant activé.

Voir aussi :

Paramètres

Le Enum.HumanoidStateType pour lequel l'état activé a été modifié.

isEnabled: bool

Vrai si l'état est maintenant activé.


Échantillons de code

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

Cet événement ne se déclenche pas lorsque le Humanoid est en train de bombarder et ne devrait pas être utilisé par les développeurs

Cet événement est déclenché lorsque le Humanoid entre ou quitte le StrafingNoPhysics``Enum.HumanoidStateType.

Lorsque le Humanoid entre dans l'état StrafingNoPhysics, cet événement se déclenche avec un actif paramètre de 2>vrai2> . L'événement se déclenchera à nouveau avec un 5>actif5> égal à <

Cet événement est associé avec l'état StrafingNoPhysics``Class.Humanoid et ne se déclenche pas lorsque le Class.Humanoid se déplace perpendiculairement à la direction dans laquelle il se dirige. Ce state n'est pas utilisé, si il est dé

Paramètres

active: bool

Que le Humanoid entre ou quitte le StrafingNoPhysics``Enum.HumanoidStateType .


Swimming

Cet événement se déclenche lorsque la vitesse à laquelle un Humanoid nage dans l'eau Terrain change.

Humanoids nage à 87,5% de leur Humanoid.WalkSpeed.

Cet événement ne se déclenchera pas toujours avec une vitesse de 0 lorsque le Humanoid arrêtera de nager.

Voir aussi :

Paramètres

speed: number

La vitesse à laquelle le Humanoid nage actuellement.


Touched

Cet événement se déclenche lorsqu'un des membres du humanoid est en contact avec un autre BasePart. Le BasePart que le membre touche, ainsi que le membre lui-même, est donné.

Cet événement ne se déclenchera pas lorsque les membres appartenant au Humanoid entreront en contact avec eux-mêmes.

Alternatives

Bien que l'événement Humanoid.Touched soit utile, vous devriez envisager si il y a des alternatives qui conviennent mieux à vos besoins.

  • Dans la plupart des cas, il est recommandé de connecter un événement BasePart.Touched pour BaseParts d'intérêt au lieu de, car l'événement Class.H
  • Lorsque vous essayez de travailler lorsque le Humanoid est arrivé au sol, l'événement Humanoid.StateChanged est plus approprié. Alternativement, vous pouvez vérifier Humanoid.FloorMaterial pour voir si le humanoid est sur n'importe quel matériau non aérien.

Notes

Paramètres

touchingPart: BasePart

Le BasePart le Humanoid est entré en contact.

humanoidPart: BasePart

Le membre du Humanoid qui a été touché.


Échantillons de code

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)