Humanoid

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Humanoid adalah objek khusus yang memberi model fungsionalitas karakter.Ini memberikan model dengan kemampuan untuk berjalan fisik dan berinteraksi dengan berbagai komponen pengalaman Roblox.Humanoid selalu dibesarkan di dalam Model , dan model diharapkan menjadi kumpulan dari BasePart dan Motor6D ; bagian akar dari kumpulan diharapkan diberi nama HumanoidRootPart .Ia juga mengharapkan bagian yang bernama Head untuk terhubung ke bagian torso karakter, baik secara langsung maupun tidak langsung.Secara default, ada dua jenis karakter resmi yang disediakan oleh Roblox, masing-masing dengan set peraturan sendiri:

R6

  • Rig karakter dasar yang menggunakan 6 bagian untuk anggota tubuh.
  • Bagian Head harus dilampirkan ke bagian yang bernama Torso , atau Humanoid akan mati segera.
  • Penampilan Bagian Tubuh diterapkan menggunakan objek CharacterMesh.
  • Beberapa properti, seperti Humanoid.LeftLeg dan Humanoid.RightLeg, hanya berfungsi dengan R6.

R15

  • Lebih kompleks dari R6, tetapi juga jauh lebih fleksibel dan kuat.
  • Menggunakan 15 bagian untuk anggota tubuh.
  • Bagian Head harus dilampirkan ke bagian yang bernama UpperTorso atau Humanoid akan mati segera.
  • Penampilan Bagian Tubuh harus disusun secara langsung.
  • Dapat diubah secara dinamis dengan menggunakan objek khusus NumberValue di dalam Humanoid.
  • Humanoid akan secara otomatis membuat objek Vector3Value bernama OriginalSize di dalam setiap lengan.
  • Jika NumberValue diparentkan di dalam Humanoid dan diberi nama salah satu dari mengikuti, akan digunakan untuk mengontrol fungsi skalierung:
    • Skala Kedalaman Badan
    • Skala Tinggi Tubuh
    • Skala Lebar Tubuh
    • Skala Kepala

Contoh Kode

This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.

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)

Rangkuman

Properti

Metode

Acara

Properti

AutoJumpEnabled

Baca Paralel

AutoJumpEnabled menetapkan apakah atau tidak Humanoid akan berusaha secara otomatis melompati rintangan yang menuju ke arahnya.

Saat ini, properti ini hanya berfungsi ketika kondisi berikut benar:

  • Model karakter Humanoid adalah Player.Character dari sebuah Player .
  • Pemain dalam pertanyaan menggunakan kendalisentuh.

Ketika karakter pemain muncul, nilai properti cocok dengan properti pemain Player.AutoJumpEnabled - yang pada gilirannya cocok dengan properti StarterPlayer.AutoJumpEnabled.

Contoh Kode

This code sample is meant for a TextButton. It allows the player to toggle the auto-jumping behavior while on a mobile device.

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

Baca Paralel

Properti Putar Otomatis menjelaskan apakah Humanoid akan berputar secara otomatis ke arah yang mereka bergerak atau tidak.Saat diatur ke benar, model karakter akan secara bertahap berpaling ke arah gerakan mereka saat Humanoid berjalan di sekitar.Ketika diatur ke false, model karakter akan tetap tetap dalam rotasi saat ini, kecuali jika kekuatan berputar diterapkan ke HumanoidRootPart.

Jika model karakter terjadi menjadi karakter pemain, maka perilaku rotasi Humanoid dipengaruhi oleh properti RotateType dari UserGameSetting.

Ketika properti AutoRotate diatur ke benar, properti RotateType memiliki efek berikut pada rotasi Humanoid:


<th>Perilaku</th>
<th>Konteks</th>
</tr>
</thead>
<tbody>
<tr>
<td>Gerakan Relatif</td>
<td />
<td />
</tr>
<tr>
<td>Kamerarelatif</td>
<td>Karakter akan berputar untuk menghadap ke arah kamera.</td>
<td>Pemain memiliki kamera mereka diperbesar ke orang pertama, atau mereka berada dalam mode kunci shift.</td>
</tr>
</tbody>
Tipe Rotasi

Contoh Kode

This script adds the functionality of a button to a part, which switches the AutoRotate property of whoever touches it.

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

Baca Paralel

Humanoid memiliki enam nilai skala anak termasuk BodyDepthScale , BodyHeightScale , BodyProportionScale , BodyTypeScale , BodyWidthScale , HeadScale .Mengubah nilai salah satu penyebab ini menyebabkan bagian tubuh dan aksesori karakter berubah ukuran, tetapi hanya jika AutomaticScalingEnabled benar.

BreakJointsOnDeath

Baca Paralel

Menentukan apakah persyaratan humanoid pecah saat berada di negara Enum.HumanoidStateType.Dead . Nilai default adalah benar.

CameraOffset

Baca Paralel

Properti CameraOffset menentukan offset ke posisi subjek kamera saat Camera.CameraSubject diatur ke posisi ini Humanoid.

Offset diterapkan di ruang objek, relatif terhadap orientasi Humanoid HumanoidRootPart.Sebagai contoh, nilai offset Vector3(0, 10, 0) mengkompensasi kamera pemain ke 10 stud di atas humanoid pemain.

Contoh Kode

This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.

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)
Baca Paralel

Properti Jarak Tampilan Jenis mengontrol perilaku jarak nama dan kesehatan manusiaoid.Properti ini ditetapkan menggunakan Enum.HumanoidDisplayDistanceType enum dengan tiga nilai yang tersedia, masing-masing dengan set aturan sendiri:

  • Ketika diatur ke Viewer , humanoid melihat nama/kesehatan humanoid lain dalam jangkauan sendiri NameDisplayDistance dan HealthDisplayDistance .
  • Ketika diatur ke , humanoid mengambil kontrol penuh atas nama dan tampilan kesehatannya melalui nilai dan . nya.
  • Ketika diatur ke None, nama dan bilah kesehatan humanoid tidak muncul di bawah kondisi apa pun.

Lihat Nama Karakter/Tampilan Kesehatan untuk panduan lengkap tentang mengontrol penampilan nama karakter dan bilah kesehatan.

Contoh Kode

This example demonstrates how to set a Humanoid's Humanoid.DisplayerDistanceType, Humanoid.HealthDisplayDistance, and Humanoid.NameDisplayDistance properties. These properties determine how a humanoid's healthbar and name are rendered for a player.

First, we change the DisplayDistanceType to Viewer using Enum.HumanoidDisplayDistanceType. When set to viewer, the humanoid's Name and healthbar will be displayed based on the distance settings of the humanoid viewing them.

Then, the humanoid's HealthDisplayDistance is set to 0. Setting the property to 0 hides the healthbar completely. It is not displayed at any distance.

Finally, the humanoid's NameDisplayDistance is set to 100. This means that the humanoid's name will be visible to other humanoid's within 100 studs.

This example should work as expected when placed inside a Script that is a child of the humanoid.

Displaying a Humanoid's Health and Name

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

DisplayName

Baca Paralel

DisplayName adalah properti yang menentukan tampilan nama Humanoid saat terlihat.Secara default, Humanoid baru akan memiliki nilai dari string kosong.Jika DisplayName adalah string kosong, tampilan nama humanoid akan default ke properti nama orang tuanya humanoid.

Pemuatan Karakter Pemain

Ketika pemain memuat karakter mereka, baik secara otomatis atau melalui penggunaan LoadCharacter() , Humanoid yang dibuat oleh mesin akan memiliki set properti DisplayName ke properti pemain DisplayName.

StarterCharacter dan StarterHumanoid

Ketika Humanoid bernama StarterHumanoid diberi kepada StarterPlayer , atau ketika Humanoid hadir di Model bernama StarterCharacter , properti DisplayName akan dihormati ketika Karakter dimuat oleh Pemain dalam game.Mesin hanya akan menghapuskan properti DisplayName dari Humanoid dengan properti DisplayName pemain jika Humanoid.DisplayName dari StarterHumanoid adalah string kosong.

EvaluateStateMachine

Baca Paralel

FloorMaterial

Hanya Baca
Tidak Direplikasi
Baca Paralel

Ini adalah properti hanya baca yang menggambarkan Enum.Material yang Humanoid saat ini berdiri.Ini berfungsi dengan baik dengan vokal reguler Parts dan Terrain vokal.

Contoh kode di bawah ini menunjukkan cara mendengarkan ketika properti ini berubah menggunakan Object:GetPropertyChangedSignal() .Ketika materi yang di atas humanoid berubah, itu akan mencetak pesan yang menunjukkan bahan baru yang berdiri di atasnya.


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

Peringatan

  • Ketika Humanoid tidak berdiri di lantai, nilai properti ini akan ditetapkan menjadi Udara.
    • Ini terjadi karena properti Enum tidak dapat memiliki nilai kosong.
    • Ini bisa menyebabkan beberapa kebingungan jika bagian memiliki materialnya diatur ke Udara, meskipun dalam praktiknya, bagian tidak seharusnya menggunakan material itu di tempat pertama.
  • Model karakter dari Humanoid harus dapat bertabrakan dengan lantai, atau tidak akan terdeteksi.
    • Anda tidak dapat menguji apakah Humanoid berenang dengan properti ini. Sebagai gantinya, Anda harus menggunakan fungsi Humanoid:GetState() nya.

Health

Tidak Direplikasi
Baca Paralel

Properti ini mewakili kesehatan saat ini dari Humanoid .Nilainya dibatasi pada rentang antara 0 dan MaxHealth .Jika humanoid mati, properti ini terus ditetapkan ke 0.

Perhatikan bahwa fungsi TakeDamage() dapat digunakan untuk mengurangi dari Health alih-alih mengatur properti secara langsung.

Regenerasi Kesehatan

Secara default, skrip regenerasi kesehatan pasif dimasukkan secara otomatis ke dalam humanoid.Ini menyebabkan karakter pemain non-mati untuk beregenerasi 1% dari MaxHealth setiap detik.Untuk menonaktifkan perilaku regenerasi ini, tambahkan kosong Script bernama Kesehatan ke StarterCharacterScripts .

Tampilan Bilah Kesehatan

Ketika Health kurang dari MaxHealth, bilah kesehatan ditampilkan dalam pengalaman.Perilaku tampilan bilah kesehatan tergantung pada HealthDisplayDistance dan HealthDisplayType.

Lihat Nama Karakter/Tampilan Kesehatan untuk panduan lengkap tentang mengontrol penampilan nama karakter dan bilah kesehatan.

Kematian

Ketika nilai kesehatan karakter mencapai 0, Humanoid secara otomatis beralih ke status Enum.HumanoidStateType.Dead.Dalam keadaan ini, Health dikunci ke 0; namun, tidak ada kesalahan atau peringatan untuk mengatur Health manusia nonoid mati ke nilai positif nonnol.

HealthDisplayDistance

Baca Paralel

Properti ini adalah angka yang digunakan bersama dengan properti DisplayDistanceType untuk mengontrol jarak dari mana bar kesehatan manusia bisa dilihat.

Lihat Nama Karakter/Tampilan Kesehatan untuk panduan lengkap tentang mengontrol penampilan nama karakter dan bilah kesehatan.

Baca Paralel

Properti ini mengontrol kapan bar kesehatan manusiaoid diizinkan ditampilkan.Secara default, properti ini diatur ke DisplayWhenDamaged , yang membuat bilah kesehatan hanya ditampilkan ketika humanoid Health kurang dari MaxHealth .Ini juga dapat disetel ke AlwaysOn , yang membuat bilah kesehatan selalu ditampilkan, atau AlwaysOff , yang mencegahnya untuk tidak pernah ditampilkan.

Perhatikan bahwa properti ini berfungsi secara independen dari properti humanoid HealthDisplayDistance yang bertanggung jawab untuk membuat bilah kesehatan memudar di jarak tertentu.Jika Humanoid.HealthDisplayType|HealthDisplayType diatur ke AlwaysOn , itu masih akan memudar tergantung pada bagaimana HealthDisplayDistance dikonfigurasi.

Lihat Nama Karakter/Tampilan Kesehatan untuk panduan lengkap tentang mengontrol penampilan nama karakter dan bilah kesehatan.

HipHeight

Baca Paralel

Menentukan jarak (dalam stud) dari tanah RootPart seharusnya ketika humanoid berdiri.The RigType mempengaruhi cara properti ini berperilaku.

Untuk rig R15, ketinggian pinggul yang sesuai dipreset untuk memastikan ketinggian RootPart adalah benar.Tinggi kaki tidak digunakan.Tinggi keseluruhan dari humanoid dapat dijelaskan dalam formula berikut:


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

Untuk rig R6, HipHeight sebagai gantinya menggambarkan offset relatif. Ketinggian keseluruhan humanoid dapat dijelaskan dalam formula berikut:


Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
Tidak Direplikasi
Baca Paralel

Jika true , lompatan Humanoid melompat dengan kekuatan ke atas yang sama dengan nilai Humanoid.JumpPower atau ketinggian Humanoid.JumpHeight , tergantung pada nilai Humanoid.UseJumpPower .

JumpHeight

Baca Paralel

Memberikan kontrol atas ketinggian lompatan Humanoid , dalam stud.Nilai awal dari properti ini ditentukan oleh nilai StarterPlayer.CharacterJumpHeight yang default ke 7.2.

Meskipun mengatur properti ini ke 0 akan secara efektif mencegah humanoid melompat, disarankan untuk menonaktifkan lompatan dengan menonaktifkan negara Enum.HumanoidStateType.Jumping melalui Humanoid:SetStateEnabled().

Properti ini hanya terlihat di jendela Properti jika Humanoid.UseJumpPower diatur ke palsu , karena tidak akan relevan jika tidak (sebagai gantinya, Humanoid.JumpPower digunakan).

JumpPower

Baca Paralel

Menentukan berapa banyak kekuatan ke atas yang diterapkan ke Humanoid saat melompat.Nilai awal dari properti ini ditentukan oleh nilai StarterPlayer.CharacterJumpPower yang default ke 50 dan dibatasi antara 0 dan 1000.Perhatikan bahwa lompatan juga dipengaruhi oleh properti Workspace.Gravity yang menentukan akselerasi karena gravitasi.

Meskipun mengatur properti ini ke 0 akan secara efektif mencegah humanoid melompat, disarankan untuk menonaktifkan lompatan dengan menonaktifkan negara Enum.HumanoidStateType.Jumping melalui Humanoid:SetStateEnabled().

Properti ini hanya terlihat di jendela Properti jika Humanoid.UseJumpPower diatur ke benar , karena tidak akan relevan jika tidak (sebagai gantinya, Humanoid.JumpHeight digunakan).

MaxHealth

Baca Paralel

Nilai maksimum dari humanoid Health .

Nilai properti ini digunakan bersama dengan properti Health untuk menentukan ukuran tampilan bilah kesehatan default.Ketika bar kesehatan manusia Health mencapai MaxHealth, bar kesehatannya mungkin tidak ditampilkan, tergantung pada properti HealthDisplayType nya.

MaxSlopeAngle

Baca Paralel

Properti ini menentukan sudut kemiringan maksimum yang dapat panjatoleh humanoid.Jika sudut dari lereng lebih besar dari MaxSlopeAngle humanoid, mereka akan meluncur ke bawah lereng.

Ketika karakter muncul, properti ini ditetapkan sesuai dengan nilai StarterPlayer.CharacterMaxSlopeAngle .

Nilai properti ini dibatasi pada nilai antara 0° dan 89°.Ini default ke 89°, sehingga humanoid dapat naik hampir semua lereng yang mereka inginkan secara default.

Contoh Kode

The example below demonstrates the effect of the MaxSlopAngle property by limiting the maximum slope the Players.LocalPlayer can walk up to 30°. The local player will slide down any slope greater than 30°.

This code below works as expected when placed in a LocalScript.

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

Hanya Baca
Tidak Direplikasi
Baca Paralel

Arah Gerakan adalah properti baca hanya yang menggambarkan arah yang Humanoid berjalan di, sebagai vektor unit atau vektor panjang nol.Arahnya dijelaskan dalam ruang dunia.

Karena properti ini hanya dibaca, tidak dapat ditetapkan oleh Script atau LocalScript.

Contoh Kode

This LocalScript makes the camera bobble as the player's character walks around, utilizing both the Humanoid's CameraOffset and MoveDirection. It should be parented inside of the StarterCharacterScripts so that it is distributed into a player's character as expected.

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

Baca Paralel

Properti NameDisplayDistance adalah angka yang digunakan bersama dengan properti Humanoid.DisplayDistanceType untuk mengontrol jarak dari mana nama humanoid dapat dilihat.

Lihat Nama Karakter/Tampilan Kesehatan untuk panduan lengkap tentang mengontrol penampilan nama karakter dan bilah kesehatan.

NameOcclusion

Baca Paralel

Mengontrol apakah nama dan bilah kesehatan manusia bisa dilihat di balik dinding atau objek lain.Properti ini adalah nilai Enum.NameOcclusion dan dapat dikonfigurasi untuk mengecualikan semua nama, nama musuh, atau menonaktifkan pengecualian sepenuhnya.

Dalam kasus di mana LocalPlayer tidak memiliki Humanoid yang terkait dengannya, properti ini sebagai gantinya berlaku untuk subjek Humanoid .

Lihat Nama Karakter/Tampilan Kesehatan untuk panduan lengkap tentang mengontrol penampilan nama karakter dan bilah kesehatan.

Contoh Kode

In the below example, Player|Players will not be able to see each other's Player.Character names when they are obscured behind BasePart|BaseParts.

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

Baca Paralel

Menentukan apakah Humanoid saat ini berada di negara Enum.HumanoidStateType.PlatformStanding .Ketika benar, Humanoid berada dalam keadaan di mana ia jatuh bebas dan tidak dapat bergerak.Status ini berperilaku mirip dengan duduk, kecuali bahwa melompat tidak membebaskan humanoid dari keadaan.

RequiresNeck

Baca Paralel

Memungkinkan pengembang untuk menonaktifkan perilaku di mana pemain Character|character meninggal jika Leher Motor6D dihapus atau terputus bahkan sesaat.Properti ini default ke benar.

Baca Paralel

Tipe Rig menjelaskan apakah Humanoid menggunakan rig karakter warisan R6, atau rig karakter R15 yang lebih baru.

Rig R6 menggunakan 6 terlihat Parts sementara rig R15 menggunakan 15 terlihat Parts .R15 rig memiliki lebih banyak persambungan daripada rig R6, sehingga menjadikannya lebih serbaguna saat dianimasi.

Perhatikan bahwa jika properti ini diatur tidak benar, Humanoid tidak akan berfungsi dengan benar.Sebagai contoh, jika R15 humanoid RigType diatur ke R6, Humanoid akan mati karena tidak ada BasePart yang disebut Torso yang terhubung ke BasePart yang disebut Kepala .

RootPart

Hanya Baca
Tidak Direplikasi
Baca Paralel

Referensi ke objek HumanoidRootPart manusia, bagian penggerak akar dari Humanoid yang mengontrol gerakan manusia melalui dunia 3D.Bagian ini biasanya tidak terlihat.

Untuk karakter R15, Model.PrimaryPart dari model Player.Character diatur ke HumanoidRootPart .

Untuk karakter R6, Model.PrimaryPart ditetapkan ke bagian Head.

SeatPart

Hanya Baca
Tidak Direplikasi
Baca Paralel

SeatPart adalah referensi ke kursi yang saat ini duduk di dalamnya, jika ada.Nilai properti ini bisa menjadi Seat , atau VehicleSeat.Ini akan menjadi nol jika Humanoid tidak saat ini duduk di kursi.

Catatan:

Baca Paralel

Properti Sit adalah boolean yang menunjukkan apakah Humanoid saat ini duduk.Humanoids dapat dipaksa ke dalam keadaan duduk dengan menetapkan nilai properti ini menjadi benar.Jika Humanoid tidak terpasang ke kursi saat dalam keadaan duduk, ia akan tersandung tanpa tabrakan di kakinya.A Humanoid dapat melarikan diri dari keadaan duduk dengan melompat.

Catatan:

TargetPoint

Baca Paralel

Jangan gunakan Properti ini hanya berfungsi dengan Mode Eksperimental diaktifkan, yang telah sepenuhnya dihentikan.

Properti ini menggambarkan posisi 3D di ruang di mana Player mengontrol ini Humanoid terakhir diklik dengan Tool dilengkapi.

Properti ini terutama digunakan oleh alat klasik untuk menentukan apa yang ditargetkan oleh humanoid saat mereka mengaktifkan alat.Jika Anda memberi NPC peluncur roket klasik, atur TargetPoint mereka, lalu panggil fungsi Tool:Activate() alat, Anda dapat membuat NPC menembak roket di titik target.

UseJumpPower

Baca Paralel

Ketika karakter muncul, properti ini ditetapkan sesuai dengan nilai StarterPlayer.CharacterUseJumpPower yang default ke benar.

Saat melompat, dengan ini diatur ke benar, nilai Humanoid.JumpHeight digunakan untuk memastikan lompatan humanoid ke ketinggian itu.Dengan ini diatur ke false, nilai Humanoid.JumpPower digunakan untuk menerapkan kekuatan maju.

WalkSpeed

Baca Paralel

Properti ini menjelaskan seberapa cepat Humanoid dapat berjalan, dalam stud per detik.Ini default ke nilai StarterPlayer.CharacterWalkSpeed (16), artinya karakter pemain dapat bergerak 16 kancing ke segala arah setiap detik.

Catatan

  • Ketika dikontrol di perangkat seluler atau gamepad, humanoid dapat berjalan lebih lambat dari WalkSpeed jika joystick pengendali dipindahkan hanya sebanyak sedikit demi sedikit dari pusat.
  • Anda dapat membekukan humanoid di tempat dengan menetapkan WalkSpeed ke 0; ini mencegah pemain kontrol memindahkannya melalui mekanisme gerakan default.
  • Skrip animasi default membesarkan animasi gerakan manusia berdasarkan seberapa cepatnya bergerak relatif terhadap kecepatan default 16 stud/detik.
  • Kecepatan di mana Humanoid saat ini berjalan dapat diperoleh menggunakan acara Running.

WalkToPart

Baca Paralel

WalkToPart adalah referensi ke bagian yang Humanoid coba capai.Properti ini biasanya ditetapkan ketika bagian disampaikan sebagai argumen ke-2 dari fungsi Humanoid Humanoid:MoveTo() .

Ketika WalkToPart diatur dan seorang humanoid aktif mencoba mencapai bagian, itu akan terus memperbarui tujuan Vector3 untuk menjadi posisi bagian, ditambah Humanoid.WalkToPoint yang diterjemahkan ke ruang objek relatif terhadap rotasi bagian.

Ini dapat dijelaskan di Luau sebagai:


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

Peringatan

  • Mengatur nilai WalkToPart tidak cukup untuk membuat humanoid mulai mengikuti bagian setelahnya.
  • Humanoid diminta untuk mulai mencoba mencapai tujuan saat nilai WalkToPoint diubah.
  • Ini mungkin akan berubah di masa depan.
  • Status mencapai tujuan dari manusia akan kedaluwarsa setelah 8 detik jika tidak mencapai tujuannya.
  • Ini dilakukan agar NPC tidak terjebak menunggu Humanoid.MoveToFinished untuk menembak.
  • Jika Anda tidak ingin ini terjadi, Anda harus berulang kali memanggil MoveTo sehingga batas waktu akan terus direset.

WalkToPoint

Baca Paralel

WalkToPoint menggambarkan posisi 3D di ruang yang diusahakan oleh humanoid untuk dicapai, setelah diminta melakukannya oleh fungsi Humanoid:MoveTo() Humanoid.

Jika Humanoid.WalkToPart dari humanoid atur, tujuan ditetapkan dengan mengubah WalkToPoint relatif terhadap posisi dan rotasi bagian.Jika WalkToPart tidak atur, maka humanoid akan mencoba mencapai posisi 3D yang ditentukan oleh WalkToPoint secara langsung.

Peringatan

  • Nilai WalkToPoint harus diubah menjadi nilai yang berbeda agar manusiaoid mulai berjalan ke arahnya.
  • Jika Anda ingin membuat berjalan manusia ke 0,0,0 , Anda harus menggunakan fungsi MoveTo Humanoid.
  • Ini mungkin akan berubah di masa depan.
  • Status mencapai tujuan dari manusia akan kedaluwarsa setelah 8 detik jika tidak mencapai tujuannya.
  • Ini dilakukan agar NPC tidak terjebak menunggu Humanoid.MoveToFinished untuk menembak.
  • Jika Anda tidak ingin ini terjadi, Anda harus berulang kali memanggil MoveTo sehingga batas waktu akan terus direset.

Contoh Kode

This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.

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)

Metode

AddAccessory

()

Metode ini menempelkan Accessory yang ditentukan ke orang tuanya humanoid.

Ketika metode ini dipanggil, Accessory ditambahkan ke karakter dengan mencari Attachment di orangtua humanoid yang memiliki nama yang sama dengan Attachment di aksesori Handle Part .Jika satu ditemukan, bagian Tangani akan terhubung ke orangtua dari Attachment menggunakan Weld , dan las akan di konfigurasi sehingga Attachments mengisi ruang yang sama.

Jika Attachment yang diperlukan tidak dapat ditemukan, maka Accessory akan tetap menjadi orangtua bagi orangtua humanoid tetapi akan terpisah.

Biasanya, las aksesori dibuat di server, tetapi bisa dibuat di klien dalam kondisi tertentu.Dalam situasi ini, panggilan sisi klien ke AddAccessory() mungkin tidak selalu menghasilkan perilaku yang diinginkan dan Anda dapat menggunakan BuildRigFromAttachments() untuk memaksakan kreasilas yang diharapkan.

Parameter

accessory: Instance

The Accessory untuk ditempelkan.

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

This script generates the "Clockwork's Shades" Accessory from scratch, and then attaches it to the player's character using Humanoid.AddAccessory You should paste this code into a regular script, and then parent it inside of the StarterPlayer's StarterCharacterScripts folder.

[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

()

Metode ini mengumpulkan pohon dari Motor6D persambungan untuk Humanoid . Motor6D persambungan diperlukan untuk pemutaran Animations .

Mulai dari humanoid's RootPart , metode ini mengumpulkan semua Attachments orangtua di bagian saat ini yang namanya berakhir dengan RigAttachment .Kemudian mencari lampiran yang cocok di karakter yang memiliki nama yang sama dengan lampiran.Menggunakan dua lampiran tersebut, persamaan Motor6D bersama dihasilkan berdasarkan bagian yang terkait dengan dua lampiran dan CFrame lampiran.

Humanoid:BuildRigFromAttachments() juga menyesuaikan karakter dan mengatur warna tubuh.


Memberikan nilai

()

Contoh Kode

A Lua port of the Humanoid's BuildRigFromAttachments function, so that the recursive behavior of the function can be seen.

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)

A script that generates an R15 character from scratch using a package's assetId.

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

()

Metode ini menyebabkan Humanoid memasuki yang diberikan Enum.HumanoidStateType , menggambarkan aktivitas yang Humanoid saat ini lakukan.

Silakan tinjau halaman Enum.HumanoidStateType untuk informasi lebih lanjut tentang negara khusus, karena beberapa memiliki nama yang tidak intuitif.Sebagai contoh, Enum.HumanoidStateType.Running menjelaskan keadaan di mana kaki humanoid berada di tanah, termasuk saat berhenti.

Karena perilaku default dari Humanoid , beberapa negara akan secara otomatis diubah saat atur. Misalnya:

Perhatikan bahwa untuk mengatur status Humanoid menggunakan metode ini, Anda harus melakukannya dari sebuah LocalScript dan klien harus memiliki kepemilikan jaringan dari Player.Character.Alternatifnya, Anda dapat memanggil metode ini dari sisi server Script , tetapi server harus memiliki kepemilikan jaringan karakter pemain.

Lihat juga Humanoid:SetStateEnabled() untuk mengaktifkan atau menonaktifkan status tertentu, dan Humanoid:GetState() untuk mendapatkan status humanoid saat ini.

Parameter

The Enum.HumanoidStateType yang Humanoid dilakukan adalah untuk melakukan.

Nilai Default: "None"

Memberikan nilai

()

Contoh Kode

This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.

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

()

Metode ini membuat Humanoid memakai Tool yang diberikan.

Contoh di bawah ini akan menyebabkan Player untuk melengkapi alat di Workspace bernama 'Alat' .


local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
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

Ketika metode ini dipanggil, Humanoid akan terlebih dahulu secara otomatis melepaskan semua Tools yang saat ini telah dilengkapi.

Meskipun mereka akan dilengkapi, Tools untuk yang Tool.RequiresHandle adalah benar tidak akan berfungsi jika mereka tidak memiliki pegangan, terlepas dari apakah metode ini digunakan untuk melengkapinya atau tidak.

Lihat juga:

Parameter

tool: Instance

The Tool untuk dilengkapi.

Nilai Default: ""

Memberikan nilai

()

GetAccessories

Metode ini mengembalikan array dari Accessory objek yang saat ini dipakai oleh orang tuanya humanoid.Semua objek Accessory seperti itu akan dimasukkan, terlepas dari apakah mereka dilampirkan atau tidak.

Jika Humanoid tidak memiliki objek Accessory, array kosong akan dikembalikan.

Lihat juga Humanoid:AddAccessory() untuk menempelkan Accessory ke orangtua manusiaoid.


Memberikan nilai

Sebuah array dari Accessory objek yang diwarisi ke orang tuanya humanoid

Contoh Kode

This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.

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

Metode ini mengembalikan salinan cache humanoid HumanoidDescription yang menggambarkan penampilannya saat ini.Ini dapat digunakan untuk dengan cepat menentukan penampilan karakter dan untuk menugaskan penampilan mereka ke karakter lain menggunakan metode Humanoid:ApplyDescription().

Lihat Juga


Memberikan nilai

GetBodyPartR15

Metode ini mengembalikan apa Enum.BodyPartR15 yang Part adalah, atau Enum.BodyPartR15.Unknown jika bagiannya bukan bagian tubuh R15.Metode ini memungkinkan pengembang untuk mengambil bagian tubuh pemain independen dari nama bagian tubuh yang sebenarnya, bukannya mengembalikan enum.

Ini dapat digunakan bersama dengan Humanoid:ReplaceBodyPartR15().Sebagai contoh, jika bagian tubuh pemain menyentuh sesuatu, fungsi ini akan mengembalikan instansi bagian.Pengembang kemudian dapat melihat bagian tubuh mana yang ada, seperti kepala atau lengan.Kemudian tergantung pada apa bagian itu, pengembang dapat melakukan beberapa tindakan gameplay atau menggantikan bagian itu dengan bagian lain - mungkin menunjukkan kerusakan.

Metode ini dapat berguna untuk game di mana lokasi pukulan penting.Sebagai contoh, itu dapat digunakan untuk menentukan apakah pemain terkena di kaki dan kemudian memperlambat mereka berdasarkan cedera.

Parameter

part: Instance

Bagian yang ditentukan diperiksa untuk melihat apakah itu adalah bagian tubuh R15.

Nilai Default: ""

Memberikan nilai

Jenis tubuh bagian R15 dari bagian yang ditentukan tidak diketahui jika bagian tersebut bukan bagian tubuh.

GetLimb

Metode ini mengembalikan Enum.Limb enum yang terkait dengan Part yang diberikan. Ini berfungsi untuk kedua rig R15 dan R6, misalnya:


-- Untuk 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
-- Untuk R6
print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg

Perhatikan bahwa Humanoid:GetLimb() akan menyebabkan kesalahan jika orangtua bagian tidak ditetapkan ke orangtua humanoid.

Parameter

part: Instance

The Part untuk yang mana Enum.Limb harus diambil.

Nilai Default: ""

Memberikan nilai

Bagian Enum.Limb yang sesuai dengan.

Contoh Kode

Put this in a LocalScript. The output will vary based on if the humanoid is R6 or R15.

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


Memberikan nilai

Tulis Paralel

Metode ini mengembalikan Enum.HumanoidStateType saat ini humanoid, yang menggambarkan aktivitas yang Humanoid saat ini lakukan, seperti melompat atau berenang.

Lihat juga Humanoid:SetStateEnabled() untuk mengaktifkan atau menonaktifkan status tertentu, dan Humanoid:ChangeState() untuk mengubah status humanoid saat ini.


Memberikan nilai

Contoh Kode

This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.

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

Tulis Paralel

Metode GetStateEnabled kembali apakah Enum.HumanoidStateType diaktifkan untuk Humanoid .

Status humanoid menggambarkan aktivitas yang saat ini dilakukan oleh humanoid.

Ketika sebuah khusus Enum.HumanoidStateType dinonaktifkan, manusia tidak pernah bisa memasuki keadaan itu.Ini benar terlepas dari apakah upaya untuk mengubah status dilakukan menggunakan Humanoid:ChangeState() atau kode humanoid internal Roblox.

Lihat juga:

Parameter

Yang diberikan Enum.HumanoidStateType .

Nilai Default: ""

Memberikan nilai

Apakah yang diberikan Enum.HumanoidStateType diaktifkan.

Contoh Kode

The code below sets the value of the humanoid jumping state to false using Humanoid:SetStateEnabled() and then retrieves and prints the value of this state (false) using Humanoid:GetStateEnabled().

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

()

Metode ini menyebabkan Humanoid berjalan di arah yang diberikan Vector3 .

Secara default, arahnya dalam ketentuandunia, tetapi jika parameter relativeToCamera adalah true, arahnya relatif terhadap CFrame dari CurrentCamera.Karena arah negatif Z dianggap "ke depan" di Roblox, kode berikut akan membuat manusia berjalan ke arah CurrentCamera .


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

Ketika metode ini dipanggil, Humanoid akan bergerak sampai metode dipanggil lagi.Namun, metode ini akan ditulis ulang di frame berikutnya oleh skrip kontrol karakter default Roblox.Ini dapat dihindari dengan memanggil fungsi ini setiap frame menggunakan RunService:BindToRenderStep() (lihat contoh), atau menghapus skrip kontrol di StarterPlayerScripts .

Metode ini dapat dipanggil di server, tetapi ini hanya boleh dilakukan ketika server memiliki kepemilikan jaringan dari assemblasi humanoid.

Lihat juga yang membuat berjalan ke titik, dan yang secara efektif memanggil fungsi ini.

Parameter

moveDirection: Vector3

Arah untuk berjalan masuk.

Nilai Default: ""
relativeToCamera: boolean

Atur ke true jika parameter moveDirection harus diambil sebagai relatif terhadap CurrentCamera .

Nilai Default: false

Memberikan nilai

()

Contoh Kode

This code sample uses the Humanoid:Move() function to make the player's Character walk in the direction of the Camera. RunService:BindToRenderStep() is required here as the default control scripts will overwrite the player's movement every frame.

To run this sample, place it inside a LocalScript parented to StarterCharacterScripts.

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

()

Metode ini menyebabkan Humanoid untuk berjalan ke lokasi yang diberikan dengan mengatur properti Humanoid.WalkToPoint dan Humanoid.WalkToPart.

Lokasi dan bagian memiliki parameter yang sesuai dengan apa yang akan ditetapkan pada dan .

Jika parameter bagian diberikan, Humanoid akan tetap berusaha berjalan ke titik.Namun, jika bagian bergerak maka titik Humanoid berjalan ke akan berada di posisi yang sama relatif terhadap bagian .Jika parameter bagian tidak ditentukan, maka posisi Humanoid yang berjalan tidak akan berubah

Status mencapai tujuan dari manusia akan kedaluwarsa setelah 8 detik jika tidak mencapai tujuannya.Ini dilakukan agar NPC tidak terjebak menunggu Humanoid.MoveToFinished untuk menembak.Jika Anda tidak ingin ini terjadi, Anda harus berulang kali memanggil MoveTo sehingga batas waktu akan terus direset.

MoveTo() berakhir jika salah satu dari kondisi berikut berlaku:

  • Karakter tiba di tujuan. Ada ambang batas ~1 untuk menyertakan berbagai kecepatan dan framerate humanoid.

  • Karakter terjepit dan waktu pengatur waktu delapan detik berakhir.

  • Nilai dari Humanoid.WalkToPoint atau Humanoid.WalkToPart berubah.

  • Skrip memanggil Humanoid:Move() dengan parameter baru moveDirection.

  • Skrip mengubah properti CFrame dari RootPart.

Parameter

location: Vector3

Posisi untuk mengatur Humanoid.WalkToPoint ke.

Nilai Default: ""
part: Instance

The BasePart untuk mengatur Humanoid.WalkToPart untuk.

Nilai Default: "nil"

Memberikan nilai

()

Contoh Kode

This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.

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

()

Metode ini menghapus semua objek Accessory yang dipakai oleh orang tua humanoid. Untuk pemain Characters, ini akan menghapus semua topi dan aksesori lainnya.

Metode ini menghapus objek Accessory dengan memanggil Instance:Destroy() pada mereka, artinya Parent dari aksesori diatur ke nil dan dikunci.

Lihat juga Humanoid:AddAccessory() untuk menempelkan Accessory , dan Humanoid:GetAccessories() untuk mendapatkan semua objek Accessory yang terkait dengan Humanoid .


Memberikan nilai

()

Contoh Kode

This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.

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

Secara dinamis menggantikan bagian lengan R15/Rthro di Humanoid dengan bagian yang berbeda. Bagian tersebut secara otomatis diukur seperti biasa.

Metode ini berguna untuk memodifikasi karakter selama permainan atau membangun karakter dari rig dasar.Metode terkait GetBodyPartR15 dapat berguna saat menggunakan metode ini.

Nama bagian yang dilewati harus cocok dengan nama BodyPartR15 Enum yang dilewati.

Parameter

Bagian tubuh yang akan diganti. Enum.BodyPartR15.Unknown akan gagal.

Nilai Default: ""
part: BasePart

The Class.Part``Class.Instance yang akan diberikan kepada karakter.

Nilai Default: ""

Memberikan nilai

SetStateEnabled

()

Metode ini menetapkan apakah suatu Enum.HumanoidStateType tertentu diaktifkan untuk Humanoid.Ketika sebuah khusus Enum.HumanoidStateType dinonaktifkan, Humanoid tidak pernah bisa masuk ke negara itu.Ini benar terlepas dari apakah upaya untuk mengubah status dilakukan menggunakan Humanoid:ChangeState() atau kode internal Roblox Humanoid.

Perhatikan bahwa menggunakan SetStateEnabled() di server tidak menyalin perubahan ke klien, atau sebaliknya.

Parameter

The Enum.HumanoidStateType untuk diaktifkan atau dinonaktifkan.

Nilai Default: ""
enabled: boolean

true jika state harus diaktifkan, false jika state harus dinonaktifkan.

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.

To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.

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

()

Metode ini menurunkan Humanoid.Health dari Humanoid oleh jumlah yang diberikan ** jika tidak dilindungi oleh ForceField

Metode ini menerima nilai negatif untuk parameter jumlah.Ini akan meningkatkan humanoid Humanoid.Health .Namun ini hanya akan memiliki efek jika tidak ada ForceField yang hadir.

Bagaimana ForceFields melindungi terhadap TakeDamage

A Humanoid dianggap dilindungi oleh a ForceField jika a ForceField memenuhi salah satu kriteria berikut:

Untuk melakukan kerusakan pada terlepas dari apa pun yang hadir, atur langsung.

Untuk informasi lebih lanjut tentang cara ForceFields melindungi Humanoids lihat halaman ForceField.

Parameter

amount: number

Kerusakan, atau jumlah yang harus dikurangkan dari Humanoid.Health.

Nilai Default: ""

Memberikan nilai

()

Contoh Kode

This code, put in a LocalScript, would make the local player take 99 damage only if a ForceField wasn't present.

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

()

Metode ini melepaskan semua Tool saat ini dilengkapi oleh Humanoid

The tidak dilengkapi Tool akan diberikan kepada Backpack dari Player yang terkait dengan Humanoid .

Jika tidak ada Tool yang dilengkapi, metode ini tidak akan melakukan apa-apa.

Meskipun Tools dapat dilengkapi oleh NPC (Non Player Character), metode ini hanya berfungsi pada Humanoids dengan Player yang sesuai.Ini karena objek Backpack diperlukan untuk membesarkan yang tidak dilengkapi Tool ke.

Lihat juga:


Memberikan nilai

()

Contoh Kode

The following sample will bind the U key to unequip any Tool|Tools the Player currently has equipped.

To use this sample, place it inside a LocalScript within StarterPlayerScripts|StarterPlayer.StarterPlayerScripts.

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

()
Hasil

Metode penyerahan ini membuat penampilan karakter sesuai dengan yang diberikan dalam HumanoidDescription .Salinan dari yang dilewati HumanoidDescription disimpan sebagai HumanoidDescription untuk Humanoid .

Metode ini dioptimalkan dengan membuat asumsi bahwa hanya metode ini yang digunakan untuk mengubah penampilan karakter, dan tidak ada perubahan yang dilakukan melalui cara lain antara panggilan.Jika perubahan dilakukan pada karakter antara panggilan, maka metode ini mungkin tidak membuat karakter mencerminkan yang dikirimkan dalam HumanoidDescription dengan akurat.Jika Anda ingin menggunakan metode ini bersama-sama dengan cara lain untuk memperbarui karakter, Humanoid:ApplyDescriptionReset() akan selalu memastikan karakter mencerminkan yang dikirimkan di HumanoidDescription .

Lihat Juga

Parameter

humanoidDescription: HumanoidDescription

Instansi HumanoidDescription yang ingin Anda atur untuk mencocokkankarakter.

Nilai Default: ""
assetTypeVerification: Enum.AssetTypeVerification
Nilai Default: "Default"

Memberikan nilai

()

ApplyDescriptionReset

()
Hasil

Metode penyerahan ini membuat penampilan karakter sesuai dengan yang dikirimkan dalam HumanoidDescription , bahkan setelah perubahan eksternal.Salinan dari yang dilewati HumanoidDescription disimpan sebagai HumanoidDescription untuk Humanoid .

Metode ini akan selalu memastikan karakter mencerminkan yang dilewati di HumanoidDescription , bahkan jika perubahan telah dilakukan pada karakter yang tidak menggunakan sistem HumanoidDescription (misalnya tidak menggunakan ApplyDescriptionReset() atau ApplyDescription() ).Ini bertentangan dengan ApplyDescription() yang dioptimalkan dan dapat salah menerapkan HumanoidDescription jika karakter telah diubah dengan cara lain selain melalui sistem HumanoidDescription .

Parameter

humanoidDescription: HumanoidDescription

Instansi HumanoidDescription yang ingin Anda atur karakternya untuk cocok.

Nilai Default: ""
assetTypeVerification: Enum.AssetTypeVerification
Nilai Default: "Default"

Memberikan nilai

()

PlayEmote

Hasil

Jika emote tidak dapat diputar karena emoteName tidak ditemukan di HumanoidDescription, metode ini akan memberikan kesalahan.Metode akan kembali benar untuk menunjukkan bahwa emote berhasil dimainkan.

Parameter

emoteName: string

nama emote untuk dimainkan.

Nilai Default: ""

Memberikan nilai

berhasil dimainkan.

Acara

ApplyDescriptionFinished

Parameter

description: HumanoidDescription

Climbing

Melepaskan api saat kecepatan di mana Humanoid naik berubah.

Humanoids dapat naik tangga yang terbuat dari Parts atau TrussParts .

Humanoids naik di 70% dari Humanoid.WalkSpeed mereka.

Acara ini tidak akan selalu terbakar dengan kecepatan 0 saat Humanoid berhenti naik.

Lihat juga:

Parameter

speed: number

Kecepatan di mana Humanoid saat ini naik.


Contoh Kode

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

Peristiwa ini terjadi ketika Humanoid mati, biasanya ketika Humanoid.Health mencapai 0.Ini bisa disebabkan oleh terputusnya kepala mereka dari Humanoid.Torso , atau langsung menetapkan properti kesehatan.

Peristiwa ini hanya terjadi jika Humanoid adalah keturunan dari Workspace . Jika Dead``Enum.HumanoidStateType dinonaktifkan, tidak akan terjadi.


Contoh Kode

The code below would print the player's name, followed by "has died!", whenever a player dies. For example, if the player was named "Shedletsky", "Shedletsky has died!" would be printed to the output when they died.

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

Peristiwa FallingDown terjadi ketika Humanoid memasuki dan meninggalkan FallingDown``Enum.HumanoidStateType.

The Humanoid akan memasuki status GettingUp setelah FallingDown status diaktifkan.Ketika ini terjadi, acara ini akan menembak dengan nilai aktif aktif , dan akan menembak dengan nilai aktif aktif dari true .

Parameter

active: boolean

Menggambarkan apakah Humanoid memasuki atau meninggalkan FallingDown``Enum.HumanoidStateType .


FreeFalling

Acara ini terjadi ketika Humanoid memasuki atau meninggalkan Freefall``Enum.HumanoidStateType .

Parameter aktif mewakili apakah memasuki atau meninggalkan negara .

Meskipun status Freefall umumnya berakhir ketika Humanoid mencapai tanah, acara ini dapat terbakar dengan aktif sama dengan false jika status diubah saat Humanoid jatuh.Untuk alasan ini, Anda harus menggunakan Humanoid.StateChanged dan mendengarkan negara Landed untuk bekerja ketika sebuah Humanoid telah mendarat.

Parameter

active: boolean

Apakah Humanoid memasuki atau meninggalkan Freefall``Enum.HumanoidStateType.


GettingUp

Peristiwa ini terjadi ketika Humanoid memasuki atau meninggalkan negara Enum.HumanoidStateType.GettingUp , negara transisi yang diaktifkan tidak lama setelah Humanoid memasuki negara FallingDown (3 detik) atau Ragdoll (1 detik) negara.

Ketika sebuah Humanoid berusaha untuk bangkit kembali, acara ini akan terlebih dahulu menembak dengan parameter active dari true sebelum sebentar setelah menembak lagi dengan parameter active dari false.

Untuk memaksa Humanoid jatuh, gunakan fungsi Humanoid:ChangeState() dengan Enum.HumanoidStateType.FallingDown .

Parameter

active: boolean

Apakah Humanoid memasuki atau meninggalkan GettingUp``Enum.HumanoidStateType.


HealthChanged

Peristiwa ini terjadi ketika perubahan Humanoid.Health berubah.Namun, itu tidak akan menembak jika kesehatan meningkat dari nilai yang sama atau lebih besar dari Humanoid.MaxHealth.

Ketika Humanoid.Health mencapai nol, Humanoid akan mati dan peristiwa Humanoid.Died akan terjadi. Peristiwa ini akan terjadi dengan nilai nol.

Parameter

health: number

Nilai baru dari Humanoid.Health .


Contoh Kode

The following example determines the change in health, printing it to the output. It will only work in a LocalScript.

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)

This code sample allows you to create a simple color-changing health bar using two nested Frames. Paste this into a LocalScript on the inner frame.

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

Acara ini terjadi ketika Humanoid memasuki dan meninggalkan Jumping``Enum.HumanoidStateType .

Ketika lompatan Humanoid terjadi, acara ini terbakar dengan parameter active dari true sebelum sebentar kemudian menembak lagi dengan parameter active dari false.Tembakan kedua ini tidak sesuai dengan pendaratan Humanoid ; untuk itu, dengarkan Landed``Enum.HumanoidStateType menggunakan Humanoid.StateChanged .

Anda dapat menonaktifkan lompatan menggunakan fungsi Humanoid:SetStateEnabled() .

Parameter

active: boolean

Apakah Humanoid memasuki atau meninggalkan Jumping``Enum.HumanoidStateType.


MoveToFinished

Peristiwa ini terjadi ketika Humanoid selesai berjalan ke tujuan yang dideklarasikan oleh Humanoid.WalkToPoint dan Humanoid.WalkToPart properti.

Properti Humanoid.WalkToPoint dan Humanoid.WalkToPart dapat ditetapkan secara individual, atau menggunakan fungsi Humanoid:MoveTo().

Jika Humanoid mencapai tujuannya dalam 8 detik, acara ini akan kembali dengan tercapai sebagai benar.Jika tujuan tidak tercapai dalam waktu 8 detik, Humanoid akan berhenti berjalan dan tercapai akan menjadi salah.Waktu habis ini dapat diatur ulang dengan memanggil Humanoid:MoveTo() lagi dalam periode batas waktu.

Parameter

reached: boolean

Sebuah boolean yang menunjukkan apakah Humanoid tercapai adalah gol.Benar jika Humanoid mencapai tujuannya, salah jika berjalan terputus sebelum tujuan dapat dicapai.


Contoh Kode

This code sample includes a function that avoids the 8 second timeout on Humanoid:MoveTo() by calling Humanoid:MoveTo() again before the timeout elapses. It also includes an optional andThen parameter where developers can pass a function to be called when the humanoid reaches its destination.

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

Acara ini terjadi ketika Humanoid memasuki atau meninggalkan PlatformStanding``Enum.HumanoidStateType .

Sementara Humanoid berada di negara PlatformStanding , properti Humanoid.PlatformStand akan menjadi benar .

Sementara Humanoid.PlatformStand diatur ke benar , Humanoid tidak akan dapat bergerak. Untuk informasi lebih lanjut, silakan lihat halaman untuk Humanoid.PlatformStand .

PlatformStand Enum.HumanoidStateType terkait dengan bagian yang sekarang dinonaktifkan Platform . Meskipun demikian, masih bisa digunakan oleh pengembang.

Parameter

active: boolean

Apakah Humanoid memasuki atau meninggalkan PlatformStanding``Enum.HumanoidStateType.


Ragdoll

Acara ini terjadi ketika Humanoid memasuki atau meninggalkan Ragdoll``Enum.HumanoidStateType .

Parameter active akan memiliki nilai true atau false untuk menunjukkan masuk atau keluar.

Gunakan Humanoid:SetStateEnabled() untuk menonaktifkan status GettingUp untuk tetap berada di negara Ragdoll.

Lihat juga:

Parameter

active: boolean

Apakah Humanoid memasuki atau meninggalkan Ragdoll``Enum.HumanoidStateType.


Running

Peristiwa ini terjadi ketika kecepatan di mana Humanoid berjalan perubahan.

Saat menjalankan Humanoids penutup, rata-rata, Humanoid.WalkSpeed mereka di stud per detik.

Ketika Humanoid berhenti menjalankan acara ini akan menembak dengan kecepatan 0.

Lihat juga:

Parameter

speed: number

Kecepatan di mana Humanoid berjalan.


Contoh Kode

Demonstrates connecting to the Humanoid.Running event. The event is connected to every player's humanoid that joins.

The function connected will print whether or not the humanoid is running based on the speed.

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

Peristiwa ini terjadi ketika sebuah Humanoid duduk atau bangun dari sebuah Seat atau VehicleSeat .

Ketika karakter berhubungan dengan kursi, mereka dilampirkan ke kursi dan animasi duduk dimainkan.Untuk informasi lebih lanjut tentang ini, lihat halaman Seat.

  • Jika karakter duduk, parameter active akan menjadi benar dan currentSeatPart akan menjadi tempat duduk yang saat ini mereka duduki.
  • Jika karakter bangkit dari kursi, parameter active akan menjadi false dan currentSeatPart akan menjadi nil .

Lihat juga:

  • Humanoid.Sit , yang menunjukkan apakah Humanoid saat ini duduk
  • Humanoid.SeatPart , yang menunjukkan kursi di mana Humanoid saat ini duduk, jika ada.

Parameter

active: boolean

Benar jika Humanoid duduk.

currentSeatPart: BasePart

Kursi yang Humanoid duduk jika duduk.


Contoh Kode

This code sample demonstrates when the local player's Character sits down or stands up. It should be placed inside a LocalScript within StarterCharacterScripts in order to run when the player's character spawns in.

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

Peristiwa ini terjadi ketika status Humanoid berubah.

Karena tidak ada status humanoid "tidak aktif", Anda harus menggunakan acara Humanoid.Running atau mendengarkan bagian RootPart dari Velocity untuk bekerja saat Humanoid berdiri diam.

Lihat Juga

Parameter

ketikstatus sebelumnya dari humanoid.

ketikstatus saat ini humanoid.


Contoh Kode

Emits particles from the local player's Player.Character when they jump. To try this code sample, place it inside a LocalScript parented to StarterCharacterScripts.

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)

The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.

To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.

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

Acara StateEnableChanged diaktifkan saat Humanoid:SetStateEnabled() dipanggil di Humanoid.

Parameter termasuk Enum.HumanoidStateType dalam pertanyaan bersama dengan bool yang menunjukkan apakah status ini sekarang diaktifkan.

Lihat juga:

Parameter

The Enum.HumanoidStateType untuk yang statusnya diaktifkan telah diubah.

isEnabled: boolean

Benar jika negara sekarang diaktifkan.


Contoh Kode

When a humanoid state changes for the Players.LocalPlayer, the code below prints whether the state has been enabled or disabled.

This code should work as expected when placed in a LocalScript.

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

Peristiwa ini tidak terbakar saat Humanoid melaju dan tidak boleh digunakan oleh pengembang

Acara ini dinyalakan ketika Humanoid memasuki atau meninggalkan StrafingNoPhysics``Enum.HumanoidStateType .

Ketika Humanoid memasuki negara StrafingNoPhysics ini peristiwa akan terjadi dengan parameter aktif dari benar .Acara akan menembak lagi dengan aktif sama dengan palsu ketika Humanoid meninggalkan negara StrafingNoPhysics.

Peristiwa ini terkait dengan status StrafingNoPhysics``Class.Humanoid dan tidak meledak saat tidak berapi ketika Humanoid bergerak paralel dengan arah yang dihadapinya.Status ini saat ini tidak digunakan, jika diatur menggunakan Humanoid:ChangeState() status akan kembali ke RunningNoPhysics .

Parameter

active: boolean

Apakah Humanoid memasuki atau meninggalkan StrafingNoPhysics``Enum.HumanoidStateType.


Swimming

Peristiwa ini terjadi ketika kecepatan di mana Humanoid berenang di air Terrain berubah.

Humanoids berenang pada 87,5% dari Humanoid.WalkSpeed mereka.

Acara ini tidak akan selalu terbakar dengan kecepatan 0 saat Humanoid berhenti berenang.

Lihat juga:

Parameter

speed: number

Kecepatan yang Humanoid saat ini berenang.


Touched

Peristiwa ini terjadi ketika salah satu anggota tubuh humanoid berhubungan dengan yang lain BasePart.The BasePart yang disentuh oleh anggota tubuh, bersama dengan anggota tubuh itu sendiri, diberikan.

Acara ini tidak akan terbakar ketika anggota tubuh yang terkait dengan Humanoid masuk kontak dengan diri mereka sendiri.

Pengganti

Meskipun acara Humanoid.Touched berguna, Anda harus mempertimbangkan apakah ada alternatif yang lebih sesuai dengan kebutuhan Anda.

Catatan

Parameter

touchingPart: BasePart

The BasePart the Humanoid telah berhubungan dengan.

humanoidPart: BasePart

Anggota tubuh dari Humanoid yang telah disentuh.


Contoh Kode

When placed inside a Player.Character model this code will give a player the 'Midas touch'. Everything their character touches will change to gold.

When the Humanoid dies, this change is undone and the golden BasePart|BaseParts are returned to their original state.

To test this out, place this code inside a Script and place it in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.

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)