Humanoid

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Il Humanoid è un oggetto speciale che dà ai modelli la funzionalità di un personaggio. Granta al modello la capacità di cam

R6

  • Un rig di personaggio di base che utilizza 6 parti per i membri.
  • La parte Head deve essere allegata a una parte chiamata Torso, o l'Umanoide muore immediatamente.
  • Le parti del corpo vengono applicate utilizzando oggetti CharacterMesh .
  • Alcune proprietà, come Humanoid.LeftLeg e Humanoid.RightLeg, funzionano solo con R6.

R15

  • Più complesso di R6, ma anche molto più flessibile e robusto.
  • Utilizza 15 parti per i limiti.
  • La parte Head deve essere allegata a una parte chiamata UpperTorso o l'Umidade morirà immediatamente.
  • Le parti del corpo devono essere assemblate direttamente.
  • Può essere ridimensionato dinamicamente utilizzando oggetti speciali NumberValue parented all'interno dell'Humanoid.
  • Il Humanoid creerà automaticamente Vector3Value oggetti con il nome OriginalSize all'interno di ciascun limbo.
  • Se un NumberValue è parented all'interno del Humanoid e ha il nome di uno dei Seguendo, sarà utilizzato per controllare la funzione di escaling:
    • Dimensione del corpo
    • Altezza corporea
    • Dimensione del corpo
    • HeadScale

Campioni di codice

Walking Camera Bobble Effect

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

Sommario

Proprietà

Metodi

Eventi

Proprietà

AutoJumpEnabled

Lettura Parallela

AutoJumpEnabled imposta se o no il Humanoid cercherà di saltare automaticamente sopra un ostacolo che sta camminando verso.

Attualmente, questa proprietà funziona solo quando sono vere le seguenti condizioni:

  • Il modello di personaggio dell'Humanoid è il Player.Character di un Player .
  • Il giocatore in questione sta usando Controllitouch.

Quando il personaggio di un Giocatoreviene generato, il valore della Proprietàcorrisponde alla proprietà del GiocatorePlayer.AutoJumpEnabled - che a sua volta corrisponde alla proprietà StarterPlayer.AutoJumpEnabled.

Campioni di codice

Auto-Jump Toggle

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

AutoRotate

Lettura Parallela

La proprietà AutoRotate descrive se l'Humanoid ruoterà automaticamente verso l'avanti nella direzione in cui si muove. Quando impostato su true, il modello di personaggio si trasformerà gradualmente verso la loro direzione di movimento mentre l'Humanoid cammina intorno. Quando impostato su false, il modello di personaggio rimarrà fissato nella sua attuale rotazione, a meno che una forza di rotazione non sia applicata alla parte della radice dell'Humanoid.

Se il modello del personaggio è quello di un Giocatore, allora il comportamento della rotazione dell'umanoid è influenzato dalla ProprietàRotateType di UserGameSettings.

Quando la proprietà AutoRotate è impostata su true, la proprietà RotateType ha i seguenti effetti sulla rotazione dell'Humanoid:


<tbody>
<tr>
<td>Relazione di movimento</td>
<td />
<td />
</tr>
<tr>
<td>Relativo alla fotocamera</td>
<td>Il personaggio ruoterà verso l'avanti nella direzione della Telecamera.</td>
<td>Il giocatore ha la telecamera zoomata in prima persona, o è in modalità shift-lock.</td>
</tr>
</tbody>
Tipo di rotazioneComportamentoContesto

Campioni di codice

AutoRotate Button

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

AutomaticScalingEnabled

Lettura Parallela

Il Humanoid ha sei valori di escala per bambini tra cui BodyDepthScale , BodyHeightScale , BodyProportionScale , 2> BodyTypeScale2> , 5> HeadScale5> . La modifica di uno qualsiasi di questi

BreakJointsOnDeath

Lettura Parallela

Determina se le articolazioni dell'umanoid si rompono quando nell' stato Enum.HumanoidStateType.Dead . Le predefinite sono vere.

CameraOffset

Lettura Parallela

La proprietà CameraOffset specifica un offset alla posizione della Telecameraquando la sua Camera.CameraSubject è impostata su questa Humanoid .

L'Offset viene applicato nell'area dell'oggetto, rispetto all'orientamento del HumanoidRootPart dell'Humanoide. Ad esempio, un valore di Vector3 di (0, 10, 0) offre lo spostamento della fotocamera del Giocatoredi 10 studs sopra l'Humanoide.

Campioni di codice

Walking Camera Bobble Effect

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

La proprietà DisplayDistanceType controlla il comportamento della distanza del nome e della salute del personaggio. Questa proprietà viene impostata utilizzando il Enum.HumanoidDisplayDistanceType enum con tre valori disponibili, ognuno con un insieme di regole proprie:

  • Quando impostato su Viewer, l'umanoid vede il nome/la salute di altri umanoidi nella sua stessa NameDisplayDistance e HealthDisplayDistance .
  • Quando impostato su Subject, il manichino prende il controllo completo del proprio nome e della sua salute attraverso i suoi valori NameDisplayDistance e NameDisplayDistance.
  • Quando impostato su None, la barra del nome e della salute del humanoid non appare sotto nessuna condizione.

Vedi Nome del personaggio/Visualizzazione della salute per una guida in dettaglio sui controlli dell'aspetto dei nomi dei personaggi e delle barre di salute.

Campioni di codice

Displaying a Humanoid's Health and Name

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

DisplayName

Lettura Parallela

DisplayName è una proprietà che determina la visualizzazione del nome dell'uomoide quando è visibile. Per impostazione predefinita, un nuovo uomoide avrà il valore di una Stringavuota. Se DisplayName è una Stringavuota, la visualizzazione del nome dell'uomoide prenderà il valore della Proprietàdi un uomoide parent.

Caricamento personaggio giocatore

Quando i giocatori caricano il loro personaggio, automaticamente o attraverso l'uso di LoadCharacter(), l'Umanoide che viene creato dal motore avrà la sua proprietà DisplayName impostata sulla ProprietàDisplayName del Giocatore.

StarterCharacter e StarterHumanoid

Quando un Humanoid chiamato StarterHumanoid è parented a StarterPlayer ,

EvaluateStateMachine

Lettura Parallela

FloorMaterial

Sola Lettura
Non Replicato
Lettura Parallela

Questa è una proprietà di lettura che descrive il Enum.Material che si trova attualmente sopra. Funziona con sia i normali Humanoid e Parts voxel.

L'esempio di codice seguente mostra come ascoltare quando questa proprietà cambia usando Object:GetPropertyChangedSignal() . Quando il materiale su cui si trova l'umanoid è cambiato, stamperà un messaggio che indica il nuovo materiale su cui si trova.


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

Grotte

  • Quando il Humanoid non è in piedi su un pavimento, il valore di questa proprietà sarà impostato su Air.
    • Questo si verifica porque le proprietà di Enum non possono avere un valore vuoto.
    • Questo può causare alcune confusioni se un parte ha il suo materiale impostato su Air, anche se in pratica le parti non dovrebbero usare quel materiale in primo Posto.
  • Il modello di personaggio del Humanoid deve essere in grado di collisionare con il pavimento, altrimenti non sarà rilevato.

Health

Non Replicato
Lettura Parallela

Questa proprietà rappresenta la salute attuale del Humanoid. Il valore è limitato alla gamma tra 0 e MaxHealth. Se il humanoid è morto, questa proprietà viene impostata in modo continuativo su 0.

Nota che la funzione TakeDamage() può essere utilizzata per sottrarre da Health invece di impostare la proprietà direttamente.

Rigenerazione della salute

Per impostazione predefinita, uno script di rigenerazione della salute passiva viene inserito automaticamente in humanoid. Ciò causa che i personaggi non morti MaxHealth ogni secondo. Per disabilitare questo comportamento di rigenerazione, aggiungi un vuoto Script chiamato Salute a 1> Class.StarterCharacterScripts</

Visualizzazione della barra della salute

Quando Health è inferiore a MaxHealth, viene visualizzata una barra di salute nell'esperienza. Il comportamento della barra di salute è dipendente dal HealthDisplayDistance e 1> Class.Humanoid.HealthDisplayType|HealthDisplayType

Vedi Nome del personaggio/Visualizzazione della salute per una guida in dettaglio sui controlli dell'aspetto dei nomi dei personaggi e delle barre di salute.

Morte

Quando il valore della salute del personaggio raggiunge 0, il Humanoid passa automaticamente allo stato Enum.HumanoidStateType.Dead. In questo stato, Health è bloccato a 0; tuttavia, non ci sono errori o avvertimenti per impostare il 2>Class.H

HealthDisplayDistance

Lettura Parallela

Questa proprietà è un numero utilizzato in conjunction con la proprietà DisplayDistanceType per controllare la distanza dalla quale la barra della salute di un umano può essere vista.

Vedi Nome del personaggio/Visualizzazione della salute per una guida in dettaglio sui controlli dell'aspetto dei nomi dei personaggi e delle barre di salute.

Lettura Parallela

Questa proprietà controlla quando la barra della salute di un umanoide può essere visualizzata. Per impostazione predefinita, questa proprietà è impostata su Class.Humanoid.Health

Nota che questa proprietà funziona indipendentemente dalla proprietà HealthDisplayDistance che è responsabile di fare sparire la barra della salute a certi livelli. Se Humanoid.HealthDisplayType|HealthDisplayType è impostato su Enum.HumanoidHealthDisplayType|

Vedi Nome del personaggio/Visualizzazione della salute per una guida in dettaglio sui controlli dell'aspetto dei nomi dei personaggi e delle barre di salute.

HipHeight

Lettura Parallela

Determina la distanza (in studs) dal terreno il RootPart che dovrebbe essere quando il humanoid è in piedi. Il RigType influenza il modo in cui si comporta questa proprietà.

Per le navi R15, una altezza di gamba appropriata è preimpostata per garantire l'altezza della RootPart è corretta. L'altezza delle gambe non è utilizzata. L'altezza generale del umanoid può essere descritta nella seguente formula:


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

Per le navi R6, HipHeight invece descrive un Dislocamentorelativo. L'altezza totale dell'umanoid può essere descritta nella seguente formula:


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

Jump

Non Replicato
Lettura Parallela

Se true , i salti Humanoid con una forza pari al valore di Humanoid.JumpPower o l'altezza di 2>Class.Humanoid.JumpHeight2>, a seconda del valore di 5>Class.Humanoid.UseJumpPower5> .

JumpHeight

Lettura Parallela

Fornisce controllo sulla altezza di un Humanoid salti, in studs. Il valore iniziale di questa proprietà è determinato dal valore di StarterPlayer.CharacterJumpHeight che predefinito è 7.2.

Anche se impostare questa proprietà su 0 prevenirà efficacemente il salto dell'umanoide, è consigliato disabilitare il salto disabilitando lo stato Enum.HumanoidStateType.Jumping attraverso Humanoid:SetStateEnabled() .

Questa proprietà è visibile solo nella finestra Proprietà se Humanoid.UseJumpPower è impostato su falso, poiché non sarebbe rilevante altrimenti (invece, 2>Class.Humanoid.JumpPower2> viene utilizzato).

JumpPower

Lettura Parallela

Determina la forza di spinta verso l'alto applicata al Humanoid quando si salta. Il valore iniziale di questa proprietà è determinato dal valore di StarterPlayer.CharacterJumpPower che predefinito è 50 e è limitato tra 0 e 1000. Nota che i salti sono anche influenzati dalla proprietà Class

Anche se impostare questa proprietà su 0 prevenirà efficacemente il salto dell'umanoide, è consigliato disabilitare il salto disabilitando lo stato Enum.HumanoidStateType.Jumping attraverso Humanoid:SetStateEnabled() .

Questa proprietà è visibile solo nella finestra Proprietà se Humanoid.UseJumpPower è impostato su vero , poiché non sarebbe rilevante altrimenti (invece, 2>Class.Humanoid.JumpHeight2> viene utilizzato).

MaxHealth

Lettura Parallela

Il valore massimo di un Health umanoid.

Il valore di questa proprietà viene utilizzato insieme alla proprietà Health per ridimensionare la visualizzazione della barra della salute predefinita. Quando una barra della salute di un Health raggiunge, la sua barra della salute potrebbe non essere visualizzata, a seconda della sua Proprietà

MaxSlopeAngle

Lettura Parallela

Questa proprietà determina l'angolo di declinazione massimo che un umanoide può scalata. Se l'angolo di un declinazione è maggiore di un umanoide's MaxSlopeAngle, scivoleranno verso il basso dal declinazione.

Quando un personaggio viene generato, questa proprietà viene impostata in base al valore di StarterPlayer.CharacterMaxSlopeAngle .

Il valore di questa proprietà è limitato ai valori tra 0 ° e 89 °. Si prefigge di 89 °, quindi gli umanoidi possono salire quasi qualsiasi pendenza che vogliono per impostazione predefinita.

Campioni di codice

Limiting The Slope a Humanoid Can Walk Up

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

MoveDirection

Sola Lettura
Non Replicato
Lettura Parallela

MoveDirection è una proprietà di proprietà di lettura che descrive la direzione in cui si muove un Humanoid , come un veicolo di unità o un vettorialedi lunghezza zero. La direzione è descritta nello Spaziodel mondo.

Poiché questa proprietà è di sola lettura, non può essere impostata da un Script o LocalScript .

Campioni di codice

Walking Camera Bobble Effect

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

NameDisplayDistance

Lettura Parallela

La proprietà NameDisplayDistance è un numero utilizzato in conjunction con la proprietà Humanoid.DisplayDistanceType per controllare la distanza dalla quale il nome di un umano può essere visto.

Vedi Nome del personaggio/Visualizzazione della salute per una guida in dettaglio sui controlli dell'aspetto dei nomi dei personaggi e delle barre di salute.

NameOcclusion

Lettura Parallela

Controlla se la barra del nome e della salute di un umanoide può essere vista dietro i muri o altri oggetti. Questa proprietà è un valore Enum.NameOcclusion e può essere configurata per occludere tutti i nomi, i nomi nemici o disabilitare completamente l'occlusione.

In casi in cui il LocalPlayer non ha Humanoid associato, questa proprietà si applica invece al soggetto Humanoid .

Vedi Nome del personaggio/Visualizzazione della salute per una guida in dettaglio sui controlli dell'aspetto dei nomi dei personaggi e delle barre di salute.

Campioni di codice

Occlude Player Names

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

PlatformStand

Lettura Parallela

Determina se il Humanoid è attualmente nello stato Enum.HumanoidStateType.PlatformStanding . Quando è vero, l'Humanoid è in uno stato in cui è libero cadere e non può Sposta. Questo stato si comporta simile alla seduta, tranne che il salto non libera l'Humanoid dallo stato.

RequiresNeck

Lettura Parallela

Consente ai sviluppatori di disabilitare il comportamento in cui un giocatore Character|character muore se il Neck Motor6D viene rimosso o disconnesso anche solo per un momento. Questa proprietà predefinita è impostata su true.

Lettura Parallela

RigType descrive se un Humanoid sta utilizzando il vecchio R6 character Piattaforma di test, o il nuovo R15 character Piattaforma di test.

Il R6 utilizza 6 Class.Part|Part visibili mentre il R15 utilizza 15 Class.Part|Part visibili. I R15 hanno più articolazioni rispetto ai R6, rendendoli molto più versatili quando vengono animati.

Nota che se questa proprietà è impostata in modo errato, la Humanoid non funzionerà correttamente. Ad esempio, se il RigType di un R15 è impostato su R6, il Humanoid morirà poich

RootPart

Sola Lettura
Non Replicato
Lettura Parallela

Un riferimento all'oggetto HumanoidRootPart del Humanoid che controlla il movimento di un umano attraverso il Mondo3D. Questa parte è normalmente invisibile.

Nota che nel caso dei personaggi del giocatore, RootPart è lo stesso che il Model.PrimaryPart del modello Player.Character.

SeatPart

Sola Lettura
Non Replicato
Lettura Parallela

SeatPart è un riferimento alla seduta in cui un Humanoid sta attualmente seduto, se presente. Il valore di questa proprietà può essere qualsiasi Seat , o VehicleSeat . Sarà 1> zero1> se l'Humanoid non si trova attualmente in una seduta.

Nota:

Sit

Lettura Parallela

La proprietà Sit è un booletten che indica se il Humanoid sta attualmente seduto. Humanoids può essere forzato in uno stato di seduta impostando il valore di questa Proprietàsu true. Se il Humanoid non è attacc

Nota:

  • Il Seat o VehicleSeat il Humanoid che si trova su può essere ottenuto utilizzando la Proprietà1> Class.Humanoid.SeatPart1>
  • È possibile rilevare quando un Umanoide si siede connesso all'evento Humanoid.Seated .

TargetPoint

Lettura Parallela

Non usare Questa proprietà funziona solo con la modalità sperimentale abilitata, che è stata completamente discontinuata.

Questa proprietà descrive una posizione 3D nello spazio in cui il Player che controlla questo Humanoid l'ultimo cliccato con un Tool equipaggiato.

Questa proprietà viene principalmente utilizzata da strumenti classici per determinare cosa un umanoide sta mirando quando attiva uno strumento. Se dai a un NPC un lanciatore di razzi classico, imposta il loro TargetPoint , quindi chiami la funzione Tool:Activate() dello strumento, puoi far sparare un razzo al punto di destinazione.

UseJumpPower

Lettura Parallela

Quando un personaggio viene generato, questa proprietà viene impostata in base al valore di StarterPlayer.CharacterUseJumpPower che predefinito è vero.

Quando si salta, con questo set a vero, il valore Humanoid.JumpHeight viene utilizzato per garantire i salti dell'uomo a quella Humanoid.JumpPower altezza. Con questo set a falso, il valore Class.Humanoid.JumpPower viene utilizzato per applicare una forza di spinta verso l'alto.

WalkSpeed

Lettura Parallela

Questa proprietà descrive quanto rapidamente il Humanoid è in grado di Camminata, in studs per secondo. Predefinito il valore di StarterPlayer.CharacterWalkSpeed (16), il che significa che un personaggio del giocatore può muoversi in 16 studs in qualsiasi direzione ogni secondo.

Note

  • Quando viene controllato su un dispositivo mobile o su una gamepad, un umanoide può camminare più lentamente del suo WalkSpeed se il joystick di controllo viene spostato solo di un grado di gradiente dal centro.
  • Puoi congelare un umanoide in posizione impostando WalkSpeed a 0; questo impedisce al giocatore di controllare di muoverlo attraverso i meccanismi di movimento predefiniti.
  • Lo script di animazione predefinito scala le animazioni di movimento di un umano in base alla velocità relativa di 16 studs/secondo.
  • La velocità con cui Humanoid cammina attualmente può essere ottenuta utilizzando l'evento Running .

WalkToPart

Lettura Parallela

WalkToPart è un riferimento a una parte che l'Humanoid sta cercando di raggiungere. Questa proprietà viene impostata normalmente quando una parte viene passata come argomento 2 della funzione Humanoid:MoveTo() dell'Humanoid.

Quando WalkToPart è impostato e un umanoide sta attivamente cercando di raggiungere la parte, continuerà ad aggiornare il suo obiettivo Vector3 per essere la posizione della parte, plus il Humanoid.WalkToPoint tradotto nello spazio di oggetto rispetto alla rotazione della parte.

Questo può essere descrittivo in Lua come:


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

Grotte

  • Impostare il valore di WalkToPart non è abbastanza per fare un inizio umanoidale dopo una parte.
  • L'Umanoide viene richiesto di iniziare a cercare di raggiungere un obiettivo quando il valore di WalkToPoint viene cambiato.
  • Potrebbe essere cambiato in futuro.
  • Lo stato raggiungere il obiettivo di un umanoide scade dopo 8 secondi se non raggiunge il suo obiettivo.
  • Questo è fatto in modo che i NPC non si blocchino aspettando Humanoid.MoveToFinished per Lanciare.
  • Se non vuoi che questo accada, dovresti chiamare ripetutamente MoveTo in modo che il timer rimanga impostato.

WalkToPoint

Lettura Parallela

WalkToPoint descrive la posizione 3D nello spazio che un umanoide sta cercando di raggiungere, dopo essere stato invitato a farlo dalla funzione Humanoid:MoveTo() dell'uomoide.

Se è ImpostareHumanoid.WalkToPart di un umanoide, il obiettivo è impostato trasformando WalkToPoint relativo alla posizione e alla rotazione delle parti. Se WalkToPart non è Impostare, allora il umanoide cercherà di raggiungere la posizione 3D specificata da WalkToPoint direttamente.

Grotte

  • Il valore di WalkToPoint deve essere cambiato in un valore diverso in modo che l'uomoide inizi a camminare verso di esso.
  • Se vuoi fare un'umanoidi 0,0,0 0,0,0 , devi usare la funzione MoveTo dell'umanoid.
  • Potrebbe essere cambiato in futuro.
  • Lo stato raggiungere il obiettivo di un umanoide scade dopo 8 secondi se non raggiunge il suo obiettivo.
  • Questo è fatto in modo che i NPC non si blocchino aspettando Humanoid.MoveToFinished per Lanciare.
  • Se non vuoi che questo accada, dovresti chiamare ripetutamente MoveTo in modo che il timer rimanga impostato.

Campioni di codice

Humanoid MoveTo Without Time out

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

Metodi

AddAccessory

void

Questo metodo attacca il Accessory specificato al parentdell'umanoid.

Quando questo metodo viene chiamato, un Accessory viene attaccato al personaggio cercando un Class

Se il richiesto Attachment non può essere trovato, allora il Accessory rimarrà affidato al padre dell'umanoido ma non sarà disattaccato.

Tipicamente, le saldature di accessori vengono Creazionisul Server, ma possono essere create sul client sotto alcune condizioni. In queste situazioni, le chiamate client-side a AddAccessory() possono non sempre produrre il comportamento desiderato e puoi usare BuildRigFromAttachments() per forzare

Parametri

accessory: Instance

Il Accessory da attaccare.


Restituzioni

void

Campioni di codice

[Humanoid] AddAccessory Example

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

BuildRigFromAttachments

void

Questo metodo assembla un albero di Motor6D giunture per il Humanoid . Motor6D giunte sono richieste per il riproduzione di 1> Class.Animation|Animazioni1> .

A partire dall'humanoide's RootPart , questo metodo raccoglie tutti i Attachments genitori nella parte attuale la cui fine con Rig

Humanoid:BuildRigFromAttachments() scala anche il personaggio e imposta i colori del corpo.


Restituzioni

void

Campioni di codice

Lua Port of BuildRigFromAttachments

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

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

ChangeState

void

Questa funzione fa in modo che il Humanoid entri nel dato Enum.HumanoidStateType, che descrive l'attività che il Humanoid sta attualmente eseguendo.

Per favore, Enum.HumanoidStateType la pagina per ulteriori informazioni sui singoli stati, poiché alcuni hanno nomi non intuitivi. Ad esempio, Enum.HumanoidStateType.Running descrive uno stato in cui le gambe dell'umanoid sono sul terreno, tra cui quando sono inattive.

A causa del comportamento predefinito del Class.Humanoid , alcuni stati verranno automaticamente modificati quando Impostare. Ad esempio:

Vedi anche Humanoid:SetStateEnabled() per abilitare o disabilitare uno stato specifico, e Humanoid:GetState() per ottenere lo stato attuale del robot umanoid.

Parametri

Il Enum.HumanoidStateType che il Humanoid deve eseguire.

Valore predefinito: "None"

Restituzioni

void

Campioni di codice

Double Jump

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

EquipTool

void

Questa funzione fa in modo che il Humanoid equipaggi il Tool dato.

L'esempio seguente causerebbe un Player per equipaggiare uno strumento in Workspace chiamato 'Tool' .


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

Quando questa funzione viene chiamata, l'humanoide si disequipaggia automaticamente qualsiasi Tools che ha attualmente equipaggiato

Anche se saranno equipaggiati, Tools per cui Tool.RequiresHandle non funzionerà se non hanno una gestire, indipendentemente dal fatto che questa funzione sia utilizzata per equipaggiarli o no

Vedi anche:

Parametri

tool: Instance

Il Tool per equipaggiare.


Restituzioni

void

GetAccessories

Questa funzione restituisce un array di Accessory oggetti che il genitore dell'umanoido indossa attualmente. Tutti questi oggetti Accessory saranno inclusi, indipendentemente dal fatto che siano attaccati o no.

Se il Humanoid non ha oggetti Accessory, un'arraya vuota verrà restituita.

Vedi anche Humanoid:AddAccessory() per attaccare un Accessory al parentdi un umanoide.


Restituzioni

Un array di Accessory oggetti che sono parented al genitore dell'humanoide.

Campioni di codice

Remove Accessories After Loading

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

GetAppliedDescription

Questa funzione restituisce una copia del cache di Class.Humanoid HumanoidDescription che descrive il suo aspetto attuale. Questo può essere utilizzato per determinare rapidamente l'aspetto di un personaggio e assegnare il loro aspetto ad altri personaggi utilizzando la funzione Humanoid:ApplyDescription() .

Vedi anche


Restituzioni

GetBodyPartR15

Questa funzione restituisce ciò che Enum.BodyPartR15 è, o Part se la parte non è una parte del corpo R15. Questa funzione consente ai sviluppatori di recuperare parti del corpo del giocatore indipendentemente dal fatto che i nomi delle parti del corpo siano o meno una parte del corpo R15. Questa funzione consente ai sviluppatori di recuperare parti del corpo del giocatore indipendentemente dal fatto che i nomi

Può essere utilizzato in conjunction con Class.Humanoid:ReplaceBodyPartR15() ). Ad esempio, se una parte del corpo di un Giocatoretocca qualcosa, questa funzione restituirà get a part instance. Gli sviluppatori possono quindi guardare up what part of the body that was, come head o arm. Quindi a seconda di ciò che è stata, gli sviluppatori possono eseguire alcune azioni di gioco o sostituire quella parte con un'altra parte - for

Questa funzione può essere utile per i giochi in cui la posizione dell'hit è importante. Ad esempio, può essere utilizzato per determinare se un giocatore è stato colpito in gamba e poi rallentarli in base all'infortunio.

Parametri

part: Instance

La parte specificata viene controllata per vedere se è una parte del corpo R15.


Restituzioni

Il tipo di parte del corpo specificato o sconosciuto se la parte non è una parte del corpo.

GetLimb

Questa funzione restituisce l'Enum.Limb枚 che è associato con il Part in uso. Funziona per entrambi i rig R15 e R6, ad esempio:


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

Nota che Humanoid:GetLimb() lancerà un errore se il padre della parte non è impostato sul parentdel humanoid.

Parametri

part: Instance

Il Part per il quale si deve recuperare il Enum.Limb .


Restituzioni

Il Enum.Limb la parte corrisponde.

Campioni di codice

Getting a Humanoid's Limbs

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

GetMoveVelocity


Restituzioni

Scrivi Parallelo

Questa funzione restituisce il valore corrente dell'umanoid Enum.HumanoidStateType, che descrive l'attività che il Humanoid sta attualmente eseguendo, come il salto o la nuotazione.

Vedi anche Humanoid:SetStateEnabled() per abilitare o disabilitare uno stato specifico, e Humanoid:ChangeState() per cambiare lo stato attuale del humanoid.


Restituzioni

Il attuale Enum.HumanoidStateType di Class.HumanoidStateType .

Campioni di codice

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

Scrivi Parallelo

La funzione GetStateEnabled restituisce se un Enum.HumanoidStateType è abilitato per il Humanoid .

Lo stato umanoidale descrive l'attività che lo umanoidale sta attualmente eseguendo.

Quando un particolare Enum.HumanoidStateType è disabilitato, l'uomoide non può mai entrare in tale stato. Questo è vero indipendentemente dal fatto che l'attentato a cambiare stato sia eseguito utilizzando Humanoid:ChangeState() o il codice umanoidale interno Roblox.

Vedi anche:

Parametri


Restituzioni

Se il Enum.HumanoidStateType è abilitato.

Campioni di codice

Setting and Getting Humanoid States

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

Move

void

Questa funzione fa in modo che il Humanoid cammini nella direzione Vector3 specificata.

Per impostazione predefinita, la direzione è in Condizionimondiali, ma se il parametro relativeToCamera è true, la direzione è relativa alla CFrame del 2>Class.Area di lavoro.CurrentCamera|CurrentCamera2> . Come la direzione


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

Quando questa funzione viene chiamata, il Humanoid si muoverà fino a quando la funzione non sarà chiamata di nuovo. Tuttavia, se gli script di controllo predefiniti sono in uso, questa funzione sarà sovrascritta quando chiamata su player Characters . Ciò può essere evitato utilizzando uno qualsiasi degli script di controllo pre

Questa funzione può essere chiamata sul Server, ma questo dovrebbe essere fatto solo quando il server ha proprietà di rete della raccolta di humanoid.

Vedi anche Humanoid:MoveTo() che rende un Humanoid camminare verso un punto, e Player:Move() che effettivamente chiama questa funzione.

Parametri

moveDirection: Vector3

La direzione a cui camminare.

relativeToCamera: bool

Imposta su true se il parametro moveDirection dovrebbe essere preso come riferimento alla CurrentCamera .

Valore predefinito: false

Restituzioni

void

Campioni di codice

Moving a Humanoid Forwards

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

MoveTo

void

Questa funzione fa in modo che il Humanoid tenti di camminare verso la posizione specificata impostando le proprietà Humanoid.WalkToPoint e Humanoid.WalkToPart.

I parametri luogo e parte corrispondono a ciò che Humanoid.WalkToPoint e 1> Class.Humanoid.WalkToPart1> saranno impostati.

Se il parametro parte è specificato, il Humanoid cercherà comunque di camminare al punto. Tuttavia, se la parte si muove, il punto Humanoid che cammina sarà per muoversi in posizione relativa alla parte 2> . Se il param

Lo stato raggiungere il obiettivo di un umanoide si esaurisce dopo 8 secondi se non raggiunge il suo obiettivo. Questo è fatto in modo che i NPC non si blocchi aspettando per Humanoid.MoveToFinished per l'Lanciare. Se non vuoi che questo accada, devi ripetutamente chiamare MoveTo in modo che il timer si resettino.

MoveTo() finisce se una delle seguenti condizioni si applica:

Parametri

location: Vector3

La posizione in cui impostare Humanoid.WalkToPoint .

part: Instance

Il BasePart per impostare Humanoid.WalkToPart .

Valore predefinito: "nil"

Restituzioni

void

Campioni di codice

Humanoid MoveTo Without Time out

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

RemoveAccessories

void

Questa funzione rimuove tutti Accessory oggetti indossati dalla parentdel giocatore. Per il giocatore Characters , questo rimuoverà tutti i cappelli e altri accessori.

Questa funzione rimuove l'oggetto Accessory da essi chiamando Instance:Destroy() su di loro, il che significa che il Parent degli accessori è impostato su 2>nil2> e bloccato.

Vedi anche Humanoid:AddAccessory() per aggiungere un Accessory e Humanoid:GetAccessories() per ottenere tutti gli oggetti 1> Class.Accessory1> che appartengono a un 4> Class.Humanoid4> .


Restituzioni

void

Campioni di codice

Remove Accessories After Loading

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

ReplaceBodyPartR15

Rimpiazza dinamicamente una parte del limbo R15 / Rthro in un Umanoide con una parte diversa. La parte viene scala automaticamente come normale.

Questa funzione è utile per modificare i personaggi durante il gameplay o costruire personaggi da una base Piattaforma di test. La funzione relativa GetBodyPartR15 può essere utile quando si utilizza questa funzione.

Il nome della parte superata dovrebbe corrispondere con il nome della BodyPartR15 Enum superata.

Parametri

La parte del corpo da sostituire. Enum.BodyPartR15.Unknown non funzionerà.

part: BasePart

Il Class.Part``Class.Instance che sarà genitore del personaggio.


Restituzioni

SetStateEnabled

void

Questa funzione imposta se un particolare Enum.HumanoidStateType è abilitato per il Humanoid . Quando un particolare Enum.HumanoidStateType è disabilitato, il 1> Class.Humanoid1>

Nota che l'uso di SetStateEnabled() sul server non replica il cambiamento al client, né viceversa.

Parametri

Il Enum.HumanoidStateType per essere abilitato o disabilitato.

enabled: bool

true se state deve essere abilitato, false se 0> state0> deve essere disabilitato.


Restituzioni

void

Campioni di codice

Jump Cooldown

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

TakeDamage

void

Questa funzione abbassa il Humanoid.Health del Humanoid dal valore number se non è protetto da un 2>Class.ForceField2>

Questa funzione accetta valori negativi per il valore parametro. Ciò aumenterà il Humanoid.Health . Tuttavia, questo avrà solo un effetto se non è presente ForceField.

Come ForceFields protegge contro TakeDamage

Un Humanoid è considerato protetto da un ForceField se un ForceField soddisfa uno dei seguenti criteri:

Per fare danno a un Humanoid irrespective of any ForceFields present, set Humanoid.Health directly.

For more information on how ForceFields protect Humanoids see the ForceField page

Parametri

amount: number

Il danno, o quantità da dedurre dal Humanoid.Health .


Restituzioni

void

Campioni di codice

Damaging a Humanoid

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

UnequipTools

void

Questa funzione disequipaggia qualsiasi Tool attualmente equipaggiato dal Humanoid

Il Tool non equipaggiato sarà affidato al Backpack di Class.Player associato al Player .

Se non Tool è equipaggiato, questa funzione non farà nulla.

Anche se Tools può essere equipaggiato da NPC (non giocatori), questa funzione funziona solo su Humanoids con un corrispondente Player . Ciò è dovuto al fatto che un oggetto 1> Class.Backpack1> richiede per essere genitore del

Vedi anche:


Restituzioni

void

Campioni di codice

Unequip Tool Keybind

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

ApplyDescription

void
Resa

Questa funzione di rendimento rende il personaggio più simile a quello del passato in HumanoidDescription . Una copia del passato HumanoidDescription è memorizzata come HumanoidDescription per il 1> Class.Human .

Questa funzione è ottimizzata attraverso il fatto che si suppone che solo questa funzione venga utilizzata per cambiare l'aspetto del personaggio, e non vengono apportate modifiche attraverso altri metodi tra le chiamate. Se vengono apportate modifiche al personaggio tra le chiamate. Allora questa funzione potrebbe non rendere il person

Vedi anche

Parametri

humanoidDescription: HumanoidDescription

L'istanza HumanoidDescription che vuoi impostare per Corrispondeal personaggio.

assetTypeVerification: Enum.AssetTypeVerification
Valore predefinito: "Default"

Restituzioni

void

ApplyDescriptionReset

void
Resa

Questa funzione di restituzione rende il personaggio più simile a quello del passato in HumanoidDescription, anche dopo le modifiche esterne. Una copia del passato HumanoidDescription è memorizzata come il HumanoidDescription per il 1> Class.Humanoid .

Questa funzione garantirà sempre che il personaggio rifletta il personaggio passato in Class.Humanoid

Parametri

humanoidDescription: HumanoidDescription

L'istanza HumanoidDescription che vuoi impostare per Corrispondeal personaggio.

assetTypeVerification: Enum.AssetTypeVerification
Valore predefinito: "Default"

Restituzioni

void

PlayEmote

Resa

Se l'emote non potrebbe essere riprodotto poiché il nome dell'emote non è trovato nella Descrizione dell'Umanoide, questa API restituirà un errore. L'API restituirà true per indicare che l'emote è stato riprodotto con successo.

Parametri

emoteName: string

il nome dell'emote da giocare.


Restituzioni

riprodotto con successo.

Eventi

ApplyDescriptionFinished

Parametri

description: HumanoidDescription

Climbing

Si attiva quando la velocità con cui un Humanoid sta salendo cambia.

Humanoids può arrampicare le scale fatte con Parts o TrussParts .

Humanoids salta al 70% della loro Humanoid.WalkSpeed .

Questo evento non si attivera sempre con una velocita di 0 quando Humanoid smette di arrampicarsi.

Vedi anche:

Parametri

speed: number

La velocità con cui l'Humanoid sta attualmente salendo.


Campioni di codice

Humanoid.Climbing

local Players = game:GetService("Players")
local function onCharacterClimbing(character, speed)
print(character.Name, "is climbing at a speed of", speed, "studs / second.")
end
local function onCharacterAdded(character)
character.Humanoid.Climbing:Connect(function(speed)
onCharacterClimbing(character, speed)
end)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Died

Questo evento si attiva quando la Humanoid muore, di solito quando la Humanoid.Health raggiunge 0. Potrebbe essere causato da disconnettersi dalla loro testa dal loro Humanoid.Torso , o impostare direttamente la Proprietàdella salute.

Questo evento si attiva solo se il Humanoid è discendente del Workspace. Se il Dead2>Class.Workspace2> è disabilitato, non si Lanciare.


Campioni di codice

Humanoid.Died

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

FallingDown

L'evento FallingDown viene attivato quando il Humanoid entra e lascia il FallingDown``Enum.HumanoidStateType .

Il Humanoid entrerà nello stato GettingUp dopo 3 secondi dallo stato FallingDown abilitato. Quando ciò accade, questo evento si attiva con un valore 2>attivo2> di 5>false5> e 8>

Parametri

active: bool

Descrive se il Humanoid sta entrando o lasciando l'FallingDown``Enum.HumanoidStateType .


FreeFalling

Questo evento si attiva quando il Humanoid entra o lascia il Freefall``Enum.HumanoidStateType .

Il paratore parametro rappresenta se il Humanoid sta entrando o lasciando lo stato Freefall .

Although the Freefall state generally ends when the Humanoid reaches the ground, this event may fire with active equal to 1> false1> if the state is changed while the

Parametri

active: bool

Indipendentemente dal fatto che Humanoid stia entrando o lasciando l'Freefall``Enum.HumanoidStateType .


GettingUp

Questo evento si attiva quando il Humanoid entra o lascia lo stato Enum.HumanoidStateType.GettingUp , uno stato di transizione che viene attivato poco dopo l'ingresso del Humanoid , entrando nello stato di transizione che viene attivato poco dopo

Quando un Humanoid tenta di rialzarsi, questo evento si attiva con un active parametro di true prima di breve dopo aver rialzato di nuovo con un 2>active2> parametro di 5>force5> prima di breve dopo aver rialzato di nuovo con un 8>force8> parametro di Humanoid1> prima di breve dopo aver rialzato di nuovo con un 4>

Per forzare un Humanoid a cadere, usa la funzione Class.Humanoid:ChangeState() con Enumerate.HumanoidStateType.FallingDown .

Parametri

active: bool

Indipendentemente dal fatto che Humanoid stia entrando o uscendo dal GettingUp``Enum.HumanoidStateType .


HealthChanged

Questo evento si attiva quando la Humanoid.Health cambia. Tuttavia, non si attiva se la salute aumenta da un valore pari o maggiore a Humanoid.MaxHealth .

Quando Humanoid.Health raggiunge zero, il Humanoid muore e l'evento Humanoid.Died viene Lanciare. Questo evento viene attivato con un valore di zero.

Parametri

health: number

Il nuovo valore di Humanoid.Health .


Campioni di codice

Humanoid.HealthChanged

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

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

Jumping

Questo evento si attiva quando il Humanoid entra e lascia il Jumping``Enum.HumanoidStateType .

Quando un Humanoid salta, questo evento si attiva con un active parametro di true true prima di breve dopo aver salto di nuovo con un

Puoi disabilitare il salto usando la funzione Humanoid:SetStateEnabled() .

Parametri

active: bool

Indipendentemente dal fatto che Humanoid stia entrando o uscendo dal Jumping``Enum.HumanoidStateType .


MoveToFinished

Questo evento si attiva quando il Humanoid finisce di camminare verso un obiettivo dichiarato dal Humanoid.WalkToPoint e Humanoid.WalkToPart proprietà.

Le proprietà Humanoid.WalkToPoint e Humanoid.WalkToPart possono essere impostate individualmente, o utilizzando la funzione Humanoid:MoveTo().

Se il Humanoid raggiunge il suo obiettivo in 8 secondi, questo evento restituirà con raggiunto come vero. Se l'obiettivo non viene raggiunto entro 8 secondi il Humanoid smetterà di camminare e 2> raggiunto2> sarà falso. Questo limite può essere

Parametri

reached: bool

Un bool che indica se il Humanoid raggiunto è il goal. True se il Humanoid raggiunto raggiunge il suo goal, 2> false2> se il walk timed out prima che il goal potesse essere raggiunto.


Campioni di codice

Humanoid MoveTo Without Time out

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

PlatformStanding

Questo evento si attiva quando il Humanoid entra o lascia il PlatformStanding``Enum.HumanoidStateType .

Mentre il Humanoid è nello stato PlatformStanding, la proprietà Humanoid.PlatformStand sarà 2> vera2> .

Mentre Humanoid.PlatformStand è impostato su verso la verità, il Humanoid non sarà in grado di Sposta. Per ulteriori informazioni, vedi la pagina per 1> Class.Humanoid.PlatformStand1> .

The PlatformStand Enum.HumanoidStateType era associato alla parte ora disabilitata Platform. Nonostante questo, può essere ancora utilizzato dai developer.

Parametri

active: bool

Indipendentemente dal fatto che Humanoid stia entrando o lasciando il PlatformStanding``Enum.HumanoidStateType .


Ragdoll

Questo evento si attiva quando il Humanoid entra o lascia il Ragdoll``Enum.HumanoidStateType .

Il parametro active avrà il valore true o false per indicare l'ingresso o l'uscita.

Usa Humanoid:SetStateEnabled() per disabilitare lo stato di Disattivare per rimanere nello stato di Ragdoll.

Vedi anche:

Parametri

active: bool

Indipendentemente dal fatto che il Humanoid stia entrando o lasciando il Ragdoll``Enum.HumanoidStateType .


Running

Questo evento si attiva quando la velocità con cui un Humanoid esegue le modifiche.

Mentre esegui Humanoids copertura, in media, la loro Humanoid.WalkSpeed in studs per secondo.

Quando il Humanoid smette di eseguire questo evento si attiva con una velocità di 0.

Vedi anche:

Parametri

speed: number

La velocità con cui viene eseguito il Humanoid .


Campioni di codice

Humanoid Running

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

Seated

Questo evento si attiva quando un Humanoid si siede o si alza da un Seat o VehicleSeat .

Quando un personaggio viene in contatto con un seggiolino, viene allegato al seggiolino e viene visualizzata un'animazione di seduta. Per ulteriori informazioni su questo, vedi la pagina Seat.

  • Se il personaggio si sta sedendo, il parametro active sarà vero e currentSeatPart sarà il sedile in cui si trovano.
  • Se il personaggio si alzò da un sedile, il parametro active sarà falso e currentSeatPart sarà nullo.

Vedi anche:

  • Humanoid.Sit , che indica se un Umanoide sta attualmente seduto
  • Humanoid.SeatPart , che indica il sedile in cui si trova attualmente un Umanoid, se presente.

Parametri

active: bool

Vero se il Humanoid sta seduto.

currentSeatPart: BasePart

Il sedile in cui si trova il Humanoid è seduto se si trova seduti.


Campioni di codice

Finding a Player's Seat

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

StateChanged

Questo evento si attiva quando lo stato del Humanoid viene cambiato.

Poiché non esiste uno stato umanoidale "inattivo", dovresti invece utilizzare l'evento Humanoid.Running o ascoltare la parte RootPart della sua Velocity per calcolare quando il 2>Class.Humanoid2> è inattivo.

Vedi anche

Parametri

Il inserisci / scrividi stato precedente dell'umanoid.

Il inserisci / scrividi stato attuale dell'umanoid.


Campioni di codice

Jumping Particles

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

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

StateEnabledChanged

L'evento StateEnableChanged si attiva quando Humanoid:SetStateEnabled() viene chiamato sul Humanoid .

I parametri includono il Enum.HumanoidStateType in questione nonché un booleto che indica se questo stato è abilitato.

Vedi anche:

Parametri

Il Enum.HumanoidStateType per cui lo stato abilitato è stato cambiato.

isEnabled: bool

Vero se lo stato è ora abilitato.


Campioni di codice

Humanoid State Change Detector

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

Strafing

Questo evento non si attiva quando il Humanoid sta bombardando e non dovrebbe essere utilizzato dagli sviluppatori

Questo evento viene attivato quando il Humanoid entra o lascia il StrafingNoPhysics``Enum.HumanoidStateType .

Quando il Humanoid entra nello stato StrafingNoPhysics questo evento si attiva con un parametro attivo di 2> vero2> . L'evento si attiva di nuovo con un 5> parametro attivo5> uguale a

Questo evento è associato allo stato StrafingNoPhysics``Class.Humanoid e non non fire quando il 1> Class.Humanoid1> si muove perpendicolare alla direzione in cui si trova. Questo stato non è attualmente in uso,

Parametri

active: bool

Indipendentemente dal fatto che il Humanoid stia entrando o lasciando il StrafingNoPhysics``Enum.HumanoidStateType .


Swimming

Questo evento si attiva quando la velocità con cui un Humanoid nuota in acqua Terrain cambia.

Humanoids nuota al 87,5% della loro Humanoid.WalkSpeed .

Questo evento non si attiverà sempre con una velocità di 0 quando il Humanoid smette di nuotare.

Vedi anche:

Parametri

speed: number

La velocità a cui Humanoid nuota attualmente.


Touched

Questo evento si attiva quando uno dei limiti dell'umano entra in contatto con un altro BasePart . Il BasePart che il limbo tocca, insieme al limbo stesso, viene fornito.

Questo evento non si attivera quando i limbi appartenenti al Humanoid entreranno in contatto con se stessi.

Alternative

Anche se l'evento Humanoid.Touched è utile, dovresti considerare se ci sono alternative che meglio soddisfino le tue esigenze.

  • In most casi, è consigliato connettere un evento BasePart.Touched per BaseParts di interesse invece, poiché l'evento Class.Humanoid.Touched
  • Quando si cerca di lavorare quando il Humanoid è atterrato sul terreno, l'evento Humanoid.StateChanged è più appropriato. In alternativa, puoi controllare Humanoid.FloorMaterial per vedere se il humanoid è in piedi su qualsiasi materiale non aereo.

Note

Parametri

touchingPart: BasePart

Il BasePart il Humanoid è entrato in contatto.

humanoidPart: BasePart

Il limbo del Humanoid che è stato toccato.


Campioni di codice

Midas Touch

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