Humanoid
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Humanoid to specjalny obiekt, który daje modelem funkcjonalność postaci.Zapewnia modelowi możliwość fizycznego chodzenia i interakcji z różnymi komponentami doświadczenia Roblox.Humanoidy zawsze są rodzicami w środku Model, a model jest oczekiwany jako zbiór BasePart i Motor6D, korzeń części zbioru ma być nazwany HumanoidRootPart.Oczekuje również, że część o nazwie Head zostanie połączona z częścią tułowia postaci bezpośrednio lub pośrednio.Domyślnie istnieją dwa oficjalne rodzaje postaci dostarczane przez Roblox, każdy z własnym zestawem zasad:
R6
- Podstawowa rama postaci, która używa 6 części do kończyn.
- Część Head musi być przymocowana do części o nazwie Torso, lub Humanoid natychmiast umrze.
- Występy części ciała są stosowane za pomocą obiektów CharacterMesh.
- Niektóre właściwości, takie jak Humanoid.LeftLeg i Humanoid.RightLeg, działają tylko z R6.
R15
- Bardziej skomplikowany niż R6, ale również dużo bardziej elastyczny i wytrzymały.
- Używa 15 części dla kończyn.
- Część Head musi być przymocowana do części o nazwie UpperTorso lub Humanoid natychmiast umrze.
- Występy części ciała muszą być złożone bezpośrednio.
- Można dynamicznie skalować za pomocą specjalnych obiektów NumberValue wewnątrz Humanoida.
- Humanoid automatycznie stworzy obiekty Vector3Value o nazwie OriginalSize wewnątrz każdej kończyny.
- Jeśli wartość liczbowa jest powiązana wewnątrz Humanoida i nazywa się jedną z obserwuje, zostanie ona wykorzystana do kontroli funkcjonalności skalowania:
- Skala głębi ciała
- Skala wysokości ciała
- Skala szerokości ciała
- Skala głowy
Przykłady kodu
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
Podsumowanie
Właściwości
Ustawia, czy postać automatycznie skoczy, gdy trafi na przeszkodę jako gracz na urządzeniemobilnym.
Automatyczne obroty ustawiają, czy ludzik będzie automatycznie obracać się w kierunku, w którym się porusza.
Gdy włączone, AutomaticScalingEnabled powoduje, że rozmiar postaci zmienia się w odpowiedzi na zmiany wartości skali dziecka humanoida.
Określa, czy stawy humanoida pękają, gdy znajduje się w stanie Enum.HumanoidStateType.Dead.
Odległość zastosowana do pozycji tematu kamery, gdy jej temat kamery jest ustawiony na tego humanoida.
Kontroluje zachowanie dystansu nazwy i wyświetlania zdrowia humanoida.
Ustawia tekst humanoida, wyświetlany nad jego głową.
Opisuje Enum.Material, na którym obecnie stoi Humanoid.Jeśli Humanoid nie stoi na czymkolwiek, wartość tej właściwości będzie Powietrze.
Opisuje obecne zdrowie Humanoida na odległości [0, Humanoid.MaxHealth].
Używany w połączeniu z właściwością DisplayDistanceType w celu kontrolowania odległości, z której można zobaczyć pasek zdrowia humanoida.
Sposób kontroli, kiedy pasek zdrowia humanoida może być wyświetlany.
Określa odległość od ziemi, jaką powinien mieć Humanoid.RootPart .
Jeśli true , skoki Humanoid wykonują siłą w górę.
Zapewnia kontrolę nad wysokością, na którą skacze Humanoid skok.
Określa, ile siły w górę jest stosowane do Humanoid podczas skoku.
Maksymalna wartość humanoida Health .
Maksymalny kąt nachylenia, na którym człowiek może chodzić bez poślizgu.
Opisuje kierunek, w którym podąża Humanoid .
Używany w połączeniu z właściwością Humanoid.DisplayDistanceType w celu kontrolowania odległości, z której można zobaczyć nazwę humanoida.
Kontroluje, czy nazwa i pasek zdrowia humanoida może być widoczny za ścianami lub innymi obiektami.
Określa, czy Humanoid jest obecnie w stanie Enum.HumanoidStateType.PlatformStanding.
Pozwala programistom wyłączyć zachowanie, w którym gracz Character|character umiera, jeśli szyja Motor6D zostanie usunięta lub odłączona choćby na chwilę.
Opisuje, czy to Humanoid wykorzystuje dziedziczonego postaci R6, czy nową postać R15.
Odwołanie do obiektu HumanoidRootPart ludzkiegooidu.
Odniesienie do siedzenia, na którym obecnie siedzi Humanoid, jeśli takie istnieje.
Opisuje, czy Humanoid jest obecnie siedzący.
Opisuje pozycję 3D, w której Player kontroluje Humanoid ostatnio kliknięte w świecie za pomocą Tool.
Określa, czy używana jest właściwość JumpHeight (fałsz) lub Humanoid.JumpPower (prawda).
Opisuje maksymalną prędkość ruchu humanoida w studach na sekundę.
Odniesienie do części, której pozycja jest próbować osiągnąć przez humanoida
Pozycja, do której próbuje dotrzeć humanoid, po wykonaniu wezwania do Humanoid:MoveTo().
Metody
Przyłącza określone Accessory do rodzica humanoida.
Zbiera drzewo Motor6D połączeń poprzez przymocowanie razem Attachment obiektów w charakterze humanoida.
Ustawia Humanoid na wejście do podanego Enum.HumanoidStateType.
Zwraca arkusz z Accessory obiektami, które nosi obecnie rodzic humanoida.
Zwraca kopię zapamiętanego HumanoidDescription obrazu, który opisuje jego obecny wygląd.
Przekaż część ciała do tej metody (część ciała powinna być siostrą Humanoida i dzieckiem modelu) aby uzyskać Enum.BodyPartR15 z Part.
Zwraca Enum.Limb enumerację, która jest powiązana z danym Part.
Zwraca obecną Enum.HumanoidStateType ludzkiegooida.
Zwraca, czy Enum.HumanoidStateType jest włączone dla Humanoid.
Spowoduje, że Humanoid chodzi w określonym kierunku.
Spowoduje, że Humanoid próbuje przejść do określonej lokalizacji, ustawiając właściwości Humanoid.WalkToPoint i Humanoid.WalkToPart.
Usuwa wszystkie Accessory obiekty noszone przez rodzica humanoida
Automatycznie zastępuje część ciała ludzkiego humanoida inną częścią.
Ustawia, czy dane Enum.HumanoidStateType jest włączone dla Humanoid.
Obniża Humanoid.Health z Humanoid o podanych kwotę jeśli nie jest chroniona przez ForceField.
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Tworzy wygląd postaci pasujący do przekazanego w HumanoidDescription .
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Rektyfikuje wygląd postaci do wyglądu przekazanego w HumanoidDescription, nawet po zmianach zewnętrznych.
Odtwarza emotki i zwraca, jeśli zostały pomyślnie uruchomione.
Zdarzenia
Wybucha, gdy prędkość, z jaką wzrasta Humanoid zmienia się.
Wypala się, gdy Humanoid umiera.
Wypala się, gdy Humanoid wchodzi lub wychodzi z FallingDown``Enum.HumanoidStateType.
Wypala się, gdy Humanoid wchodzi lub wychodzi z Freefall``Enum.HumanoidStateType.
Wypala się, gdy Humanoid wchodzi lub wychodzi z GettingUp``Enum.HumanoidStateType.
Wypala się, gdy zmienia się Humanoid.Health lub gdy ustawiono Humanoid.MaxHealth .
Wypala się, gdy Humanoid wchodzi i opuszcza Jumping``Enum.HumanoidStateType .
Wypala się, gdy Humanoid kończy chód do celu ogłoszonego przez Humanoid:MoveTo().
Wypala się, gdy Humanoid wchodzi lub wychodzi z PlatformStanding``Enum.HumanoidStateType.
Wypala się, gdy Humanoid wchodzi lub wychodzi z Ragdoll``Enum.HumanoidStateType.
Wybucha, gdy prędkość, z jaką działa Humanoid , zmienia się.
Wystrzeliwany, gdy Humanoid siedzi w Seat lub VehicleSeat lub wstaje.
Wypala się, gdy zmieni się stan Humanoid.
Wypala się, gdy Humanoid:SetStateEnabled() jest wzywany na Humanoid.
Wypala się, gdy Humanoid wchodzi lub wychodzi z StrafingNoPhysics``Enum.HumanoidStateType.
Wypala się, gdy prędkość, z jaką pływa Humanoid w wodzie zmienia się Terrain.
Wypala się, gdy jedna z kończyn humanoida wchodzi w kontakt z inną BasePart.
Właściwości
AutoJumpEnabled
AutoJumpEnabled określa, czy Humanoid będzie próbować automatycznie przeskoczyć przez przeszkodę, do której zmierza.
Obecnie właściwość ta działa tylko wtedy, gdy spełnione są następujące warunki:
- Model postaci humanoida jest Player.Character z Player .
- Gracz w kwestii używa elementy sterującedotykowych.
Kiedy pojawia się postać gracza, wartość właściwości pasuje do właściwości gracza Player.AutoJumpEnabled - która z kolei pasuje do właściwości StarterPlayer.AutoJumpEnabled.
Przykłady kodu
This code sample is meant for a TextButton. It allows the player to toggle the auto-jumping behavior while on a mobile device.
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
Właściwość AutoRotate opisuje, czy ludzik będzie się automatycznie obracać w kierunku, w którym się porusza.Gdy ustawiono na prawdę, model postaci będzie stopniowo odwracać się w kierunku ich ruchu, gdy Humanoid chodzi wokół.Gdy ustawiono na fałsz, model postaci pozostanie w obecnej rotacji, chyba że zostanie zastosowana siła obrotowa do HumanoidRootPart.
Jeśli model postaci jest postacią gracza, to zachowanie rotacji humanoida jest wpływane przez właściwość RotateType w ustawieniu gry użytkownika.
Gdy właściwość AutoRotate jest ustawiona na prawdę, właściwość RotateType ma następujące efekty na rotacji Humanoida:
<th>Zachowanie</th><th>Konttekst</th></tr></thead><tbody><tr><td>Poruszanie względne</td><td /><td /></tr><tr><td>KameraRelacyjna</td><td>Postać będzie się obracać, aby skierować się w kierunku kamery.</td><td>Gracz ma swoją kamerę skupioną w trybie pierwszej osoby, lub jest w trybie zmiany błędów.</td></tr></tbody>
Typ rotacji |
---|
Przykłady kodu
This script adds the functionality of a button to a part, which switches the AutoRotate property of whoever touches it.
local button = script.Parent
local enabled = true
local ON_COLOR = BrickColor.Green()
local OFF_COLOR = BrickColor.Red()
local function touchButton(humanoid)
if enabled then
enabled = false
button.BrickColor = OFF_COLOR
if humanoid.AutoRotate then
print(humanoid:GetFullName() .. " can no longer auto-rotate!")
humanoid.AutoRotate = false
else
print(humanoid:GetFullName() .. " can now auto-rotate!")
humanoid.AutoRotate = true
end
task.wait(1)
button.BrickColor = ON_COLOR
enabled = true
end
end
local function onTouched(hit)
local char = hit:FindFirstAncestorWhichIsA("Model")
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
touchButton(humanoid)
end
end
end
button.Touched:Connect(onTouched)
button.BrickColor = ON_COLOR
AutomaticScalingEnabled
Humanoid ma sześć wartości skali dzieci, w tym BodyDepthScale, BodyHeightScale, BodyProportionScale, BodyTypeScale, BodyWidthScale, HeadScale.Zmiana wartości dowolnej z tych przyczyn powoduje, że części ciała i akcesoria postaci zmieniają rozmiar, ale tylko wtedy, gdy AutomaticScalingEnabled jest prawdą.
BreakJointsOnDeath
Określa, czy stawy humanoida pękają, gdy znajduje się w stanie Enum.HumanoidStateType.Dead. Domyślnie ustawia się na prawdę.
CameraOffset
Właściwość CameraOffset określa przesunięcie do pozycji tematu kamery, gdy jej Camera.CameraSubject jest ustawiona na tę Humanoid.
Odległość jest stosowana w przestrzeni obiektu w odniesieniu do orientacji HumanoidRootPart ludzkiego humanoida.Na przykład, wartość offsetu Vector3(0, 10, 0) odwraca kamerę gracza o 10 szpilkami powyżej ludoidu gracza.
Przykłady kodu
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
DisplayDistanceType
Właściwość DisplayDistanceType kontroluje zachowanie odległości nazwy i wyświetlenia zdrowia humanoida.Właściwość ta jest ustawiana za pomocą Enum.HumanoidDisplayDistanceType enum z trzema dostępnymi wartościami, każda z własnym zestawem zasad:
- Gdy ustawiono na Viewer, humanoid widzi nazwę/zdrowie innych humanoidów w zasięgu własnego NameDisplayDistance i HealthDisplayDistance .
- Gdy ustawiono na Subject, humanoid przejmuje pełną kontrolę nad własną nazwą i wyświetlaniem zdrowia poprzez swoje NameDisplayDistance i HealthDisplayDistance wartości.
- Gdy ustawiono na None, pasek nazwy i zdrowia humanoida nie pojawia się w żadnych przypadkach.
Zobacz Nazwę postaci/wygląd zdrowia dla szczegółowego przewodnika dotyczącego kontroli wyglądu nazw postaci i pasków zdrowia.
Przykłady kodu
This example demonstrates how to set a Humanoid's Humanoid.DisplayerDistanceType, Humanoid.HealthDisplayDistance, and Humanoid.NameDisplayDistance properties. These properties determine how a humanoid's healthbar and name are rendered for a player.
First, we change the DisplayDistanceType to Viewer using Enum.HumanoidDisplayDistanceType. When set to viewer, the humanoid's Name and healthbar will be displayed based on the distance settings of the humanoid viewing them.
Then, the humanoid's HealthDisplayDistance is set to 0. Setting the property to 0 hides the healthbar completely. It is not displayed at any distance.
Finally, the humanoid's NameDisplayDistance is set to 100. This means that the humanoid's name will be visible to other humanoid's within 100 studs.
This example should work as expected when placed inside a Script that is a child of the humanoid.
local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
DisplayName
DisplayName jest właściwością, która określa wyświetlanie nazwy Humanoida, gdy jest widoczny.Domyślnie nowy Humanoid będzie miał wartość pustej ciąg.Jeśli DisplayName jest pustą struną, wyświetlanie nazwy humanoida domyślnie zostanie zmienione na właściwość nazwy rodzica humanoida.
Ładowanie postaci gracza
Kiedy gracze wczytają swoją postać, automatycznie lub za pomocą użycia LoadCharacter(), humanoid stworzony przez silnik będzie miał ustawioną właściwość DisplayName na właściwość gracza DisplayName.
Początkowy postać i StarterHumanoid
Gdy Humanoid o nazwie StarterHumanoid jest powiązany z StarterPlayer, lub gdy istnieje Humanoid w Modelu o nazwie StarterCharacter, właściwość DisplayName zostanie uszanowana, gdy postacie zostaną załadowane przez Graczy w grze.Silnik będzie zastępował tylko właściwość DisplayName właściwości Humanoida właściwością DisplayName gracza, jeśli Humanoid.DisplayName z StarterHumanoid jest pustą ciąg.
EvaluateStateMachine
FloorMaterial
Jest to właściwość tylko do odczytu, która opisuje Enum.Material aktualnie stojący Humanoid .Funkcjonuje zarówno z regularnymi Parts i Terrain wokselami.
Poniższy przykład kodu pokazuje, jak słuchać, gdy ta właściwość zmienia się za pomocą Object:GetPropertyChangedSignal() .Kiedy materiał, na którym stoi humanoid, zmieni się, wyświetli wiadomość wskazującą na nowy materiał, na którym stoi.
local Humanoid = route.to.humanoid
Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
print("New value for FloorMaterial: " .. tostring(Humanoid.FloorMaterial))
end)
Ostrzeżenia
- Gdy Humanoid nie stoi na podłodze, wartość tej właściwości zostanie ustawiona na Powietrze.
- Występuje to dlatego, że właściwości Enum nie mogą mieć pustej wartości.
- Może to powodować pewną zamieszanie, jeśli część ma ustawiony materiał na Powietrze, choć w praktyce części nie powinny używać tego materiału na początku.
- Model postaci z Humanoid musi być w stanie zderzyć się z podłogą, w przeciwnym razie nie zostanie wykryty.
- Nie możesz sprawdzić, czy Humanoid pływa z tą właściwością. Powinieneś zamiast tego użyć jego funkcji Humanoid:GetState().
Health
Ta właściwość reprezentuje obecne zdrowie Humanoid .Wartość jest ograniczona do zakresu pomiędzy 0 a MaxHealth.Jeśli humanoid nie żyje, ta właściwość jest stale ustawiona na 0.
Zauważ, że funkcja TakeDamage() może być użyta do odejmowania od Health zamiast ustawiać właściwość bezpośrednio.
Regeneracja zdrowia
Domyślnie aktywny skrypt regeneracji zdrowia jest automatycznie wstawiany do humanoidów.Spowoduje to, że nieumarłe postacie graczy regenerują 1% MaxHealth co sekundę.Aby wyłączyć to zachowanie regeneracji, dodaj puste Script o nazwie Zdrowie do StarterCharacterScripts.
Wyświetlanie paska zdrowia
Gdy Health jest mniejszy niż MaxHealth, pasek zdrowia jest wyświetlany w doświadczeniu.Zachowanie wyświetlania paska zdrowia zależy od HealthDisplayDistance i HealthDisplayType.
Zobacz Nazwę postaci/wygląd zdrowia dla szczegółowego przewodnika dotyczącego kontroli wyglądu nazw postaci i pasków zdrowia.
Śmierć
Gdy wartość zdrowia postaci osiągnie 0, Humanoid automatycznie przejdzie do stanu Enum.HumanoidStateType.Dead.W tym stanie Health jest zablokowane do 0; jednak nie ma błędu ani ostrzeżenia o ustawieniu Health martwego humanoida na pozytywną wartość niezerową.
HealthDisplayDistance
Właściwość ta jest liczbą używaną w połączeniu z właściwością DisplayDistanceType w celu kontrolowania odległości, z której można zobaczyć pasek zdrowia humanoida.
Zobacz Nazwę postaci/wygląd zdrowia dla szczegółowego przewodnika dotyczącego kontroli wyglądu nazw postaci i pasków zdrowia.
HealthDisplayType
Właściwość ta kontroluje, kiedy pasek zdrowia humanoida może być wyświetlany.Domyślnie właściwość ta jest ustawiona na , co sprawia, że pasek zdrowia wyświetlany jest tylko wtedy, gdy zdrowie humanoida jest mniejsze niż jego .Można go również ustawić na AlwaysOn , co sprawia, że pasek zdrowia zawsze wyświetla się, lub AlwaysOff , który uniemożliwia jego wyświetlanie.
Zauważ, że ta właściwość działa niezależnie od właściwości humanoida HealthDisplayDistance, która jest odpowiedzialna za to, że pasek zdrowia znika na pewnych odległościach.Jeśli Humanoid.HealthDisplayType|HealthDisplayType jest ustawione na AlwaysOn, nadal zniknie, w zależności od tego, jak HealthDisplayDistance jest skonfigurowane.
Zobacz Nazwę postaci/wygląd zdrowia dla szczegółowego przewodnika dotyczącego kontroli wyglądu nazw postaci i pasków zdrowia.
HipHeight
Określa odległość (w szpilkach) od ziemi, na której powinien stać RootPart ludzoid, gdy stoi.The RigType wpływa na sposób działania tej właściwości.
Dla rigów R15 odpowiednia wysokość bioder jest zaprogramowana, aby zapewnić, że wysokość RootPart jest poprawna.Wysokość nóg nie jest używana.Ogólna wysokość humanoida można opisać za pomocą następującej formuły:
Height = (0.5 * RootPart.Size.Y) + HipHeight
Dla rigów R6, HipHeight zamiast opisuje względny przesunięcie. Ogólna wysokość humanoida można opisać za pomocą następującej formuły:
Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
Jump
Jeśli true , skoki Humanoid wykonują z siłą w górę równą wartości Humanoid.JumpPower lub wysokości Humanoid.JumpHeight , w zależności od wartości Humanoid.UseJumpPower .
JumpHeight
Zapewnia kontrolę nad wysokością skoku Humanoid w szpilkach.Początkowa wartość tej właściwości jest określana przez wartość StarterPlayer.CharacterJumpHeight, która domyślnie wynosi 7.2.
Chociaż ustawienie tej właściwości na 0 skutecznie uniemożliwi skok humanoida, zaleca się wyłączenie skoku poprzez wyłączenie stanu Enum.HumanoidStateType.Jumping poprzez Humanoid:SetStateEnabled().
Właściwość ta jest widoczna tylko w oknie Właściwości, jeśli Humanoid.UseJumpPower jest ustawiona na fałsz , ponieważ w przeciwnym razie nie byłaby istotna (zamiast tego używa się Humanoid.JumpPower).
JumpPower
Określa, ile siły w górę jest stosowane do Humanoid podczas skoku.Początkowa wartość tej właściwości jest określona przez wartość StarterPlayer.CharacterJumpPower, która domyślnie wynosi 50 i jest ograniczona między 0 a 1000.Zauważ, że skoki są również wpływane przez właściwość Workspace.Gravity, która określa przyspieszenie z powodu grawitacji.
Chociaż ustawienie tej właściwości na 0 skutecznie uniemożliwi skok humanoida, zaleca się wyłączenie skoku poprzez wyłączenie stanu Enum.HumanoidStateType.Jumping poprzez Humanoid:SetStateEnabled().
Właściwość ta jest widoczna tylko w oknie Właściwości, jeśli zostanie ustawiona na prawdę, ponieważ w przeciwnym razie nie byłaby istotna (zamiast tego używa się ).
MaxHealth
Maksymalna wartość humanoida Health .
Wartość tej właściwości jest używana wraz z właściwością Health w celu określenia rozmiaru domyślnego wyświetlenia paska zdrowia.Kiedy pasek zdrowia humanoida Health osiągnie MaxHealth, może nie zostać wyświetlony, w zależności od jego właściwości HealthDisplayType.
MaxSlopeAngle
Właściwość ta określa maksymalny kąt nachylenia, który może wspiąć się człowiek-oid.Jeśli kąt nachylenia jest większy niż kąt maksymalnego nachylenia humanoida, zejdą w dół po zboczu.
Gdy pojawia się postać, ta właściwość jest ustawiana zgodnie z wartością StarterPlayer.CharacterMaxSlopeAngle.
Wartość tej właściwości jest ograniczona do wartości pomiędzy 0° a 89°.Domyślnie wynosi 89°, więc ludzik może wspinąć się prawie każdą pochyłością, jaką chce domyślnie.
Przykłady kodu
The example below demonstrates the effect of the MaxSlopAngle property by limiting the maximum slope the Players.LocalPlayer can walk up to 30°. The local player will slide down any slope greater than 30°.
This code below works as expected when placed in a LocalScript.
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
Kierunek przesuwania jest właściwością tylko do odczytu, która opisuje kierunek, w którym Humanoid chodzi, jako wektor jednostkowy lub wektor o długości zera.Kierunek jest opisany w przestrzeni świata.
Ponieważ ta właściwość jest tylko do odczytu, nie może być ustawiona przez Script lub LocalScript.
Przykłady kodu
This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
NameDisplayDistance
Właściwość Dystans wyświetlania nazwy jest liczbą używaną w połączeniu z właściwością Humanoid.DisplayDistanceType w celu kontrolowania odległości, z której można zobaczyć nazwę humanoida.
Zobacz Nazwę postaci/wygląd zdrowia dla szczegółowego przewodnika dotyczącego kontroli wyglądu nazw postaci i pasków zdrowia.
NameOcclusion
Kontroluje, czy nazwa i pasek zdrowia humanoida może być widoczny za ścianami lub innymi obiektami.Właściwość ta jest wartością Enum.NameOcclusion i może być skonfigurowana, aby wykluczać wszystkie nazwy, nazwy wrogów lub wyłączyć całkowicie wykluczanie.
W przypadkach, gdy LocalPlayer nie ma z nią powiązanej Humanoid , ta właściwość zamiast tego dotyczy przedmiotu Humanoid.
Zobacz Nazwę postaci/wygląd zdrowia dla szczegółowego przewodnika dotyczącego kontroli wyglądu nazw postaci i pasków zdrowia.
Przykłady kodu
In the below example, Player|Players will not be able to see each other's Player.Character names when they are obscured behind BasePart|BaseParts.
local Players = game:GetService("Players")
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.NamOcclusion = Enum.NameOcclusion.OccludeAll
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
PlatformStand
Określa, czy Humanoid jest obecnie w stanie Enum.HumanoidStateType.PlatformStanding.Gdy prawda, ludzkioid jest w stanie, w którym wolno spada i nie może się poruszać.Ten stan zachowuje się podobnie do siedzenia, z wyjątkiem tego, że skakanie nie uwalnia humanoida z tego stanu.
RequiresNeck
Pozwala programistom wyłączyć zachowanie, w którym gracz Character|character umiera, jeśli szyja Motor6D zostanie usunięta lub odłączona choćby na chwilę.Właściwość ta domyślnie wynosi prawda.
RigType
Typ postaci opisuje, czy Humanoid korzysta z przestarzałej postaci R6, czy nowszej postaci R15.
Sprzęt R6 używa 6 widocznych Parts, podczas gdy sprzęt R15 używa 15 widocznych Parts.Sprzęty R15 mają więcej stawów niż sprzęty R6, co czyni je o wiele bardziej wszechstronnymi podczas animacji.
Zauważ, że jeśli ta właściwość jest ustawiona nieprawidłowo, Humanoid nie będzie działać poprawnie.Na przykład, jeśli typ postaci R15 humanoida jest ustawiony na R6, umrze, ponieważ nie ma nazywanego tułowia połączonego z głową , która została nazwana .
RootPart
Odwołanie do obiektu HumanoidRootPart ludzkiego humanoida, części sterującej korzeniem Humanoid, która kontroluje ruch ludzkiego humanoida w świecie 3D.Ta część jest zwykle niewidoczna.
Dla postaci R15, Model.PrimaryPart model Player.Character jest ustawiony na HumanoidRootPart .
Dla znaków R6, Model.PrimaryPart jest ustawiony na część Head.
SeatPart
SeatPart jest odniesieniem do siedzenia, na którym obecnie siedzi Humanoid , jeśli takie istnieje.Wartość tej właściwości może być albo Seat, albo VehicleSeat.Będzie to nil, jeśli Humanoid nie siedzi obecnie na siedzeniu.
Uwaga:
- Aby określić, czy Humanoid jest obecnie siedzący czy nie, zobacz Humanoid.Sit
Sit
Właściwość Sit jest booleanem, który wskazuje, czy Humanoid jest obecnie siedzący.Humanoids można zmusić do siedzącego stanu, ustawiając wartość tej właściwości na prawdę.Jeśli Humanoid nie jest przymocowany do siedzenia w stanie siedzenia, ulegnie potknięciu bez kolizji w nogach.A Humanoid może uciec z siedzącego stanu, skacząc.
Uwaga:
- The Seat lub VehicleSeat the Humanoid siedzi na można uzyskać za pomocą właściwości Humanoid.SeatPart
- Można wykryć, kiedy Humanoide siedzi, połączając się z wydarzeniem Humanoid.Seated.
TargetPoint
Nie używaj Ta właściwość działa tylko z włączonym trybem eksperymentalnym, który został całkowicie wycofany.
Właściwość ta opisuje pozycję 3D w przestrzeni, w której Player kontroluje tę ostatnią za pomocą Humanoid wyposażonego Tool.
Właściwość ta jest głównie wykorzystywana przez klasyczne narzędzia do określenia, na co dąży humanoid, gdy aktywuje narzędzie.Jeśli dasz NPC klasyczną wyrzutnię rakiet, ustaw jego punkt docelowy i następnie wezwiesz funkcję narzędzia Tool:Activate(), możesz sprawić, że NPC wystrzeli rakietę w punkt docelowy.
UseJumpPower
Gdy pojawia się postać, właściwość ta jest ustawiona zgodnie z wartością StarterPlayer.CharacterUseJumpPower, która domyślnie wynosi prawdę.
Podczas skoku, z tym ustawieniem na prawdę, wartość Humanoid.JumpHeight jest używana do zapewnienia skoków humanoidów do tej wysokości.Z tym ustawieniem na fałsz, wartość Humanoid.JumpPower jest używana do zastosowania siły w górę.
WalkSpeed
Właściwość ta opisuje, jak szybko Humanoid może chód, w szpilkach na sekundę.Domyślnie jest ustawiony na wartość StarterPlayer.CharacterWalkSpeed (16), co oznacza, że gracz może przesuwać 16 ćwieków w dowolnym kierunku co sekundę.
Notatki
- Gdy kontrolowany na urządzeniu mobilnym lub gamepadzie, humanoid może chodzić wolniej niż jego WalkSpeed jeśli kontrolny joystick przesuwa się tylko o stopień stopniowy od środka.
- Możesz zamrozić humanoida na miejscu, ustawiając WalkSpeed na 0; uniemożliwia to przemieszczanie go przez kontrolującego gracza poprzez domyślne mechanizmy ruchu.
- Domyślny skrypt animacji skaluje animacje ruchu humanoida w oparciu o to, jak szybko porusza się w stosunku do domyślnej prędkości 16 ćwieków na sekundę.
WalkToPart
WalkToPart jest odniesieniem do części, do której próbuje dotrzeć Humanoid.Właściwość ta jest zwykle ustawiana, gdy część jest przekazywana jako drugi argument funkcji Humanoid:MoveTo() Humanoida.
Gdy ustawiono WalkToPart i istniejący humanoid aktywnie próbuje dotrzeć do części, będzie nadal aktualizować swój cel Vector3, aby był pozycją części, plus Humanoid.WalkToPoint przetłumaczonym w przestrzeni obiektu w odniesieniu do rotacji części.
Można to opisać w Luau jako:
goal = humanoid.WalkToPart.CFrame:pointToObjectSpace(humanoid.WalkToPoint)
Ostrzeżenia
- Ustawienie wartości WalkToPart nie jest wystarczające, aby rozpocząć start humanoida po następującej części.
- Humanoid jest poproszony o rozpoczęcie próby osiągnięcia celu, gdy zmieniona zostanie wartość WalkToPoint.
- Może to zostać zmienione w przyszłości.
- Stan docelowy osiągnięcia celu humanoida wygasa po 8 sekundach, jeśli nie osiągnie swojego celu.
- Robi się to, aby NPC nie utknęły, czekając na Humanoid.MoveToFinished, aby wystrzelić.
- Jeśli nie chcesz, aby to się stało, powinieneś wielokrotnie wezwać MoveTo, aby czas wygaśnięcia był nadal resetowany.
WalkToPoint
WalkToPoint opisuje pozycję 3D w przestrzeni, do której próbuje dotrzeć humanoid, po tym jak został poproszony o to przez funkcję Humanoid:MoveTo() ludzkiego humanoida.
Jeśli ustawiaćHumanoid.WalkToPart człowieka, cel jest ustawiony poprzez przekształcenie WalkToPoint względem pozycji i rotacji części.Jeśli nie zostanie ustawiaćfunkcja WalkToPart, wówczas humanoid spróbuje bezpośrednio dotrzeć do określonej pozycji 3D wskazanej przez WalkToPoint.
Ostrzeżenia
- Wartość WalkToPoint musi zostać zmieniona na inną wartość, aby ludzoid zaczął chodzić w jej kierunku.
- Jeśli chcesz zrobić humanoidowy spacer do 0,0,0, powinieneś użyć funkcji MoveTo ludzkiego humanoida.
- Może to zostać zmienione w przyszłości.
- Stan docelowy osiągnięcia celu humanoida wygasa po 8 sekundach, jeśli nie osiągnie swojego celu.
- Robi się to, aby NPC nie utknęły, czekając na Humanoid.MoveToFinished, aby wystrzelić.
- Jeśli nie chcesz, aby to się stało, powinieneś wielokrotnie wezwać MoveTo, aby czas wygaśnięcia był nadal resetowany.
Przykłady kodu
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
Metody
AddAccessory
Ta metoda przypina określone Accessory do rodzica humanoida.
Gdy ta metoda jest wywoływana, Accessory jest przymocowany do postaci poprzez wyszukiwanie Attachment w rodzaju rodzica humanoida, który ma taką samą nazwę jak Attachment w akcesorium Handle Part.Jeśli jeden zostanie znaleziony, część Uchwyt zostanie połączona z rodzicem Attachment za pomocą Weld i spawanie zostanie skonfigurowane tak, aby Attachments zajmowała tę samą przestrzeń.
Jeśli nie można znaleźć wymaganego Attachment, wówczas Accessory pozostanie powiązany z rodzicem humanoida, ale będzie odłączony.
Zazwyczaj spawy akcesoriów są tworzone na serwerze, ale mogą być tworzone na klientzie w pewnych przypadkach.W tych sytuacjach połączenia strony klienta do AddAccessory() mogą nie zawsze produkować pożądane zachowanie, a możesz użyć BuildRigFromAttachments() , aby zmusić do dziełospawanych spoin.
Parametry
Zwroty
Przykłady kodu
This script generates the "Clockwork's Shades" Accessory from scratch, and then attaches it to the player's character using Humanoid.AddAccessory You should paste this code into a regular script, and then parent it inside of the StarterPlayer's StarterCharacterScripts folder.
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local clockworksShades = Instance.new("Accessory")
clockworksShades.Name = "ClockworksShades"
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1.6, 1)
handle.Parent = clockworksShades
local faceFrontAttachment = Instance.new("Attachment")
faceFrontAttachment.Name = "FaceFrontAttachment"
faceFrontAttachment.Position = Vector3.new(0, -0.24, -0.45)
faceFrontAttachment.Parent = handle
local mesh = Instance.new("SpecialMesh")
mesh.Name = "Mesh"
mesh.Scale = Vector3.new(1, 1.3, 1)
mesh.MeshId = "rbxassetid://1577360"
mesh.TextureId = "rbxassetid://1577349"
mesh.Parent = handle
humanoid:AddAccessory(clockworksShades)
BuildRigFromAttachments
Ta metoda składa drzewo Motor6D połączeń dla Humanoid . Motor6D połączenia są wymagane do odtwarzania Animations .
Zaczynając od humanoida RootPart, ta metoda zbiera wszystkie Attachments rodzice w obecnej części, które kończą się na RigAttachment .Następnie wyszukuje pasujący załącznik w postaci, która ma taką samą nazwę jak załącznik.Używając tych dwóch załączników, stworzono stawę Motor6D wspólną w oparciu o części związane z tymi dwoma załącznikami i CFrame załącznikami.
Humanoid:BuildRigFromAttachments() również skaluje znak i ustawia kolory ciała.
Zwroty
Przykłady kodu
A Lua port of the Humanoid's BuildRigFromAttachments function, so that the recursive behavior of the function can be seen.
local function createJoint(jointName, att0, att1)
local part0, part1 = att0.Parent, att1.Parent
local newMotor = part1:FindFirstChild(jointName)
if not (newMotor and newMotor:IsA("Motor6D")) then
newMotor = Instance.new("Motor6D")
end
newMotor.Name = jointName
newMotor.Part0 = part0
newMotor.Part1 = part1
newMotor.C0 = att0.CFrame
newMotor.C1 = att1.CFrame
newMotor.Parent = part1
end
local function buildJointsFromAttachments(part, characterParts)
if not part then
return
end
-- first, loop thru all of the part's children to find attachments
for _, attachment in pairs(part:GetChildren()) do
if attachment:IsA("Attachment") then
-- only do joint build from "RigAttachments"
local attachmentName = attachment.Name
local findPos = attachmentName:find("RigAttachment")
if findPos then
-- also don't make double joints (there is the same named
-- rigattachment under two parts)
local jointName = attachmentName:sub(1, findPos - 1)
if not part:FindFirstChild(jointName) then
-- try to find other part with same rig attachment name
for _, characterPart in pairs(characterParts) do
if part ~= characterPart then
local matchingAttachment = characterPart:FindFirstChild(attachmentName)
if matchingAttachment and matchingAttachment:IsA("Attachment") then
createJoint(jointName, attachment, matchingAttachment)
buildJointsFromAttachments(characterPart, characterParts)
break
end
end
end
end
end
end
end
end
local function buildRigFromAttachments(humanoid)
local rootPart = humanoid.RootPart
assert(rootPart, "Humanoid has no HumanoidRootPart.")
local characterParts = {}
for _, descendant in ipairs(humanoid.Parent:GetDescendants()) do
if descendant:IsA("BasePart") then
table.insert(characterParts, descendant)
end
end
buildJointsFromAttachments(rootPart, characterParts)
end
local humanoid = script.Parent:WaitForChild("Humanoid")
buildRigFromAttachments(humanoid)
A script that generates an R15 character from scratch using a package's assetId.
local AssetService = game:GetService("AssetService")
local InsertService = game:GetService("InsertService")
local MarketplaceService = game:GetService("MarketplaceService")
local PACKAGE_ASSET_ID = 193700907 -- Circuit Breaker
local function addAttachment(part, name, position, orientation)
local attachment = Instance.new("Attachment")
attachment.Name = name
attachment.Parent = part
if position then
attachment.Position = position
end
if orientation then
attachment.Orientation = orientation
end
return attachment
end
local function createBaseCharacter()
local character = Instance.new("Model")
local humanoid = Instance.new("Humanoid")
humanoid.Parent = character
local rootPart = Instance.new("Part")
rootPart.Name = "HumanoidRootPart"
rootPart.Size = Vector3.new(2, 2, 1)
rootPart.Transparency = 1
rootPart.Parent = character
addAttachment(rootPart, "RootRigAttachment")
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(2, 1, 1)
head.Parent = character
local headMesh = Instance.new("SpecialMesh")
headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
headMesh.MeshType = Enum.MeshType.Head
headMesh.Parent = head
local face = Instance.new("Decal")
face.Name = "face"
face.Texture = "rbxasset://textures/face.png"
face.Parent = head
addAttachment(head, "FaceCenterAttachment")
addAttachment(head, "FaceFrontAttachment", Vector3.new(0, 0, -0.6))
addAttachment(head, "HairAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "HatAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "NeckRigAttachment", Vector3.new(0, -0.5, 0))
return character, humanoid
end
local function createR15Package(packageAssetId)
local packageAssetInfo = MarketplaceService:GetProductInfo(packageAssetId)
local character, humanoid = createBaseCharacter()
character.Name = packageAssetInfo.Name
local assetIds = AssetService:GetAssetIdsForPackage(packageAssetId)
for _, assetId in pairs(assetIds) do
local limb = InsertService:LoadAsset(assetId)
local r15 = limb:FindFirstChild("R15")
if r15 then
for _, part in pairs(r15:GetChildren()) do
part.Parent = character
end
else
for _, child in pairs(limb:GetChildren()) do
child.Parent = character
end
end
end
humanoid:BuildRigFromAttachments()
return character
end
local r15Package = createR15Package(PACKAGE_ASSET_ID)
r15Package.Parent = workspace
ChangeState
Ta metoda powoduje, że Humanoid wchodzi do podanego Enum.HumanoidStateType, opisującego aktywność, którą Humanoid wykonuje obecnie.
Proszę przejrzeć stronę Enum.HumanoidStateType dla więcej informacji o poszczególnych stanach, ponieważ niektóre mają niedostępne nazwy.Na przykład Enum.HumanoidStateType.Running opisuje stan, w którym nogi humanoida są na ziemi, w tym podczas postoju.
Z powodu domyślnego zachowania Humanoid niektóre stany zostaną automatycznie zmienione po ustawiać. Na przykład:
- Ustawienie stanu na Enum.HumanoidStateType.Swimming, gdy humanoid nie jest w wodzie, spowoduje, że zostanie automatycznie ustawiony na Enum.HumanoidStateType.GettingUp.
- Ponieważ nie jest używany, ustawienie stanu na Enum.HumanoidStateType.PlatformStanding spowoduje, że stan humanoida zostanie automatycznie ustawiony na Enum.HumanoidStateType.Running .
Zauważ, że aby ustawić stan Humanoid za pomocą tej metody, musisz to zrobić z LocalScript i klient musi mieć własność sieciową z Player.Character.Alternatywnie możesz wywołać tę metodę z boku serwera Script, ale serwer musi posiadać własność sieciową postaci gracza.
Zobacz także Humanoid:SetStateEnabled() , aby włączyć lub wyłączyć określony stan, oraz Humanoid:GetState() , aby uzyskać obecny stan humanoida.
Parametry
The Enum.HumanoidStateType który ma być wykonany przez Humanoid .
Zwroty
Przykłady kodu
This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
EquipTool
Ta metoda sprawia, że Humanoid wyposaża dany Tool .
Poniższy przykład spowodowałby, że Player wyposaży narzędzie w Workspace o nazwie 'Narzędzie' .
local Players = game:GetService("Players")local Workspace = game:GetService("Workspace")local player = Players:FindFirstChildOfClass("Player")if player and player.Character thenlocal humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal tool = Workspace:FindFirstChild("Tool")if tool thenhumanoid:EquipTool(tool)endendend
Gdy ta metoda zostanie wywołana, Humanoid najpierw automatycznie zdobędzie wszystkie Tools, które obecnie ma wyposażone.
Chociaż będą wyposażone, Tools dla których Tool.RequiresHandle jest prawdą nie będzie funkcjonować, jeśli nie mają uchwytu, niezależnie od tego, czy metoda ta jest używana do ich wyposażenia, czy nie.
Zobacz także:
- Aby zdjąć narzędzia, użyj Humanoid:UnequipTools()
Parametry
Zwroty
GetAccessories
Ta metoda zwraca tablicę Accessory obiektów, które nosi obecnie rodzic humanoida.Wszystkie takie obiekty Accessory zostaną włączone, niezależnie od tego, czy są przymocowane, czy nie.
Jeśli Humanoid nie ma obiektów Accessory, zostanie zwrócona pusta lista.
Zobacz także Humanoid:AddAccessory() aby przymocować Accessory do rodzica humanoida.
Zwroty
Przykłady kodu
This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
GetAppliedDescription
Ta metoda zwraca kopię zapamiętanego HumanoidDescription obrazu, który opisuje jego obecny wygląd.Można go użyć do szybkiego określenia wyglądu postaci i przypisania jej wyglądu innym postaciom za pomocą metody Humanoid:ApplyDescription().
Zobacz także
- Players:GetHumanoidDescriptionFromUserId() który zwraca HumanoidDescription opisujący awatara dla przekazanego użytkownika
- Players:GetHumanoidDescriptionFromOutfitId() który zwraca HumanoidDescription parametry, które są inicjalizowane, aby pasowały do parametrów przekazanego w bocznej aplikacji zasobu stroju.
- Player:LoadCharacterWithHumanoidDescription() który generuje gracza z wyglądem z przekazanego w HumanoidDescription .
Zwroty
GetBodyPartR15
Ta metoda zwraca to, co Enum.BodyPartR15 jest Part lub Enum.BodyPartR15.Unknown jeśli część nie jest częścią ciała R15.Ta metoda pozwala programistom odzyskiwać części ciała gracza niezależnie od tego, jakie są rzeczywiste nazwy części ciała, zamiast zwracać enum.
Można go używać w połączeniu z Humanoid:ReplaceBodyPartR15().Na przykład, jeśli część ciała gracza dotknie czegoś, ta funkcja zwróci instancję części.Wówczas programiści mogą sprawdzić, jaką część ciała była, taką jak głowa lub ramię.Następnie w zależności od tego, jaka była ta część, programiści mogą wykonać jakąś akcję rozgrywkową lub zastąpić ją inną częścią - być może pokazując obrażenia.
Ta metoda może być przydatna w grach, w których ważne jest położenie trafienia.Na przykład można go użyć do określenia, czy gracz został trafiony w nogę, a następnie spowolnić go w oparciu o obrażenia.
Parametry
Wskazana część jest sprawdzana, aby sprawdzić, czy jest to część ciała R15.
Zwroty
Typ ciała R15 określonej części lub nieznany, jeśli część nie jest częścią ciała.
GetLimb
Ta metoda zwraca enumerację Enum.Limb, która jest powiązana z danym Part. Działa zarówno dla rigów R15 i R6, na przykład:
-- Dla R15print(humanoid:GetLimb(character.LeftUpperLeg)) -- Enum.Limb.LeftLegprint(humanoid:GetLimb(character.LeftLowerLeg)) -- Enum.Limb.LeftLegprint(humanoid:GetLimb(character.LeftFoot)) -- Enum.Limb.LeftLeg-- Dla R6print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg
Zauważ, że Humanoid:GetLimb() wyrzuci błąd, jeśli rodzic części nie jest ustawiony na rodzica humanoida.
Parametry
Zwroty
Przykłady kodu
Put this in a LocalScript. The output will vary based on if the humanoid is R6 or R15.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end
GetState
Ta metoda zwraca obecną Enum.HumanoidStateType ludzkiego humanoida, opisującą aktywność, którą Humanoid wykonuje obecnie, taką jak skakanie lub pływanie.
Zobacz także Humanoid:SetStateEnabled() , aby włączyć lub wyłączyć określony stan, oraz Humanoid:ChangeState() , aby zmienić obecny stan humanoida.
Zwroty
Przykłady kodu
This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
GetStateEnabled
Metoda GetStateEnabled zwraca, czy Enum.HumanoidStateType jest włączona dla Humanoid.
Stan humanoida opisuje aktywność, którą obecnie wykonuje humanoid.
Kiedy konkretny Enum.HumanoidStateType jest wyłączony, humanoid nigdy nie może wejść w ten stan.Jest to prawda niezależnie od tego, czy próba zmiany stanu jest wykonywana za pomocą Humanoid:ChangeState() lub wewnętrznego kodu ludzkiego Roblox.
Zobacz także:
- Dla wydarzenia, które wysyła się, gdy włączono lub wyłączono stan humanoida, patrz Humanoid.StateEnabledChanged
- Aby włączyć lub wyłączyć stan Humanoid użycia Humanoid:SetStateEnabled()
Parametry
Podany Enum.HumanoidStateType.
Zwroty
Czy podany Enum.HumanoidStateType jest włączony.
Przykłady kodu
The code below sets the value of the humanoid jumping state to false using Humanoid:SetStateEnabled() and then retrieves and prints the value of this state (false) using Humanoid:GetStateEnabled().
local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false
Move
Ta metoda powoduje, że Humanoid chodzi w określonym kierunku Vector3.
Domyślnie kierunek jest w warunkiświata, ale jeśli parametr relativeToCamera jest true, kierunek jest względem CFrame z CurrentCamera.Ponieważ kierunek negatywny Z jest uważany za "w przód" w Roblox, następujący kod sprawi, że ludzki chód pójdzie w kierunku CurrentCamera.
humanoid:Move(Vector3.new(0, 0, -1), true)
Gdy ta metoda zostanie wywołana, Humanoid przeniesie się, dopóki metoda nie zostanie ponownie wywołana.Jednak ta metoda zostanie nadpisana w następnym ramie przez domyślną skrypt kontroli postaci Roblox.Można tego uniknąć, wywołując tę funkcję za każdym razem za pomocą RunService:BindToRenderStep() (patrz przykład) lub zastąpiając skrypty kontroli w StarterPlayerScripts .
Metoda ta może być wywołana na serwerze, ale powinno to być zrobione tylko wtedy, gdy serwer ma własność sieciową z montażem humanoida.
Zobacz także Humanoid:MoveTo(), który prowadzi do punktu Humanoid spacer, a Player:Move() który skutecznie wzywa tę funkcję.
Parametry
Kierunek, w którym należy iść.
Ustaw na true, jeśli parametr moveDirection powinien być traktowany względem CurrentCamera.
Zwroty
Przykłady kodu
This code sample uses the Humanoid:Move() function to make the player's Character walk in the direction of the Camera. RunService:BindToRenderStep() is required here as the default control scripts will overwrite the player's movement every frame.
To run this sample, place it inside a LocalScript parented to StarterCharacterScripts.
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
RunService:BindToRenderStep("move", Enum.RenderPriority.Character.Value + 1, function()
if player.Character then
local humanoid = player.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid:Move(Vector3.new(0, 0, -1), true)
end
end
end)
MoveTo
Ta metoda powoduje, że Humanoid próbuje przejść do określonej lokalizacji, ustawiając właściwości Humanoid.WalkToPoint i Humanoid.WalkToPart.
Parametry lokalizacji i części odpowiadają temu, co i zostanie ustawione.
Jeśli parametr część zostanie określony, Humanoid nadal będzie próbował przejść do punktu.Jeśli jednak część się porusza, to punkt , do którego chodzi, przeniesie się do tej samej pozycji względem części .Jeśli parametr część nie jest określony, pozycja, do której chodzi Humanoid nie zmieni się.
Stan docelowy osiągnięcia celu humanoida wygasa po 8 sekundach, jeśli nie osiągnie swojego celu.Robi się to, aby NPC nie utknęły, czekając na Humanoid.MoveToFinished, aby wystrzelić.Jeśli nie chcesz, aby to się stało, powinieneś wielokrotnie wezwać MoveTo, aby czas wygaśnięcia był nadal resetowany.
MoveTo() kończy się, jeśli którykolwiek z poniższych warunków ma zastosowanie:
Postać przybywa do miejsca docelowego.
Postać zostaje utknięta, a czasomierz ośmiu sekund wygasa.
Wartość Humanoid.WalkToPoint lub Humanoid.WalkToPart zmienia się.
Skrypt dzwoni Humanoid:Move() z nowym parametrem moveDirection.
Parametry
Pozycja, do której należy ustawić Humanoid.WalkToPoint.
The BasePart do ustawienia Humanoid.WalkToPart.
Zwroty
Przykłady kodu
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
RemoveAccessories
Ta metoda usuwa wszystkie Accessory obiekty noszone przez rodzica humanoida. Dla gracza Characters usunie to wszystkie czapki i inne akcesoria.
Ta metoda usuwa obiekt Accessory poprzez wezwanie Instance:Destroy() na nich, co oznacza, że Parent akcesoriów jest ustawionych na nil i zablokowanych.
Zobacz także Humanoid:AddAccessory() , aby przymocować Accessory i Humanoid:GetAccessories() , aby uzyskać wszystkie obiekty Accessory należące do Humanoid .
Zwroty
Przykłady kodu
This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
ReplaceBodyPartR15
Automatycznie zastępuje część kończyny R15/Rthro w Humanoide inną częścią. Część jest automatycznie skalowana jak zwykle.
Ta metoda jest przydatna do modyfikowania postaci podczas gry lub budowania postaci z podstawowego szablonu.Powiązana metoda GetBodyPartR15 może się przydać podczas używania tej metody.
Nazwa części przekazanej powinna pasować do nazwy BodyPartR15 Enum przekazanej.
Parametry
Część ciała do zastąpienia. Enum.BodyPartR15.Unknown nie powiedzie się.
The Class.Part``Class.Instance które zostaną przypisane do postaci.
Zwroty
SetStateEnabled
Ta metoda ustawia, czy dany Enum.HumanoidStateType jest włączony dla Humanoid.Kiedy wyłączono określone Enum.HumanoidStateType, Humanoid nigdy nie może wejść w to stan.Jest to prawda niezależnie od tego, czy próba zmiany stanu jest wykonywana za pomocą Humanoid:ChangeState() lub wewnętrznego kodu Roblox Humanoid.
Zauważ, że używanie SetStateEnabled() na serwerze nie powiela zmiany do klienta, ani odwrotnie.
Parametry
The Enum.HumanoidStateType do włączenia lub wyłączenia.
true jeśli ma być włączone state jeśli false ma być wyłączone, state jeśli ma być wyłączone.
Zwroty
Przykłady kodu
The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.
To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
TakeDamage
Ta metoda obniża Humanoid.Health z Humanoid o podanych kwotę jeśli nie jest chroniona przez ForceField
Ta metoda akceptuje ujemne wartości dla parametru kwoty.Zwiększy to Humanoid.Health ludzkiegooida.Jednak będzie to miało sens tylko wtedy, gdy nie ma obecnego ForceField .
W jaki sposób pola siły chronią przed obrażeniami TakeDamage
A Humanoid jest uważany za chroniony przez ForceField jeśli ForceField spełnia jedno z poniższych kryteriów:
Aby zadać obrażenia Humanoid niezależnie od obecnych ForceFields, ustaw Humanoid.Health bezpośrednio.
Aby uzyskać więcej informacji o tym, jak ForceFields chronić Humanoids zobacz stronę ForceField.
Parametry
Obrażenia lub kwota, którą należy odliczyć od Humanoid.Health.
Zwroty
Przykłady kodu
This code, put in a LocalScript, would make the local player take 99 damage only if a ForceField wasn't present.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
humanoid:TakeDamage(99)
UnequipTools
Ta metoda zdjęwa każdą Tool obecnie wyposażoną przez Humanoid
Niewyposażony Tool zostanie przypisany do Backpack związanego z Player związanego z Humanoid.
Jeśli nie zostanie wyposażony żaden Tool, ta metoda nic nie zrobi.
Chociaż Tools może być wyposażony przez NPC (Non Player Characters), ta metoda działa tylko na Humanoids z odpowiednim Player.Dzieje się tak, ponieważ potrzebny jest obiekt Backpack, aby przydzielić nieuzbrojonemu Tool .
Zobacz także:
- Aby zamiast wyposażyć Tool, użyj Humanoid:EquipTool()
Zwroty
Przykłady kodu
The following sample will bind the U key to unequip any Tool|Tools the Player currently has equipped.
To use this sample, place it inside a LocalScript within StarterPlayerScripts|StarterPlayer.StarterPlayerScripts.
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
Ta metoda poddania sprawia, że wygląd postaci pasuje do wyglądu przekazanego w HumanoidDescription.Kopia przekazanej HumanoidDescription jest przechowywana jako HumanoidDescription dla Humanoid.
Metoda ta jest optymalizowana poprzez założenie, że tylko ta metoda jest używana do zmiany wyglądu postaci, a żadne zmiany nie są dokonywane za pomocą innych środków między wezwaniami.Jeśli dokonane zostaną zmiany w charakterze między wezwaniami, wówczas ta metoda może nie sprawić, że charakter odzwierciedla przekazane w HumanoidDescription dokładnie.Jeśli chcesz używać tej metody w połączeniu z innymi sposobami aktualizowania postaci, Humanoid:ApplyDescriptionReset() zawsze zapewni, że postać odzwierciedla przekazane w HumanoidDescription .
Zobacz także
- Humanoid:GetAppliedDescription() który zwraca HumanoidDescription obecnie zastosowane do humanoida
- Players:GetHumanoidDescriptionFromUserId() który zwraca HumanoidDescription opisujący awatara dla przekazanego użytkownika
- Players:GetHumanoidDescriptionFromOutfitId() który zwraca HumanoidDescription parametry, które są inicjalizowane, aby pasowały do parametrów przekazanego w bocznej aplikacji zasobu stroju.
- Player:LoadCharacterWithHumanoidDescription() który generuje gracza z wyglądem z przekazanego w HumanoidDescription .
Parametry
Instancja HumanoidDescription, do której chcesz ustawić postać, aby dopasowywać.
Zwroty
ApplyDescriptionReset
Ta metoda poddania sprawia, że wygląd postaci pasuje do wyglądu przekazanego w HumanoidDescription, nawet po zmianach zewnętrznych.Kopia przekazanej HumanoidDescription jest przechowywana jako HumanoidDescription dla Humanoid.
Ta metoda zawsze zapewni, że postać odzwierciedla przekazane w HumanoidDescription , nawet jeśli dokonano zmian w postaci nie korzystającej z systemu HumanoidDescription (na przykład nie używając ApplyDescriptionReset() lub ApplyDescription() ).Jest to w przeciwieństwie do ApplyDescription(), które jest zoptymalizowane i może nieprawidłowo zastosować HumanoidDescription, jeśli znak został zmieniony za pomocą innych środków niż za pośrednictwem systemu HumanoidDescription.
Parametry
Instancja HumanoidDescription, do której chcesz ustawić postać do dopasowywać.
Zwroty
PlayEmote
Jeśli emotka nie może zostać odtworzona, ponieważ emotkaName nie znajduje się w HumanoidDescription, metoda ta wyświetli błąd.Metoda zwróci prawdę, aby wskazać, że emotka została pomyślnie odtworzona.
Parametry
nazwa emotki do grać.
Zwroty
udnio odtworzono.
Zdarzenia
Climbing
Wybucha, gdy prędkość, z jaką wzrasta Humanoid zmienia się.
Humanoids może wspinać się po drabinach zrobionych z Parts lub TrussParts.
Humanoids wspinanie się na 70% ich Humanoid.WalkSpeed .
To wydarzenie nie zawsze będzie wystrzeliwane z prędkością 0, gdy Humanoid przestanie wspinanie się.
Zobacz także:
- Dla pływania i biegania zobacz wydarzenia Humanoid.Swimming i Humanoid.Running
- Możesz również wykryć, kiedy Humanoid wspinają się używając wydarzenia Humanoid.StateChanged
- Możesz wyłączyć wspinanie za pomocą funkcji Humanoid:SetStateEnabled()
Parametry
Przykłady kodu
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
To wydarzenie wystrzeliwuje się, gdy Humanoid umiera, zwykle gdy Humanoid.Health osiąga 0.Może to być spowodowane albo odłączeniem ich głowy od ich Humanoid.Torso, albo bezpośrednim ustawieniem właściwości zdrowia.
To wydarzenie będzie wystrzeliwane tylko wtedy, gdy jest potomkiem . Jeśli jest wyłączone, nie będzie wystrzeliwane.
Przykłady kodu
The code below would print the player's name, followed by "has died!", whenever a player dies. For example, if the player was named "Shedletsky", "Shedletsky has died!" would be printed to the output when they died.
local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
print(player.Name, "has died!")
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
FallingDown
Wydarzenie FallingDown uruchamia się, gdy Humanoid wchodzi i opuszcza FallingDown``Enum.HumanoidStateType .
The Humanoid wejdzie do stanu GettingUp po 3 sekundach, gdy stan FallingDown zostanie włączony.Kiedy to się wydarzy, to wydarzenie wystrzeli z aktywną wartością aktywną wartością fałsz i wystrzeli z aktywną wartością prawdą .
Parametry
FreeFalling
To wydarzenie wystrzeliwuje się, gdy Humanoid wchodzi lub wychodzi z Freefall``Enum.HumanoidStateType.
Parametr aktywny reprezentuje to, czy Humanoid wchodzi lub wychodzi ze stanu Freefall.
Chociaż stan kończy się ogólnie, gdy dotrze do ziemi, to wydarzenie może wystrzelić z aktywnym równym fałszu , jeśli stan zostanie zmieniony, gdy spada.Z tego powodu powinieneś używać Humanoid.StateChanged i słuchać stanu Landed, aby pracować, gdy Humanoid wyląduje.
Parametry
GettingUp
To wydarzenie wystrzeliwuje się, gdy Humanoid wchodzi lub opuszcza Enum.HumanoidStateType.GettingUp stan, stan przejściowy, który jest aktywowany krótko po wejściu Humanoid w stan FallingDown (3 sekund) lub Ragdoll (1 sekund) stanów.
Kiedy próbuje powrócić, to wydarzenie najpierw wystrzeli z parametrem przed krótkim czasem ponownie wystrzelić z parametrem .
Aby zmusić Humanoid do upadku, użyj funkcji Humanoid:ChangeState() z Enum.HumanoidStateType.FallingDown.
Parametry
HealthChanged
To wydarzenie wystrzeliwuje się, gdy zmienia się Humanoid.Health .Jednak nie strzeli, jeśli zdrowie rośnie z wartością równą lub większą niż Humanoid.MaxHealth.
Kiedy Humanoid.Health osiągnie zero, Humanoid umrze, a wydarzenie Humanoid.Died wybuchnie. To wydarzenie wybuchnie z wartością zera.
Parametry
Nowa wartość Humanoid.Health .
Przykłady kodu
The following example determines the change in health, printing it to the output. It will only work in a LocalScript.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local currentHealth = humanoid.Health
local function onHealthChanged(health)
local change = math.abs(currentHealth - health)
print("The humanoid's health", (currentHealth > health and "decreased by" or "increased by"), change)
currentHealth = health
end
humanoid.HealthChanged:Connect(onHealthChanged)
end
player.CharacterAdded:Connect(onCharacterAdded)
This code sample allows you to create a simple color-changing health bar using two nested Frames. Paste this into a LocalScript on the inner frame.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
Jumping
To wydarzenie wystrzeliwuje się, gdy Humanoid wchodzi i opuszcza Jumping``Enum.HumanoidStateType .
Kiedy skok wystąpi, to wydarzenie uruchamia się z parametrem przed krótkim czasem ponownie wystrzelić z parametrem .Ten drugi strzał nie odpowiada lądowaniu Class.Humanoid``Landed``Enum.HumanoidStateType korzystającemu z Humanoid.StateChanged .
Możesz wyłączyć skakanie za pomocą funkcji Humanoid:SetStateEnabled().
Parametry
MoveToFinished
To wydarzenie wystrzeliwuje się, gdy Humanoid kończy chód do celu ogłoszonego przez Humanoid.WalkToPoint i Humanoid.WalkToPart właściwości.
Właściwości Humanoid.WalkToPoint i Humanoid.WalkToPart można ustawić indywidualnie lub za pomocą funkcji Humanoid:MoveTo().
Jeśli Humanoid dotrze do celu w ciągu 8 sekund, wydarzenie to powróci z osiągniętym jako prawdą.Jeśli cel nie zostanie osiągnięty w ciągu 8 sekund, Humanoid przestanie chodzić, a dotarł będzie fałszywy.Ten wygaśnięcie może zostać zresetowany, wywołując ponownie Humanoid:MoveTo() w okresie wygaśnięcia.
Parametry
Przykłady kodu
This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
PlatformStanding
To wydarzenie wystrzeliwuje się, gdy Humanoid wchodzi lub wychodzi z PlatformStanding``Enum.HumanoidStateType.
Gdy jest w stanie , właściwość będzie prawdą .
Choć Humanoid.PlatformStand jest ustawiony na prawdę, Humanoid nie będzie mógł się poruszać. Aby uzyskać więcej informacji, zobacz stronę dla Humanoid.PlatformStand .
PlatformStand Enum.HumanoidStateType był powiązany z teraz wyłączoną częścią Platform. Mimo to nadal może być używany przez programistów.
Parametry
Ragdoll
To wydarzenie wystrzeliwuje się, gdy Humanoid wchodzi lub wychodzi z Ragdoll``Enum.HumanoidStateType.
Parametr active będzie miał wartość true lub false w celu wskazania wejścia lub wyjścia.
Użyj Humanoid:SetStateEnabled(), aby wyłączyć stan Pobierania, aby pozostać w stanie Ragdoll.
Zobacz także:
- Humanoid.FallingDown dla wydarzenia Humanoid połączonego z stanem FallingDown, który zachowuje się podobnie do Ragdoll
Parametry
Running
To wydarzenie wystrzeliwuje się, gdy prędkość, przy której uruchamiane są zmiany Humanoid, zmienia się.
Podczas uruchamiania Humanoids pokrycia średnio ich Humanoid.WalkSpeed w szpilkach na sekundę.
Kiedy Humanoid przestanie uruchamiać to wydarzenie, wystrzeli z prędkością 0.
Zobacz także:
- Dla pływania i wspinaczki zobacz wydarzenia Humanoid.Swimming i Humanoid.Climbing
- Możesz również wykryć, kiedy Humanoid uruchamia się za pomocą wydarzenia Humanoid.StateChanged
Parametry
Przykłady kodu
Demonstrates connecting to the Humanoid.Running event. The event is connected to every player's humanoid that joins.
The function connected will print whether or not the humanoid is running based on the speed.
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onRunning(speed: number)
if speed > 0 then
print(`{localPlayer.Name} is running`)
else
print(`{localPlayer.Name} has stopped`)
end
end
humanoid.Running:Connect(function(speed: number)
onRunning(speed)
end)
Seated
To wydarzenie wystrzeliwuje, gdy Humanoid siedzi lub wstaje z Seat lub VehicleSeat.
Kiedy postać wchodzi w kontakt z siedzeniem, są one przymocowane do siedzenia i odtwarzana jest animacja siedzenia.Aby uzyskać więcej informacji na ten temat, zobacz stronę Seat.
- Jeśli postać siedzi, parametr active będzie prawdziwy i currentSeatPart będzie to siedzenie, na którym obecnie siedzą.
- Jeśli postać wstała z siedzenia, parametr active będzie fałszywy i currentSeatPart będzie nil.
Zobacz także:
- Humanoid.Sit , który wskazuje, czy Humanoid obecnie siedzi
- Humanoid.SeatPart , który wskazuje na siedzenie, na którym obecnie siedzi Humanoid, jeśli takie istnieje.
Parametry
Przykłady kodu
This code sample demonstrates when the local player's Character sits down or stands up. It should be placed inside a LocalScript within StarterCharacterScripts in order to run when the player's character spawns in.
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local function onSeated(isSeated, seat)
if isSeated then
print("I'm now sitting on: " .. seat.Name .. "!")
else
print("I'm not sitting on anything")
end
end
humanoid.Seated:Connect(onSeated)
StateChanged
To wydarzenie wystrzeliwuje, gdy zmieni się stan Humanoid.
Ponieważ nie ma stanu "bezczynność" humanoida, powinieneś zamiast tego użyć wydarzenia Humanoid.Running lub wysłuchać RootPart części Velocity, aby dowiedzieć się, kiedy Humanoid stoi w miejscu.
Zobacz także
- Humanoid:GetState() i Humanoid:ChangeState() aby uzyskać i ustawić stan.
- Humanoid:SetStateEnabled() aby włączyć i wyłączyć określone stany.
Parametry
Poprzedni wpisywaćstanu humanoida.
wpisywaćobecnego stanu humanoida.
Przykłady kodu
Emits particles from the local player's Player.Character when they jump. To try this code sample, place it inside a LocalScript parented to StarterCharacterScripts.
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)
The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.
To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
StateEnabledChanged
Wydarzenie StateEnableChanged występuje, gdy Humanoid:SetStateEnabled() jest wzywane na Humanoid.
Parametry obejmują Enum.HumanoidStateType w pytaniu wraz z bool wskazującym, czy to stan jest teraz włączony.
Zobacz także:
- Aby znaleźć, czy stan jest obecnie włączony, użyj Humanoid:GetStateEnabled()
- Aby wysłuchać zmian stanu Humanoid użyj Humanoid.StateChanged
Parametry
The Enum.HumanoidStateType dla którego zmieniono włączony stan.
Prawda, jeśli stan jest teraz włączony.
Przykłady kodu
When a humanoid state changes for the Players.LocalPlayer, the code below prints whether the state has been enabled or disabled.
This code should work as expected when placed in a LocalScript.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onStateEnabledChanged(state, enabled)
if enabled then
print(state.Name .. " has been enabled")
else
print(state.Name .. " has been disabled")
end
end
humanoid.StateEnabledChanged:Connect(onStateEnabledChanged)
Strafing
To wydarzenie nie wystrzeliwuje, gdy Humanoid przechyla się i nie powinno być używane przez programistów
To wydarzenie jest uruchamiane, gdy Humanoid wchodzi lub wychodzi z StrafingNoPhysics``Enum.HumanoidStateType.
Kiedy Humanoid wchodzi w stan StrafingNoPhysics ten wydarzenie wystrzeli z aktywnym parametrem aktywnym**prawdą.Wydarzenie zostanie ponownie uruchomione z aktywnym równym fałszu gdy Humanoid opuści stan StrafingNoPhysics.
To wydarzenie jest związane ze stanem i nie strzela, gdy nie porusza się wzdłuż kąta, w którym jest skierowany.Ten stan jest obecnie niewykorzystywany, jeśli jest ustawiony za pomocą Humanoid:ChangeState() stan powróci do RunningNoPhysics.
Parametry
Swimming
To wydarzenie wystrzeliwuje się, gdy prędkość, z jaką pływa Humanoid w wodzie zmienia się Terrain.
Humanoids pływaj w 87,5% ich Humanoid.WalkSpeed .
To wydarzenie nie zawsze będzie wystrzeliwane z prędkością 0, gdy Humanoid przestanie pływać.
Zobacz także:
- Dla biegania i wspinaczki zobacz wydarzenia Humanoid.Running i Humanoid.Climbing
- Możesz również wykryć, kiedy Humanoid pływa, używając wydarzenia Humanoid.StateChanged
- Możesz wyłączyć pływanie za pomocą funkcji Humanoid:SetStateEnabled()
Parametry
Touched
To wydarzenie wystrzeliwuje się, gdy jedna z kończyn humanoida wchodzi w kontakt z inną BasePart.Podana jest BasePart część, której kończyna dotyka, wraz z samą kończyną.
To wydarzenie nie wystrzeli, gdy kończyny należące do Humanoid wejdą w kontakt z samymi sobą.
Alternatywy
Chociaż wydarzenie Humanoid.Touched jest przydatne, powinieneś rozważyć, czy istnieją alternatywy lepiej pasujące do Twoich potrzeb.
- W większości przypadków zaleca się połączenie wydarzenia BasePart.Touched zainteresowania BaseParts zamiast tego, ponieważ wydarzenie Humanoid.Touched będzie stale wystrzeliwane, gdy humanoid się porusza.Na przykład w graw dodgeball bardziej praktyczne byłoby połączenie wydarzenia Touched dla kulek, zamiast używać Humanoid.Touched.
- Podczas próby ustalenia, kiedy Humanoid wylądował na ziemi, wydarzenie Humanoid.StateChanged jest bardziej odpowiednie.Alternatywnie możesz sprawdzić Humanoid.FloorMaterial, czy humanoid stoi na jakimkolwiek materiale nie powietrznym.
Notatki
- Połączenie z tym wydarzeniem spowoduje utworzenie TouchTransmitter w każdej kończynie.
- Obecnie nie ma odpowiednika BasePart.TouchEnded dla Humanoids.
Parametry
Przykłady kodu
When placed inside a Player.Character model this code will give a player the 'Midas touch'. Everything their character touches will change to gold.
When the Humanoid dies, this change is undone and the golden BasePart|BaseParts are returned to their original state.
To test this out, place this code inside a Script and place it in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local partInfo = {}
local debounce = false
local function onHumanoidTouched(hit, _limb)
if debounce then
return
end
if not hit.CanCollide or hit.Transparency ~= 0 then
return
end
if not partInfo[hit] then
partInfo[hit] = {
BrickColor = hit.BrickColor,
Material = hit.Material,
}
hit.BrickColor = BrickColor.new("Gold")
hit.Material = Enum.Material.Ice
debounce = true
task.wait(0.2)
debounce = false
end
end
local touchedConnection = humanoid.Touched:Connect(onHumanoidTouched)
local function onHumanoidDied()
if touchedConnection then
touchedConnection:Disconnect()
end
-- undo all of the gold
for part, info in pairs(partInfo) do
if part and part.Parent then
part.BrickColor = info.BrickColor
part.Material = info.Material
end
end
end
humanoid.Died:Connect(onHumanoidDied)