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 modelowi funkcjonalność postaci. Daje modelowi możliwość fizycz
R6
- Podstawowy charakterystyczny zestaw, który używa 6 części dla kończyn.
- Część Head musi być przyczepiona do części nazyającej się Torso, lub człowiek natychmiastowo umrze.
- Wygląd BodyPart zastosowany jest 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 złożony niż R6, ale również o wiele bardziej elastyczny i wytrzymały.
- Używa 15 części dla kończyn.
- Część Head musi być przyczepiona do części nazyającej się UpperTorso lub Humanoid zginie natychmiastowo.
- Wyglądy BodyPart muszą być bezpośrednio zeskanowane.
- Można go dynamycznie skalować, używając specjalnych obiektów NumberValue z rodzicielami w kształcie ludzkiego półka.
- Humanoid automatycznie stworzy Vector3Value obiekty nazwane OriginalSize w każdym limbicie.
- Jeśli wartość liczby jest włączona w liczbie wielokątów i ma nazwę jednej z obserwujeopcji, zostanie używana do kontroli funkcji skalowania:
- Skala głębokości ciała
- Skala ciała
- Skala ciała
- Skala głowy
Przykłady kodu
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 skaczy, gdy dotknie przeszkody jako gracz na urządzeniemobilnym.
AutomatyczneObrócenie ustawia, czy kształt Wygodny będzie automatycznie obracać w kierunku, w którym się porusza.
Gdy włączone, AutomaticScalingEnabled powoduje, że rozmiar postaci zmienia się w odpowiedzi na zmiany wartości w dziecięcym skalowaniu w kształcie ludzkiego.
Określa, czy połączenia łączące ludoidy złamać się, gdy w stanie Enum.HumanoidStateType.Dead .
Odległość zastosowana do pozycji podstawy kamery, gdy jej pozycja kamery ustawiona jest na ten kształt.
Kontroluje zachowanie dystansu imienia i zdrowia ludoidu.
Ustawia tekst ludoidu, wyświetlanego nad ich głową.
Opisuje Enum.Material, na którym znajduje się obecnie Humanoid. Jeśli Humanoid nie znajduje się na żadnym obiekcie, wartość tego właściwości będzie 2>Air2>.
Opisuje aktualne zdrowie ludoidu na zasięgu [0, Humanoid.MaxHealth].
Używany wraz z właściwością DisplayDistanceType, aby kontrolować odległość, z której można zobaczyć zdrowotną barwę w kształcie człowieka.
Kontroluje to, czy barwa zdrowia ludzkiegooidu może być wyświetlana.
Określa odległość od ziemi, w której powinien znajdować się Humanoid.RootPart.
Jeśli true, Humanoid skaczę z siłą w górę.
Dostarcza kontrolę nad wysokością, do której skaczęły Humanoid skoki.
Określa, ile siły w górę jest zastosowana do Humanoid podczas skoku.
Maksymalna wartość Health ludoidu.
Maksymalny kąt nachylenia, na którym człowiekoid może chodzić bez upadku.
Opisuje kierunek, w którym Humanoid idzie.
Używany wraz z właściwością Humanoid.DisplayDistanceType, aby kontrolować odległość, z której można zobaczyć nazwę ludzkiego kształtu.
Kontroluje, czy można zobaczyć nazwę i barwę zdrowia kształtu ludzkiego za ścianami lub innymi obiektami.
Określa, czy Humanoid jest obecnie w stanie Enum.HumanoidStateType.PlatformStanding .
Pozwala na dezaktywowanie zachowania, w którym gracz Character|character umiera, jeśli Neck Motor6D jest usunięty lub odłączony nawet przez chwilę.
Opisuje, czy ten Humanoid korzysta z dziedzictwa R6 lub nowego R15-owego rakietki postaci.
Odnośnik do obiektu Korzeń ludzkiego ludoidu.
Odnośnik do siedzenia, na którym obecnie siedzi Humanoid, jeśli to dotyczy.
Opisuje, czy Humanoid jest obecnie siedzący.
Opisuje pozycję 3D, w której Player kontroluje Humanoid ostatnio kliknięte w świecie, używając Tool.
Określa, czy JumpHeight ( fałszywy ) lub Humanoid.JumpPower ( prawdziwy ) jest używany.
Opisuje maksymalną prędkość ruchu człowieka w studsach na sekundę.
Odniesienie do części, której pozycja jest próbowana przez człowieka.
Pozycja, do której próbuje dotrzeć człowiek, po wezwaniu do Humanoid:MoveTo() jest tworzona.
Metody
Przyczepia Accessory do rodzica kształtu ludzkiego.
Zwiazdkuje drzewo Motor6D współdzielników poprzez łączenie ze sobą Attachment obiektów w postaci ludzkiego.
Ustawia Humanoid , aby wejść do podanego Enum.HumanoidStateType .
Zwraca Accessory obiektów, które nosi obecnie dziecko latającego człowieka.
Zwraca kopię zapisu HumanoidDescription humanoid'a, który opisuje jego obecny wygląd.
Przekaż część ciała tej funkcji (część ciała powinna być siostrą Humanoid i dzieckiem Model) aby uzyskać Enum.BodyPartR15``Class.Part .
Zwraca bieżący Enum.HumanoidStateType ludzoidu.
Wywraca, czy Enum.HumanoidStateType jest włączony dla Humanoid .
Powoduje, że Humanoid chodzi w podanych kierunkach.
Powoduje, że Humanoid próbuje przejść do danej lokalizacji ustawiając właściwości Humanoid.WalkToPoint i Humanoid.WalkToPart.
Usuwa wszystkie obiekty Accessory noszone przez rodzic hiperbrydji.
Zastępuje dynamycznie część ciała człowieka inną częścią.
Ustawia, czy dany Enum.HumanoidStateType jest włączony dla Humanoid.
Zmniejsza Humanoid.Health Class.Humanoid przez podany Humanoid , jeśli nie jest chroniony przez Class.ForceField .
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
Ustawia wygląd postaci tak, aby pasował do tego z HumanoidDescription .
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
Ustawia wygląd postaci tak, aby pasował do tego z HumanoidDescription , nawet po zmianach zewnętrznych.
Gramuje emotki i wypisuje je, jeśli zostały one uruchomione pomyślnie.
Zdarzenia
Wystrzela, gdy szybkość, z jaką Humanoid wzrasta.
Wystrzela, gdy umiera Humanoid.
Występuje, gdy Humanoid wchodzi lub wychodzi z FallingDown``Enum.HumanoidStateType.
Występuje, gdy Humanoid wchodzi lub wychodzi z Freefall``Enum.HumanoidStateType.
Występuje, gdy Humanoid wchodzi lub wychodzi z GettingUp lub Enum.HumanoidStateType.
Wyst?puje, gdy Humanoid.Health zmienia się (lub gdy Humanoid.MaxHealth jest ustawiać).
Występuje, gdy Humanoid wchodzi i wychodzi z Jumping``Enum.HumanoidStateType .
Wystrzela, gdy Humanoid kończy chód do celu zadeklarowanego przez Humanoid:MoveTo().
Wystąpi, gdy Humanoid wchodzi lub wychodzi z PlatformStanding``Enum.HumanoidStateType .
Występuje, gdy Humanoid wchodzi lub wychodzi z Ragdoll``Enum.HumanoidStateType.
Wyst?puje, gdy prędko? ? ? Humanoid ? ? ?
Wystrzelony, gdy Humanoid leży w Seat lub VehicleSeat lub wstaje.
Wyst?puje, gdy stanie się stan Class.Humanoid .
Występuje po wzywaniu Humanoid:SetStateEnabled() na Humanoid .
Wyst?puje, gdy Humanoid wchodzi lub wychodzi z StrafingNoPhysics``Enum.HumanoidStateType.
Występuje, gdy jeden z limbów humanoidu skontaktuje się z innym BasePart .
Właściwości
AutoJumpEnabled
Automatyczny skok włączony sprawia, czy Humanoid będzie próbował automatycznie skakać nad przeszkodą, którą przechodzi.
Obecnie właściwość ta działa tylko wtedy, gdy spełnione zostaną następujące warunki:
- Model postaci Player.Character znajduje się w Player .
- Gracz w sprawie używa sterowania elementy sterujące.
Gdy postać gracza się pojawia, wartość właściwości pasuje do właściwości gracza Class.Player.AutoJumpEnabled - która z kolei pasuje do właściwości Class.StarterPlayer.AutoJumpEnabled.
Przykłady kodu
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 rzeczywiście Humanoid będzie automatycznie kręcić się w kierunku, w którym się porusza. Gdy ustawiony na prawdę, model postaci będzie stopniowo obrócony w kierunku ich kierunku ruchu, gdy Humanoid porusza się. Gdy ustawiony na fałszywy, model postaci będzie pozostawiony w swojej obecnej rotacji, chyba że zostanie nałożona siła obrot
Jeśli model postaci stanie się postacią gracza, to zachowanie rotacji Humanoid'a jest wpływane przez właściwość Ustawienia Rozgrywki's RotateType.
Gdy właściwość AutoRotate jest ustawiona na prawdę, właściwość RotateType ma następujące efekty na obrót kształtu ludzkiego:
<tbody><tr><td>Ustalenie położenia</td><td /><td /></tr><tr><td>Kamera</td><td>Zakrętka będzie się kręcić w kierunku kamery.</td><td>Gracz ma swoją kamerę skalowaną w trybie pierwszej osoby lub jest w trybie zmiany trybu pracy.</td></tr></tbody>
TypRotacji | Zachowanie | Kontekst |
---|
Przykłady kodu
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 skalowania dziecka, w tym BodyDepthScale, BodyHeightScale, BodyProportionScale, 2>BodyTypeScale2>, 5>HeadScale5>. Zmienie wartości dowolnej z tych części i akcesoriów c
BreakJointsOnDeath
Określa, czy połączenia ludzkiego pękają, gdy w stanie Enum.HumanoidStateType.Dead. Domyślnie ustawione na prawdę.
CameraOffset
Właściwość CameraOffset określa odległość od pozycji przedmiotu kamery, gdy jej Camera.CameraSubject ustawiony jest na ten Humanoid.
Odległość jest stosowana w przestrzeni obiektu w odniesieniu do orientacji Humanoid'sVector3 . Na przykład, odległość Datatype.Vector3 wartości 0>(0, 10, 0)0> odległości przesuwa kamerę gracza o 10 stopni powyżej humanoidu.
Przykłady kodu
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 dystansu imienia i zdrowia Enum.HumanoidDisplayDistanceTypea. Ta właściwość jest ustawiona za pomocą Enum.HumanoidDisplayDistanceType zapisu z trzema dostępnymi wartościami, każda z nich ma własny zestaw zasad:
- Gdy ustawiony na Viewer, humanoid widzi nazwę/zdrowie innych ludzi w zasięgu jego własnej NameDisplayDistance i HealthDisplayDistance .
- Gdy ustawiony na Subject, humanoid wziął pełną kontrolę nad swoim własnym imieniem i zdrowotnym wyświetleniem poprzez swoje NameDisplayDistance i HealthDisplayDistance wartości.
- Gdy ustawiony na None , nazwa i zdrowotna bara znika pod wszystkimi warunkami.
Zobacz Nazwa postaci/dyskretny wygląd zdrowia dla kompleksowej instrukcji kontroli wyglądu imion postaci i zdrowia balkonów.
Przykłady kodu
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 wygląd imienia ludzkiego, gdy jest widoczny. Domyślnie nowy ludowy będzie miał wartość pustej ciąg. Jeśli DisplayName jest zmienną pustą, wygląd imienia ludzkiego będzie domyślny dla właściwości imienia ludowego rodzica.
Ładowanie postaci gracza
Gdy gracze ładową swojego postaci, automatycznie lub poprzez użycie LoadCharacter(), wbudowany w silnikiem Humanoid, który jest stworzony przez silnik, będzie miał ustawioną właściwość DisplayName na właściwość DisplayName gracza.
StarterCharacter i StarterHumanoid
Gdy Humanoid o nazwie StarterHumanoid jest związany z StarterPlayer, lub
EvaluateStateMachine
FloorMaterial
Jest to własność czytelna, która opisuje Enum.Material , który jest obecnie na Humanoid . Działa zarówno z normalnymi Parts i 2>Class.Terrain2> woxelami.
Poniższy kod pokazuje, jak słuchać, gdy ta właściwość zmienia się za pomocą Object:GetPropertyChangedSignal() . Gdy materiał, na którym stoi człowiek, się zmienia, to wydrukuje komunikat informujący o nowym materiale, na którym stoi.
local Humanoid = route.to.humanoid
Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
print("New value for FloorMaterial: " .. tostring(Humanoid.FloorMaterial))
end)
Ograniczenia
- Gdy Humanoid nie stoi na podłodze, wartość tego właściwości ustawiona zostanie na Powietrze.
- To się zdarza, ponieważ właściwości enum nie mogą mieć pustej wartości.
- Może to powodować pewne zamieszanie, jeśli część ma ustawiony materiał na powietrze, choć w praktyce części nie powinny używać tego materiału w pierwszej miejsce.
- Model postaci Humanoid musi być w stanie uderzyć z podłogą, lub nie zostanie wykryty.
- Nie możesz testować, 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 zasięgu pomiędzy 0 i MaxHealth. Jeśli humanoid jest martwy, ta właściwość jest nieustannie ustawiona na 0.
Uwaga, że funkcja TakeDamage() może być używana do odejmowania od Health zamiast ustawienia właściwości bezpośrednio.
Regeneracja Zdrowia
Domyślnie, skrypty rehabilitacji zdrowia są automatycznie wstawione do humanoid. To powoduje, że niew死liwi postacie graczy regenerują 1% z MaxHealth każdej sekundy. Aby wyłączyć ten efekt, dodaj pusty Script o nazwie Zdrowie do 1>
Wyświetlanie zdrowia
Gdy Health jest mniejszy niż MaxHealth, pojawia się w przeciwdziałaniu zdrowotnym. Zachowanie wyświetlania zdrowotnej barby jest zależne od HealthDisplayDistance i 1> Class.Humanoid.
Zobacz Nazwa postaci/dyskretny wygląd zdrowia dla kompleksowej instrukcji kontroli wyglądu imion postaci i zdrowia balkonów.
Śmierć
Gdy wartość zdrowia znakomicie Humanoid osiągnie 0, przejście Enum.HumanoidStateType.Dead do stanu Health nastąpi automatycznie. W tym stanie 2>Class.Humanoid.Health|Health2> jest zablokowany do
HealthDisplayDistance
Ten parametr jest używany wraz z właściwością DisplayDistanceType, aby kontrolować odległość, z której można zobaczyć zdrowotną barę kształtu ludzkiego.
Zobacz Nazwa postaci/dyskretny wygląd zdrowia dla kompleksowej instrukcji kontroli wyglądu imion postaci i zdrowia balkonów.
HealthDisplayType
Właściwość kontroluje, czy właściwość zdrowia może być wyświetlona. Domyślnie wartość ta jest ustawiona na Class.Humanoid.Health
Uwaga: Ta właściwość działa niezależnie od właściwości HealthDisplayDistance , która jest odpowiedzialna za sprawienie, że zdrowotna barwa zaniknie w pewnych odległościach. Jeśli Humanoid.HealthDisplayType|HealthDisplayType
Zobacz Nazwa postaci/dyskretny wygląd zdrowia dla kompleksowej instrukcji kontroli wyglądu imion postaci i zdrowia balkonów.
HipHeight
Określa odległość (w studs) od ziemi, RootPart powinno być, gdy humanoid stoi. RigType wpływa na sposób zachowania tej właściwości.
Dla rakiet R15 zapisane jest ustawione odpowiednie podstawowe wysokość, aby zagwarantować wysokość RootPart . Wysokość nóg nie jest używana. Wysokość całego człowieka można opisać za pomocą następującej formuły:
Height = (0.5 * RootPart.Size.Y) + HipHeight
Dla rygów R6, HipHeight zamiast opisywać relatywne odchylenie. Wysokość całego ludoidu można opisać za pomocą następującej formuły:
Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
Jump
Jeśli true , Humanoid lub Humanoid.JumpPower jest równy wartości 2>Class.Humanoid.UseJumpPower2> lub wysokości 5>Class.Humanoid.JumpHeight5>, zależnie od wartości 8>Class.Humanoid.UseJumpPower8> .
JumpHeight
Dostarcza kontrolę nad wysokością skoków Humanoid, w studs. Wartość początkowa tego właściwości jest ustalana przez wartość StarterPlayer.CharacterJumpHeight, która domyślnie wynosi 7,2.
Chociaż ustawienie tego właściwości na 0 skutecznie zapobiec ludowaniu, zaleca się wyłączyć ludowanie poprzez wyłączenie stanu Enum.HumanoidStateType.Jumping .
Właściwość ta jest widoczna tylko w oknie Proprietści, jeśli Humanoid.UseJumpPower ustawiony jest na false, ponieważ nie miałoby to sensu w przeciwnym razie (zamiast tego używa się 2>Class.Humanoid.JumpPower2> .
JumpPower
Określa, ile siły góry jest zastosowana do Humanoid podczas skoku. Wartość początkowa tego właściwości jest ustalana przez wartość StarterPlayer.CharacterJumpPower , która jest domyślnie ustawiona na 50 i jest ograniczona między 0 a 1000. Uw
Chociaż ustawienie tego właściwości na 0 skutecznie zapobiec ludowaniu, zaleca się wyłączyć ludowanie poprzez wyłączenie stanu Enum.HumanoidStateType.Jumping .
Właściwość ta jest widoczna tylko w oknie Proprietści, jeśli Humanoid.UseJumpPower ustawiony jest na Prawdziwy, ponieważ w przeciwnym razie nie byłaby odpowiednia (zamiast tego używana jest 2>Class.Humanoid.JumpHeight2>).
MaxHealth
Maksymalna wartość Health ludoidu.
Wartość tego właściwości jest używana obok właściwości Health , aby skalować domyślną barwę zdrowia. Gdy Health osiągnie, jego bar zdrowia może nie być wyświetlany, w zależności od jego właściwości
MaxSlopeAngle
Ten parametr określa maksymalny kąt nachylenia, który może zacząć wspinaczkasię po niedźwiedzia. Jeśli kąt nachylenia jest większy niż MaxSlopeAngle, po niedźwiedzia zaczną się po niedźwiedzia.
Gdy postać się pojawia, ta właściwość jest ustawiana zgodnie z wartością StarterPlayer.CharacterMaxSlopeAngle.
Wartość tego właściwości jest ograniczona do wartości pomiędzy 0 ° i 89 °. Domyślnie jest to 89 °, więc humanoidy mogą w górę prawie każdego kosza, którym domyślnie chcą.
Przykłady kodu
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
Przenieś kierunek jest czytelną własnością, która opisuje kierunek, w którym Humanoid idzie, jako wartość wektora lub zero długości wektora. Kierunek jest opisany w przestrzeni świata.
Ponieważ ta właściwość jest tylko czytelna, nie może być ustawiona przez Script lub LocalScript.
Przykłady kodu
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ść NameDisplayDistance jest liczbą używaną wraz z właściwością Humanoid.DisplayDistanceType, aby kontrolować dystans, z którego można zobaczyć imię ludzkiego.
Zobacz Nazwa postaci/dyskretny wygląd zdrowia dla kompleksowej instrukcji kontroli wyglądu imion postaci i zdrowia balkonów.
NameOcclusion
Kontroluje, czy można zobaczyć imię i zdrowotną barwę kształtu ludzkiego za ścianami lub innymi obiektami. Ta właściwość jest wartością Enum.NameOcclusion i można ją skonfigurować, aby całkowicie zablokować wszystkie imiona, imiona wrogów lub wyłączyć ocłączenie.
W przypadkach, gdy LocalPlayer nie ma związanego z nim Humanoid, ta właściwość zastosowuje się zamiast tego do przedmiotu Humanoid.
Zobacz Nazwa postaci/dyskretny wygląd zdrowia dla kompleksowej instrukcji kontroli wyglądu imion postaci i zdrowia balkonów.
Przykłady kodu
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, Humanoid jest w stanie, w którym jest bez wolnego upadku i nie może się poruszać. Ten stan zachowuje się podobnie do siedzenia, z wyjątkiem tego, że skaczanie nie uwalnia humanoid z stanu.
RequiresNeck
Pozwala rozwójcom wyłączyć zachowanie, w którym gracz Character|character umiera, jeśli Neck Motor6D jest usunięty lub odłączony nawet przez chwilę. Ta właściwość domyślnie ustawiona jest na prawdę.
RigType
RigType opisuje, czy Humanoid korzysta z wcześniejszego wersjera R6, czy wersji R15.
R6 rygiel używa 6 widocznych Parts podczas gdy R15 rygiel używa 15 widocznych Parts . R15 rygiele mają więcej łączeń niż rygiele R6, czyniąc je o wiele bardziej elastycznymi, gdy są animowane.
Uwaga, jeśli ta właściwość jest ustawiona nieprawidłowo, to Humanoid nie będzie działać poprawnie. Na przykład, jeśli R15 ludzkiego kształtu ustawiony jest na R6, Class.
RootPart
Odnośnik do obiektu HumanoidRootPart ludoidu, części sterującej korzeniem, która kontroluje ruch ludoidu poprzez świat 3D. Ta część jest zwykle niewidoczna.
Uwaga, że w przypadku postaci graczy RootPart jest taki sam jak Model.PrimaryPart modelu.
SeatPart
SeatPart to odniesienie do siedzenia, które ma aktualnie Humanoid, jeśli jest jakiekolwiek. Wartość tej właściwości może być Seat lub VehicleSeat. Będzie to 1>nil1>, jeśli Humanoid nie siedzi na żadnym siedzeniu.
Notatka:
- Dla prawdziwego bułki opisującej czy Humanoid jest obecnie siedzący czy nie, zobacz Humanoid.Sit
Sit
Właściwość sit może być ustawiona na true, aby sprawdzić, czy Humanoid jest obecnie siedzący. Humanoids może być zmuszony do stanu siedzenia poprzez ustawienie wartości tej właściwości na
Notatka:
- Class.Humanoid.SeatPart1> właściwość można uzyskać używając właściwości VehicleSeat lub Humanoid
- Możliwe jest wykrycie, gdy Humanoid siedzi poprzez połączenie 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 zgłoszony.
Ta właściwość opisuje pozycję 3D w przestrzeni, w której Player sterujący tym Humanoid ostatnio kliknął przy użyciu Tool z wyposażonym w niego.
Ten parametr jest głównie używany przez klasyczne narzędzia, aby określić, co kieruje się w kierunku człowieka, gdy aktywują narzędzie. Jeśli dasz NPC klasyczny rockietLauncher, ustaw jego TargetPoint i następnie wezwij funkcję Tool:Activate() narzędzia, aby spalić rockietę na punkt docelowy.
UseJumpPower
Gdy postać się pojawia, ta właściwość jest ustawiana 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, że skoki humanoidy do tej wysokości. Z tym ustawieniem na fałszywy, wartość Humanoid.JumpPower jest używana do zastosowania siły w górę.
WalkSpeed
Ta właściwość opisuje, jak szybko Humanoid jest w stanie chód, w studs pro sek. Domyślnie ma wartość StarterPlayer.CharacterWalkSpeed (16), co oznacza, że każdy postać gracza może poruszać się 16 studs w każdym kierunku każdej sekundy.
Notatki
- Kiedy kontrolowany na urządzeniu mobilnym lub gamepadzie, kształt może chodzić wolniej niż jego WalkSpeed jeśli kształtujący joystick jest poruszony tylko stopniowo od centrum.
- Możesz zamrozić humanoidę, ustawiając WalkSpeed na 0; to zapobiega kontrolerowi przesuwania go poprzez domyślne mechanizmy ruchu.
- Domyślny skrypt animacji skaluje animacje ruchu latającego człowieka w zależności od tego, jak szybko się porusza w stosunku do domyślnej prędkości 16 stud/sek.
WalkToPart
WalkToPart to odniesienie do części, do której próbuje dotrzeć człowiek. Ta właściwość jest ustawiana zwykle, gdy część jest przekazana jako drugi argument funkcji Humanoid:MoveTo() człowiek.
Gdy WalkToPart jest ustawiony, a humanoid aktywnie próbuje dotrzeć do części, będzie nadal aktualizować swój cel Vector3, aby być pozycją części, plus the Humanoid.WalkToPoint przetłumaczony w przestrzeni obiektu w odniesieniu do rotacji części.
Można to opisać w Lua jako:
goal = humanoid.WalkToPart.CFrame:pointToObjectSpace(humanoid.WalkToPoint)
Ograniczenia
- Ustawienie wartości WalkToPart nie jest wystarczające, aby wywołać humanoidowy start po części.
- Pomocniczka jest proszona o uruchomienie próby dotarcia do celu, gdy wartość WalkToPoint zostanie zmieniona.
- Może to być zmienione w przyszłości.
- Stan dotarcia do celu ludoidu przestanie być poprawny po 8 sekund, jeśli nie osiągnie celu.
- Zrobiłem to, aby NPC nie zaciągnęli się, czekając na Humanoid.MoveToFinished, aby wystrzelić.
- Jeśli nie chcesz, aby się to zdarzyło, powinieneś wielokrotnie wzywać MoveTo, aby reset czasu trwania przesunięcia się nie zachodził.
WalkToPoint
WalkToPoint opisuje 3D pozycję w przestrzeni, do której dąży człowiek, po zostanie poproszony o to przez funkcję Humanoid:MoveTo() człowiek.
Jeśli Humanoid.WalkToPart ludoidu jest ustawiać, cel jest ustawiony poprzez przesunięcie WalkToPoint w stosunku do pozycji i obrotu części. Jeśli WalkToPart nie jest ustawiać, to ludoid będzie próbował bezpośrednio dotrzeć do pozycji 3D określonej przez WalkToPoint.
Ograniczenia
- Wartość WalkToPoint musi zostać zmieniona na inną wartość, aby humanoid rozpoczął chodzenie w kierunku niego.
- Jeśli chcesz stworzyć ludzką spacer do 0,0,0 , powinieneś użyć funkcji Ruchu ludzkiego.
- Może to być zmienione w przyszłości.
- Stan dotarcia do celu ludoidu przestanie być poprawny po 8 sekund, jeśli nie osiągnie celu.
- Zrobiłem to, aby NPC nie zaciągnęli się, czekając na Humanoid.MoveToFinished, aby wystrzelić.
- Jeśli nie chcesz, aby się to zdarzyło, powinieneś wielokrotnie wzywać MoveTo, aby reset czasu trwania przesunięcia się nie zachodził.
Przykłady kodu
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
Ten metod przywiązuje określony Accessory do rodzica kształtu ludzkiego.
Kiedy ten metod jest wyzwany, zostaje przyczepiony do znaku Accessory do znaku
Jeśli wymagany Attachment nie może zostać znaleziony, to Accessory pozostanie związany z rodzicem kształtu człowieka, ale zostanie odłączony.
Zwykle wiązania akcesoria są tworzone na serwerze, ale można je utworzyć na klientach pod pewnymi warunkami. W tych sytuacjach wiązania stron klienta do AddAccessory() mogą nie zawsze produkować pożądanego zachowania i można użyć Class.Humanoid:BuildRig
Parametry
Class.Accessory do załączenia.
Zwroty
Przykłady kodu
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
Ten metodzie ma Motor6D łączące drzewa dla Humanoid . Motor6D łączące drzewa są wymagane do odtwarzania 1> Class.Animation|Animations1> .
Począwszy od RootPart ludzkiego, ten metodę zbiera wszystkie Attachments związane z obecną częścią, które koń
Humanoid:BuildRigFromAttachments() skala również postać i ustawia kolory ciała.
Zwroty
Przykłady kodu
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)
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
Funkcja ta powoduje, że Humanoid wpisuje się do danej Enum.HumanoidStateType, opisując działalność, którą Humanoid wykonuje.
Proszę przeglądać stronę Enum.HumanoidStateType po więcej informacji na temat poszczególnych stanów, ponieważ niektóre mają nieintuicyjne nazwy. Na przykład, Enum.HumanoidStateType.Running opisuje stan, w którym legi humanoid'a są na ziemi, w tym gdy są nieaktywne.
Ze względu na domyślną zachowanie Humanoid niektóre stanów zostaną automatycznie zmienione po ustawieniu. 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 humanoidu zostanie automatycznie ustawiony na Enum.HumanoidStateType.Running.
Zobacz również Humanoid:SetStateEnabled() aby włączyć lub wyłączyć określony stan, a Humanoid:GetState() aby uzyskać obecny stan humanoidu.
Parametry
Class.Humanoid Class.Humanoid jest w stanie wykonania.
Zwroty
Przykłady kodu
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 funkcja sprawia, że Humanoid założy dany Tool.
Poniższy przykład spowodował, że Player założy narzędzie w Workspace z nazwą Narzędzie.
local Players = game:GetService("Players")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 funkcja zostanie wywołana, humanoid automatycznie zdjąłby każde Tools , które ma obecnie założone
Chociaż będą one wyposażone, Tools dla których Tool.RequiresHandle jest prawdziwy nie będą działać, jeśli nie mają uchwytu, niezależnie czy ta funkcja jest używana do ich wyposażenia czy nie
Zobacz również:
- Aby zdjąć narzędzia, użyj Humanoid:UnequipTools()
Parametry
Zwroty
GetAccessories
Funkcja ta zwraca Accessory obiektów, które obecnie nosi rodzic humanoidu. Wszystkie takie Accessory obiekty zostaną uwzględnione, niezależnie od tego, czy są one załączone czy nie.
Jeśli Humanoid nie ma obiektów Accessory, pusty zapis zostanie zwrócony.
Zobacz również Humanoid:AddAccessory(), aby załączyć Accessory z rodzicem kształtu.
Zwroty
Przykłady kodu
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
Funkcja ta zwraca kopię zapisu HumanoidDescription zlokalizowanego w pamięci Humanoid:ApplyDescription(), który opisuje jego obecny wygląd. Można go używać do szybkiego określenia wyglądu znaczącego znaczenia dla znaku znaku Class.Humanoid:ApplyDescription i przypisania jego wyglądu innym znakom używając funkcji 2>Class.Humanoid:ApplyDescription2>.
Zobacz również
- Players:GetHumanoidDescriptionFromUserId() , który zwraca HumanoidDescription opisujący awatar dla użytkownika.
- Players:GetHumanoidDescriptionFromOutfitId() , który zwraca HumanoidDescription , których parametry są inicjalizowane, aby pasowały z tymi z przesłanego zasobu w trybie serwera.
- Player:LoadCharacterWithHumanoidDescription() , który generuje gracza z wyglądem z przepustki HumanoidDescription .
Zwroty
GetBodyPartR15
Funkcja ta zwraca to, co Enum.BodyPartR15 jest, lub Part jest, lub Enum.BodyPartR15.Unknown jeśli część nie jest częścią ciała R15. Ta funkcja umożliwia rozwój programistów, aby odzyskać części ciała gracza bez względu na to, jakie są nazwy części ciała rzeczywistych, zamiast zwracając
Można go używać wraz z Humanoid:ReplaceBodyPartR15(). Na przykład, jeśli część ciała gracza dotyka czegoś, funkcja ta zwraca instancję części. Rozwójcy mogą wtedy sprawdzić, która część ciała była, na przykład, jak głowa lub ramię. Następnie w zależności od tego, która część była, rozwójcy mogą wy
Funkcja ta może być przydatna w grach, w których ważne jest to, gdzie lokalizacja trafienia. Na przykład można ją użyć, aby określić, czy gracz został ranny w końcu i spowolnić go w zależności od rany.
Parametry
Określona część jest sprawdzana, aby ujrzeć, czy jest to część ciała R15.
Zwroty
Typ części R15 określonej części lub nieznany, jeśli część nie jest częścią ciała.
GetLimb
Funkcja ta zwraca Enum.Limb funkcję, która jest związana z Part . Działa dla obu r15 i r6 rygów, na przykład:
-- Dla R15print(humanoid:GetLimb(character.LeftUpperLeg)) -- Lista.Limb.LeftLegprint(humanoid:GetLimb(character.LeftLowerLeg)) -- Lista.Limb.LeftLegprint(humanoid:GetLimb(character.LeftFoot)) -- Lista.Limb.LeftLeg-- Dla R6print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg
Uwaga, że Humanoid:GetLimb() będzie rzucać błędem, jeśli rodzic części nie jest ustawiony na rodzica humanoidu.
Parametry
Zwroty
Przykłady kodu
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
Funkcja ta powoduje, że człowiekoida obecnie wykonuje Enum.HumanoidStateType, opisując działanie, które Humanoid wykonuje obecnie, takie jak skaczanie lub pływanie.
Zobacz również Humanoid:SetStateEnabled() aby włączyć lub wyłączyć określony stan, a Humanoid:ChangeState() aby zmienić obecny stan humanoidu.
Zwroty
Obecny Enum.HumanoidStateType``Class.Humanoid .
Przykłady kodu
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
Funkcja GetStateEnabled zwraca, czy Enum.HumanoidStateType jest włączony dla Humanoid .
Stanoidy opisują aktywność, którą wykonuje człowiek.
Gdy szczególny Enum.HumanoidStateType jest wyłączony, humanoid nigdy nie może wejść w ten stan. To prawda, niezależnie czy próba zmiany stanu zostanie wykonana przy użyciu Humanoid:ChangeState() lub wewnętrznego kodu humanoid Roblox.
Zobacz również:
- Dla wydarzenia, które się włącza lub włącza się, gdy tryb ludzkiego jest włączony lub wyłączony, patrz Humanoid.StateEnabledChanged
- Aby włączyć lub wyłączyć stan Humanoid użyj Humanoid:SetStateEnabled()
Parametry
Dany Enum.HumanoidStateType .
Zwroty
Czy dany Enum.HumanoidStateType jest włączony.
Przykłady kodu
local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false
Move
Funkcja ta powoduje, że Humanoid chodzi w podanym kierunku Vector3.
Domyślnie kierunek jest w warunkiświata, ale jeśli parametr relativeToCamera jest true, kierunek jest w kierunku CFrame Class.Workspace.CurrentCamera|CurrentCamera . Ponieważ negatywny kierun
humanoid:Move(Vector3.new(0, 0, -1), true)
Gdy ta funkcja jest wzywana, Humanoid będzie się poruszać, aż funkcja zostanie ponownie wywołana. Jeśli jednak używane są domyślne skrypty kontrolne, funkcja zostanie ponownie napisana, gdy zostanie wzywana na graczu Characters . Można tego unik
Funkcja ta może być wywołana na serwerze, ale powinna być wykonana tylko wtedy, gdy serwer ma własność sieci z zestawienia człowieka.
Zobacz również Humanoid:MoveTo() , które sprawia, że Humanoid chodzi do punktu, i Player:Move() , co skutecznie wzywa tę funkcję.
Parametry
Kierunek do chodzenia w.
Ustawić na true jeśli parametr moveDirection powinien być używany w odniesieniu do CurrentCamera.
Zwroty
Przykłady kodu
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
Funkcja ta powoduje, że Humanoid próbuje przejść do danej lokalizacji ustawiając właściwości Humanoid.WalkToPoint i Humanoid.WalkToPart.
Parametry lokalizacja i część odpowiadają tym, co Humanoid.WalkToPoint i 1> Class.Humanoid.WalkToPart1> zostaną ustawione.
Jeśli parametr części jest określony, to Humanoid będzie nadal próbował przejść do punktu. Jeśli część się porusza, to punkt Humanoid będzie się poruszać, aby być w tej samej pozycji
Stan dotrzeć do celu ludoidu będzie skończony po 8 sekundach, jeśli nie osiągnie swojego celu. To jest zrobione, aby NPC nie zaciągnęli się, czekając na Humanoid.MoveToFinished do uruchomienia. Jeśli nie chcesz, aby to się stało, powinieneś regularnie wzywać MoveTo, aby czas odliczania się resetował.
MoveTo() kończy się, jeśli spełnione zostaną następujące warunki:
Postać przybywa do celu.
Znak się zaciągnie, a ósmy sekundowy licznik zakończy się.
Wartość Humanoid.WalkToPoint lub Humanoid.WalkToPart zmienia się.
Skrypt wzywa Humanoid:Move() z nowym parametrem moveDirection.
Parametry
Pozycja do ustawienia Humanoid.WalkToPoint na.
The BasePart to set Humanoid.WalkToPart to.
Zwroty
Przykłady kodu
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
Funkcja ta usuwa wszystkie Accessory obiekty noszone przez rodzica humanoidu. Dla gracza Characters , usunie to wszystkie kapelusze i inne akcesoria.
Funkcja ta usuwa obiekt Accessory przez wezwanie Instance:Destroy() na nich, co oznacza, że Parent akcesoriów jest ustawiony na 2>nil2> i zablokowany.
Zobacz również Humanoid:AddAccessory() , aby załączyć Accessory i Humanoid:GetAccessories() , aby uzyskać wszystkie obiekty 1> Class.Accessory1> należące do 4> Class.Humanoid4> .
Zwroty
Przykłady kodu
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
Dynamicznie zastępuje część kończyny R15/Rthro w człowiekujaku przez inną część. Część jest skalowana automatycznie jako normalna.
Funkcja ta jest przydatna do modyfikacji postaci podczas gry lub budowania postaci z bazy rury. Powiązana funkcja GetBodyPartR15 może przydać się, gdy używasz tej funkcji.
Nazwa części, która przeszła, powinna zgadzać się z nazwą BodyPartR15 Enum.
Parametry
Część ciała do zastąpienia. Enum.BodyPartR15.Unknown nie będzie działać.
Zwroty
SetStateEnabled
Funkcja ta ustawia, czy dany Enum.HumanoidStateType jest włączony dla Humanoid. Gdy określony Enum.HumanoidStateType jest wyłączony, 1> Class.Humanoid1>
Uwaga, że używanie SetStateEnabled() na serwerze nie replikuje zmiany na klienta, ani vice versa.
Parametry
Menu.HumanoidStateType do włączenia lub wyłączenia.
true jeśli state ma być włączony, false jeśli 0> state0> ma być wyłączony.
Zwroty
Przykłady kodu
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
Funkcja ta zmniejsza Humanoid.Health Class.Humanoid przez podany Humanoid
Funkcja ta akceptuje negatywne wartości dla parametru ilość. Będzie to zwiększać Humanoid.Health humanoidu. Ale będzie to miało tylko wpływ, jeśli nie ma ForceField.
Jak ForceBlocks chroni przed TakeDamage
A Humanoid jest chroniony przez ForceField, jeśli ForceField spełnia jeden z następujących kryteriów:
- Class.ForceField dzieli się tą samą Instance.Parent co Humanoid
- Class.ForceField jest związany z Humanoid.RootPart Class.Humanoid
- Class.ForceField jest związany z przodkiem Class.Humanoid innego niż Humanoid
Aby zadać obrażenia Humanoid bez względu na obecność ForceFields , ustaw Humanoid.Health bezpośrednio.
Dla więcej informacji o tym, jak ForceFields chroni Humanoids zobacz stronę ForceField
Parametry
obrażenia, lub kwota do odliczenia z Class.Humanoid.Health .
Zwroty
Przykłady kodu
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
Funkcja ta zdjąłaby dowolne Tool obecnie noszone przez Humanoid
Niezałożony Tool będzie związany z Backpack związanym z Player związanym z 1> Class.Humanoid1> .
Jeśli nie jest założone Tool, ta funkcja nie zrobi nic.
Chociaż Tools może być założony przez NPC (nichta gracza), ta funkcja działa tylko na Humanoids z odpowiednim Player . To jest, ponieważ obiekt 2>Class.Backpack2> wymaga, aby założyć niezałożony 5>
Zobacz również:
- Aby zamiast tego użyć Tool , użyj Humanoid:EquipTool()
Zwroty
Przykłady kodu
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
Funkcja ta wytwarza charakter, który pasuje do tego, co przeprowadzono HumanoidDescription . Kopia przeprowadzonego HumanoidDescription jest zapisana jako HumanoidDescription dla 1> Class.Humanoid1> .
Funkcja ta jest optymalizowana poprzez założenie, że tylko ta funkcja jest używana do zmiany wyglądu postaci, a żadne zmiany nie są dokonywane poprzez inne środki między wezwania. Jeśli zmiany są dokonywane w postaci między wezwania
Zobacz również
- Humanoid:GetAppliedDescription() , który zwraca HumanoidDescription obecnie stosowany do ludoidu.
- Players:GetHumanoidDescriptionFromUserId() , który zwraca HumanoidDescription opisujący awatar dla użytkownika.
- Players:GetHumanoidDescriptionFromOutfitId() , który zwraca HumanoidDescription , których parametry są inicjalizowane, aby pasowały z tymi z przesłanego zasobu w trybie serwera.
- Player:LoadCharacterWithHumanoidDescription() , który generuje gracza z wyglądem z przepustki HumanoidDescription .
Parametry
Instancja HumanoidDescription, do której chcesz ustawić postać.
Zwroty
ApplyDescriptionReset
Funkcja ta zwraca charakterowi wygląd zgodny z tym, co było w HumanoidDescription , nawet po zmianach zewnętrznych. Kopia przesłanego HumanoidDescription jest zapisana jako HumanoidDescription dla 2>Class.Humanoid2> .
Ta funkcja zawsze zapewni, że charakter odzwierciedla przeprowadzony w
Parametry
Instancja HumanoidDescription, do której chcesz ustawić postać.
Zwroty
Zdarzenia
Climbing
Wystrzela, gdy szybkość, z jaką Humanoid wzrasta.
Humanoids może wspiąć się po schody wykonane z Parts lub TrussParts.
Humanoids wzrastają w 70% ich Humanoid.WalkSpeed .
Ten ewent nie zawsze będzie się palił z prędkością 0, gdy Humanoid przestanie wspinac się.
Zobacz również:
- Dla pływania i biegania zobacz wydarzenia Humanoid.Swimming i Humanoid.Running
- Możesz również wykryć, gdy Humanoid wspinie się używając wydarzenia Humanoid.StateChanged
- Możesz wyłączyć wspinaczanie się przy użyciu 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
Ten wąż się łączy z Humanoid , który umożliwia ustawienie połączenia z Humanoid.Health . Może to być spowodowane przez odłączenie ich głowy od ich Humanoid.Torso lub bezpośrednie ustawienie właściwości zdrowia.
Ten wątek tylko się uruchomia, jeśli Humanoid jest potomstwem Workspace. Jeśli Dead2>Ennum.HumanoidStateType2> jest wyłączony, nie będzie on uruchomiony.
Przykłady kodu
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 występuje, gdy Humanoid wchodzi i wychodzi z FallingDown``Enum.HumanoidStateType .
Wystąpi GettingUp po wejściu w stan FallingDown po 3 sekundach po włączeniu stanu 1>FallingDown1>. Gdy to się stanie, wydarzy to wydarzenie z aktywną wartością 4>FallingDown4> i <
Parametry
FreeFalling
Ten wąż pojawia się, gdy Humanoid wchodzi lub wychodzi z Freefall``Enum.HumanoidStateType.
Parametr aktywny określa, czy Humanoid wchodzi lub wychodzi z stanu Freefall.
Chociaż stan Freefall ogólnie kończy się, gdy stan Humanoid dotrze do ziemi, ten zdarza się z uruchomieniem active równy 2>
Parametry
GettingUp
Ten ewent wyrzuca się, gdy Humanoid wchodzi lub wychodzi z stanu Enum.HumanoidStateType.GettingUp, stanu przejściowego, który jest aktywowany wkrótce po wejściu Humanoid do stanu
Gdy Humanoid próbuje się podnieść, ten wątek wydarzy się najpierw za pomocą parametru active z true przed chwilą po ponownym uruchomieniu z parametrem 2>active2> przed chwilą po ponownym uruchomieniu z parametrem 5>force5>.
Aby zmusić Humanoid do upadku, użyj funkcji Humanoid:ChangeState() z Enum.HumanoidStateType.FallingDown.
Parametry
HealthChanged
Ten wąż się urywuje, gdy Humanoid.Health zmienia się. Nie będzie on jednak działać, jeśli zdrowie wzrasta z wartości równej lub większej niż Humanoid.MaxHealth.
Gdy Humanoid.Health osiągnie zero, Humanoid umrze, a wydarzenie Humanoid.Died zostanie uruchomione. Ten wydarzenie będzie się łączyć z wartością zero.
Parametry
Nowa wartość Humanoid.Health .
Przykłady kodu
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)
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
Ten wąż pojawia się, gdy Humanoid wchodzi i wychodzi z Jumping``Enum.HumanoidStateType .
Gdy Humanoid skaczy, ten ewent zostaje uruchomiony z active parametrem true Class.Humanoid przed chwilą następ
Możesz wyłączyć skaczanie używając funkcji Humanoid:SetStateEnabled() .
Parametry
MoveToFinished
Ten wąż pojawia się, gdy Humanoid kończy chód do celu zadeklarowanego przez Humanoid.WalkToPoint i Humanoid.WalkToPart właściwości.
Właściwości Humanoid.WalkToPoint i Humanoid.WalkToPart można ustawić osobno lub używając funkcji Humanoid:MoveTo().
Jeśli Humanoid osiągnie swój cel w ciągu 8 sekund, ten wydarzenie zwróci osiągnął jako prawdziwy. Jeśli cel nie zostanie osiągnięty w ciągu 8 sekund, Humanoid przestanie chodzić i 2> osiągnięto</
Parametry
Przykłady kodu
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
Ten wąż pojawia się, gdy Humanoid wchodzi lub wychodzi z PlatformStanding``Enum.HumanoidStateType .
Podczas gdy Humanoid jest w stanie PlatformStanding, właściwość Humanoid.PlatformStand będzie 2> prawdziwa2>.
Podczas gdy Humanoid.PlatformStand ustawiony na Prawdziwy, Humanoid nie będzie w stanie się poruszać. For more information, please see the page for 2>Class.Humanoid.PlatformStand2>.
PlatformStand Enum.HumanoidStateType była powiązana z teraz wyłączoną częścią Platform. Mimo to nadal można ją używać przez rozwój.
Parametry
Ragdoll
Ten wąż pojawia się, gdy Humanoid wchodzi lub wychodzi z Ragdoll``Enum.HumanoidStateType .
Parametr active będzie miał wartość true lub false, aby określić wejście lub wyjście.
Użyj Humanoid:SetStateEnabled() , aby wyłączyć stan GettingUp, aby pozostać w stanie Ragdoll.
Zobacz również:
- Humanoid.FallingDown dla wydarzenia Humanoid połączonego ze stanem FallingDown, który zachowuje się podobnie do 0> Ragdoll0>
Parametry
Running
Ten wąż pojawia się, gdy prędkość, z jaką Humanoid dokonuje zmian, przekracza wartość progu.
Podczas uruchomienia Humanoids pokrywy, na ogół, ich Humanoid.WalkSpeed w studs pro sekundę.
Gdy Humanoid przestanie działać w ten incydent, będzie on działać z prędkością 0.
Zobacz również:
- Dla pływania i wspinaczki zobacz wydarzenia Humanoid.Swimming i Humanoid.Climbing
- Możesz również wykryć, kiedy Humanoid biega używając wydarzenia Humanoid.StateChanged
Parametry
Przykłady kodu
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
Ten ewent zostaje uruchomiony, gdy Humanoid albo Seat lub VehicleSeat leży w odległości.
Gdy postać kontaktuje się z siedzeniem, jest ona przywiązana do siedzenia i odtwarza animacja siedzenia. Dla więcej informacji na ten temat, zobacz stronę Seat.
- Jeśli znak jest siedzący, parametr active będzie prawdziwy i currentSeatPart będzie siedzeniem, w którym się obecnie siedzą.
- Jeśli znak znajduje się z góry siedzenia, parametr active będzie fałszywy i currentSeatPart będzie nil.
Zobacz również:
- Humanoid.Sit , co wskazuje, czy Humanoid jest obecnie siedzący
- Humanoid.SeatPart , co wskazuje na to, na którym siedzeniu jest obecnie Humanoid, jeśli jest jakakolwiek.
Parametry
Przykłady kodu
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
Ten wążek zdarzeń wygrywa się, gdy stan Humanoid jest zmieniony.
Ponieważ nie ma stanu "bezczynność" ludzkiego, powinieneś zamiast tego użyć wydarzenia Humanoid.Running lub słuchać części RootPart, aby pracować, gdy Velocity stoi nieruchomo.
Zobacz również
- Humanoid:GetState() i Humanoid:ChangeState() aby uzyskać i ustawić stan.
- Humanoid:SetStateEnabled() do włączenia i wyłączenia określonych stanów.
Parametry
wpisywaćpoprzedniego stanu ludzkiego.
wpisywaćaktualnego stanu człowiekoidu.
Przykłady kodu
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)
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 kwestii, wraz z bułką, która wskazuje, czy ten stan jest teraz włączony.
Zobacz również:
- Aby sprawdzić, czy dany stan jest obecnie włączony, użyj Humanoid:GetStateEnabled()
- Aby słuchać zmiany stanu Humanoid używaj Humanoid.StateChanged
Parametry
enum.HumanoidStateType dla którego nastąpił zmiany stanu włączonego.
Prawdziwy, jeśli teraz jest włączony stan.
Przykłady kodu
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
Ten wąż nie zostanie wywołany, gdy Humanoid będzie bombardował i nie należy go używać przez rozwój
Ten ewent jest uruchomiony, gdy Humanoid wchodzi lub wychodzi z StrafingNoPhysics``Enum.HumanoidStateType.
Gdy Humanoid wchodzi w stan StrafingNoPhysics, ten ewent zostanie uruchomiony z aktywnym parametrem prawdziwy . Wystąpi ewent ponownie z aktywnym parametrem 2>aktywny2>, r
Ten wątek jest powiązany z StrafingNoPhysics``Class.Humanoid stanem i nie wstrzyma się nie wstrzyma się pojawia się, gdy 2>Class.Humanoid2> porusza się perpendicularnie do kierunku, w którym się znajdu
Parametry
Swimming
Ten wąż pojawia się, gdy prędkość, w jakiej pływa Humanoid w wodach Terrain zmienia się.
Humanoids pływają na 87,5% swojego Humanoid.WalkSpeed .
Ten wątek nie zawsze będzie się wstrzymywał z prędkością 0, gdy Humanoid przestanie pływać.
Zobacz również:
- Do 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 używając funkcji Humanoid:SetStateEnabled()
Parametry
Touched
Ten wąż pojawia się, gdy jeden z limboidów kontaktuje się z innym BasePart. Class.BasePart , który dotyka limba, wraz z limbem samym w sobie, jest podawany.
Ten wąż nie zostanie wywołany, gdy Humanoid dostanie się w kontakt z samym sobą.
Alternatywy
Chociaż wydarzenie Humanoid.Touched jest użyteczne, powinieneś rozważyć, czy istnieją alternatywy, które lepiej odpowiadają Twoim potrzebom.
- W większości przypadków zaleca się połączenie BasePart.Touched wydarzenia dla BaseParts zainteresowania, zamiast tego, że wydarzenie Class.Human
- Gdy próbujesz pracować, gdy Humanoid wylądował na ziemi, wydarzenie Humanoid.StateChanged jest bardziej odpowiednie. Alternatywnie możesz sprawdzić Humanoid.FloorMaterial, aby zobaczyć, czy humanoid stoi na jakimkolwiek nie powietrznym materiale.
Notatki
- Połączenie się z tym wydarzeniem powoduje, że powstanie TouchTransmitter w każdym limb.
- Obecnie nie ma równivalentu BasePart.TouchEnded dla Humanoids .
Parametry
Przykłady kodu
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)