Humanoid
*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.
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
Mengatur apakah karakter akan secara otomatis melompat saat mereka menabrak penghalang sebagai pemain di perangkat seluler.
AutoRotate menetapkan apakah Humanoid akan berputar secara otomatis ke arah yang mereka bergerak.
Saat diaktifkan, AutomaticScalingEnabled menyebabkan ukuran karakter berubah sebagai respons terhadap nilai skala anak manusia berubah.
Menentukan apakah persyaratan humanoid pecah saat berada di negara Enum.HumanoidStateType.Dead .
Offset yang diterapkan ke posisi subjek Kamera saat KameraSubjek diatur ke Humanoid ini.
Mengontrol perilaku jarak nama dan tampilan kesehatan humanoid.
Mengatur teks Humanoid, ditampilkan di atas kepala mereka.
Menggambarkan Enum.Material yang saat ini berdiri di atas Humanoid .Jika Humanoid tidak berdiri di atas apa pun, nilai properti ini akan menjadi Udara .
Menggambarkan kesehatan saat ini dari Humanoid pada jarak [0, Humanoid.MaxHealth].
Digunakan bersama dengan properti DisplayDistanceType untuk mengontrol jarak dari mana bar kesehatan manusia bisa dilihat.
Kontrol ketika bilah kesehatan humanoid diizinkan ditampilkan.
Menentukan jarak dari tanah yang Humanoid.RootPart seharusnya.
Jika true , lompatan Humanoid melompat dengan kekuatan ke atas.
Memberikan kontrol atas ketinggian yang Humanoid lompat ke.
Menentukan berapa banyak kekuatan ke atas yang diterapkan ke Humanoid saat melompat.
Nilai maksimum dari humanoid Health .
Sudut kemiringan maksimum yang dapat dilalui oleh humanoid tanpa tergelincir.
Menggambarkan arah yang Humanoid berjalan di dalamnya.
Digunakan bersama dengan properti Humanoid.DisplayDistanceType untuk mengontrol jarak dari mana nama humanoid dapat dilihat.
Mengontrol apakah nama dan bilah kesehatan manusia bisa dilihat di balik dinding atau objek lain.
Menentukan apakah Humanoid saat ini berada di negara Enum.HumanoidStateType.PlatformStanding .
Memungkinkan pengembang untuk menonaktifkan perilaku di mana pemain Character|character meninggal jika Leher Motor6D dihapus atau terputus bahkan sesaat.
Menggambarkan apakah ini Humanoid menggunakan rig karakter lama R6, atau rig karakter baru R15.
Referensi ke objek HumanoidRootPart manusia.
Referensi ke kursi yang Humanoid saat ini duduk, jika ada.
Menggambarkan apakah Humanoid saat ini duduk.
Menggambarkan posisi 3D di mana Player mengontrol Humanoid terakhir diklik di dunia saat menggunakan Tool .
Menentukan apakah properti JumpHeight (salah) atau Humanoid.JumpPower (benar) digunakan.
Menggambarkan kecepatan gerakan maksimum humanoid dalam stud per detik.
Referensi ke bagian yang posisinya dicoba dijangkau oleh humanoid.
Posisi yang diusahakan oleh humanoid untuk dicapai, setelah panggilan ke Humanoid:MoveTo() dilakukan.
Metode
Menempelkan yang ditentukan Accessory ke orang tuanya humanoid.
Mengumpulkan pohon dari Motor6D persambungan bersama dengan menempelkan bersama-sama objek Attachment di karakter manusiaoid.
Atur Humanoid untuk masuk ke Enum.HumanoidStateType yang diberikan.
Kembalikan array dari Accessory objek yang saat ini dipakai oleh orang tuanya humanoid.
Kembalikan salinan cache humanoid HumanoidDescription yang menggambarkan penampilannya saat ini.
Kirimkan bagian tubuh ke metode ini (bagian tubuh harus menjadi saudara kembar dari Humanoid, dan anak dari Model) untuk mendapatkan Enum.BodyPartR15 dari Part.
Kembalikan enum Enum.Limb yang terkait dengan Part yang diberikan.
Kembalikan Enum.HumanoidStateType saat ini humanoid.
Kembalikan apakah Enum.HumanoidStateType diaktifkan untuk Humanoid .
Menyebabkan Humanoid berjalan ke arah yang diberikan.
Menyebabkan Humanoid untuk berjalan ke lokasi yang diberikan dengan mengatur properti Humanoid.WalkToPoint dan Humanoid.WalkToPart.
Menghapus semua objek Accessory yang dipakai oleh orang tua humanoid
Secara dinamis menggantikan bagian tubuh Humanoid dengan bagian yang berbeda.
Mengatur apakah suatu Enum.HumanoidStateType tertentu diaktifkan untuk Humanoid .
Turunkan Humanoid.Health dari Humanoid oleh jumlah yang diberikan ** jika tidak dilindungi oleh ForceField .
Menghapus perlengkapan apa pun Tool saat ini yang dilengkapi oleh Humanoid .
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Membuat penampilan karakter sesuai dengan yang dilewati di HumanoidDescription .
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):()
Membuat penampilan karakter sesuai dengan yang dilewati di HumanoidDescription , bahkan setelah perubahan eksternal.
Memainkan emote dan kembali jika berhasil dijalankan.
Acara
Melepaskan api saat kecepatan di mana Humanoid naik berubah.
Melepaskan api saat Humanoid mati.
Memicu ketika Humanoid memasuki atau meninggalkan FallingDown``Enum.HumanoidStateType.
Memicu ketika Humanoid memasuki atau meninggalkan Freefall``Enum.HumanoidStateType.
Memicu ketika Humanoid memasuki atau meninggalkan GettingUp``Enum.HumanoidStateType.
Melepaskan api saat Humanoid.Health perubahan (atau saat Humanoid.MaxHealth diatur).
Memicu ketika Humanoid memasuki dan meninggalkan Jumping``Enum.HumanoidStateType.
Melepaskan api saat Humanoid selesai berjalan ke tujuan yang dideklarasikan oleh Humanoid:MoveTo() .
Memicu ketika Humanoid memasuki atau meninggalkan PlatformStanding``Enum.HumanoidStateType.
Memicu ketika Humanoid memasuki atau meninggalkan Ragdoll``Enum.HumanoidStateType.
Melepaskan api saat kecepatan di mana Humanoid berjalan berubah.
Ditembak ketika sebuah Humanoid duduk di dalam Seat atau VehicleSeat atau bangun.
Melepaskan api saat status Humanoid berubah.
Melepaskan api saat Humanoid:SetStateEnabled() dipanggil di Humanoid.
Memicu ketika Humanoid memasuki atau meninggalkan StrafingNoPhysics``Enum.HumanoidStateType.
Memicu ketika kecepatan di mana Humanoid berenang di air Terrain berubah.
Melepaskan api ketika salah satu anggota tubuh humanoid berhubungan dengan yang lain BasePart.
Properti
AutoJumpEnabled
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.
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
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.
local button = script.Parent
local enabled = true
local ON_COLOR = BrickColor.Green()
local OFF_COLOR = BrickColor.Red()
local function touchButton(humanoid)
if enabled then
enabled = false
button.BrickColor = OFF_COLOR
if humanoid.AutoRotate then
print(humanoid:GetFullName() .. " can no longer auto-rotate!")
humanoid.AutoRotate = false
else
print(humanoid:GetFullName() .. " can now auto-rotate!")
humanoid.AutoRotate = true
end
task.wait(1)
button.BrickColor = ON_COLOR
enabled = true
end
end
local function onTouched(hit)
local char = hit:FindFirstAncestorWhichIsA("Model")
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
touchButton(humanoid)
end
end
end
button.Touched:Connect(onTouched)
button.BrickColor = ON_COLOR
AutomaticScalingEnabled
Humanoid 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
Menentukan apakah persyaratan humanoid pecah saat berada di negara Enum.HumanoidStateType.Dead . Nilai default adalah benar.
CameraOffset
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.
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
DisplayDistanceType
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.
local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
DisplayName
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
FloorMaterial
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
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
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.
HealthDisplayType
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
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
Jump
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
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
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
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
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.
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
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.
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
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
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.
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
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
Memungkinkan pengembang untuk menonaktifkan perilaku di mana pemain Character|character meninggal jika Leher Motor6D dihapus atau terputus bahkan sesaat.Properti ini default ke benar.
RigType
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
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
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:
- Untuk bool yang menggambarkan apakah Humanoid saat ini duduk atau tidak, lihat Humanoid.Sit
Sit
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:
- The Seat atau VehicleSeat the Humanoid duduk di atas bisa diperoleh menggunakan properti Humanoid.SeatPart
- Dimungkinkan untuk mendeteksi ketika Humanoid duduk dengan terhubung ke acara Humanoid.Seated.
TargetPoint
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
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
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.
WalkToPart
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
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.
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
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.
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.
local function createJoint(jointName, att0, att1)
local part0, part1 = att0.Parent, att1.Parent
local newMotor = part1:FindFirstChild(jointName)
if not (newMotor and newMotor:IsA("Motor6D")) then
newMotor = Instance.new("Motor6D")
end
newMotor.Name = jointName
newMotor.Part0 = part0
newMotor.Part1 = part1
newMotor.C0 = att0.CFrame
newMotor.C1 = att1.CFrame
newMotor.Parent = part1
end
local function buildJointsFromAttachments(part, characterParts)
if not part then
return
end
-- first, loop thru all of the part's children to find attachments
for _, attachment in pairs(part:GetChildren()) do
if attachment:IsA("Attachment") then
-- only do joint build from "RigAttachments"
local attachmentName = attachment.Name
local findPos = attachmentName:find("RigAttachment")
if findPos then
-- also don't make double joints (there is the same named
-- rigattachment under two parts)
local jointName = attachmentName:sub(1, findPos - 1)
if not part:FindFirstChild(jointName) then
-- try to find other part with same rig attachment name
for _, characterPart in pairs(characterParts) do
if part ~= characterPart then
local matchingAttachment = characterPart:FindFirstChild(attachmentName)
if matchingAttachment and matchingAttachment:IsA("Attachment") then
createJoint(jointName, attachment, matchingAttachment)
buildJointsFromAttachments(characterPart, characterParts)
break
end
end
end
end
end
end
end
end
local function buildRigFromAttachments(humanoid)
local rootPart = humanoid.RootPart
assert(rootPart, "Humanoid has no HumanoidRootPart.")
local characterParts = {}
for _, descendant in ipairs(humanoid.Parent:GetDescendants()) do
if descendant:IsA("BasePart") then
table.insert(characterParts, descendant)
end
end
buildJointsFromAttachments(rootPart, characterParts)
end
local humanoid = script.Parent:WaitForChild("Humanoid")
buildRigFromAttachments(humanoid)
A script that generates an R15 character from scratch using a package's assetId.
local AssetService = game:GetService("AssetService")
local InsertService = game:GetService("InsertService")
local MarketplaceService = game:GetService("MarketplaceService")
local PACKAGE_ASSET_ID = 193700907 -- Circuit Breaker
local function addAttachment(part, name, position, orientation)
local attachment = Instance.new("Attachment")
attachment.Name = name
attachment.Parent = part
if position then
attachment.Position = position
end
if orientation then
attachment.Orientation = orientation
end
return attachment
end
local function createBaseCharacter()
local character = Instance.new("Model")
local humanoid = Instance.new("Humanoid")
humanoid.Parent = character
local rootPart = Instance.new("Part")
rootPart.Name = "HumanoidRootPart"
rootPart.Size = Vector3.new(2, 2, 1)
rootPart.Transparency = 1
rootPart.Parent = character
addAttachment(rootPart, "RootRigAttachment")
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(2, 1, 1)
head.Parent = character
local headMesh = Instance.new("SpecialMesh")
headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
headMesh.MeshType = Enum.MeshType.Head
headMesh.Parent = head
local face = Instance.new("Decal")
face.Name = "face"
face.Texture = "rbxasset://textures/face.png"
face.Parent = head
addAttachment(head, "FaceCenterAttachment")
addAttachment(head, "FaceFrontAttachment", Vector3.new(0, 0, -0.6))
addAttachment(head, "HairAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "HatAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "NeckRigAttachment", Vector3.new(0, -0.5, 0))
return character, humanoid
end
local function createR15Package(packageAssetId)
local packageAssetInfo = MarketplaceService:GetProductInfo(packageAssetId)
local character, humanoid = createBaseCharacter()
character.Name = packageAssetInfo.Name
local assetIds = AssetService:GetAssetIdsForPackage(packageAssetId)
for _, assetId in pairs(assetIds) do
local limb = InsertService:LoadAsset(assetId)
local r15 = limb:FindFirstChild("R15")
if r15 then
for _, part in pairs(r15:GetChildren()) do
part.Parent = character
end
else
for _, child in pairs(limb:GetChildren()) do
child.Parent = character
end
end
end
humanoid:BuildRigFromAttachments()
return character
end
local r15Package = createR15Package(PACKAGE_ASSET_ID)
r15Package.Parent = workspace
ChangeState
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:
- Mengatur status ke Enum.HumanoidStateType.Swimming ketika humanoid tidak berada di dalam air akan menyebabkan hal itu secara otomatis diatur ke Enum.HumanoidStateType.GettingUp .
- Karena tidak digunakan, mengatur status ke Enum.HumanoidStateType.PlatformStanding akan menyebabkan status humanoid secara otomatis diatur ke Enum.HumanoidStateType.Running .
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.
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.
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 thenlocal humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal tool = Workspace:FindFirstChild("Tool")if tool thenhumanoid:EquipTool(tool)endendend
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:
- Untuk melepaskan alat, gunakan Humanoid:UnequipTools()
Parameter
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
Contoh Kode
This code sample will wait for accessories to fully load, print out how many there are, and then destroy them all.
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
GetAppliedDescription
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
- Players:GetHumanoidDescriptionFromUserId() yang men返ikan HumanoidDescription yang menggambarkan avatar untuk pengguna yang diberikan.
- Players:GetHumanoidDescriptionFromOutfitId() yang men返ikan HumanoidDescription parameter yang diinisialisasi untuk cocok dengan aset pakaian sisi server yang ditransmisikan
- Player:LoadCharacterWithHumanoidDescription() yang menghasilkan pemain dengan tampilan dari yang dikirimkan di HumanoidDescription .
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
Bagian yang ditentukan diperiksa untuk melihat apakah itu adalah bagian tubuh R15.
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 R15print(humanoid:GetLimb(character.LeftUpperLeg)) -- Enum.Limb.LeftLegprint(humanoid:GetLimb(character.LeftLowerLeg)) -- Enum.Limb.LeftLegprint(humanoid:GetLimb(character.LeftFoot)) -- Enum.Limb.LeftLeg-- Untuk R6print(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
Memberikan nilai
Contoh Kode
Put this in a LocalScript. The output will vary based on if the humanoid is R6 or R15.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end
GetState
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
The current Enum.HumanoidStateType dari the Humanoid .
Contoh Kode
This code, when placed inside a LocalScript in StarterPlayer.StarterCharacterScripts, will allow the player's character to perform a double jump.
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
GetStateEnabled
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:
- Untuk acara yang menyala saat negara humanoid diaktifkan atau dinonaktifkan, lihat Humanoid.StateEnabledChanged
- Untuk mengaktifkan atau menonaktifkan status Humanoid gunakan Humanoid:SetStateEnabled()
Parameter
Yang diberikan Enum.HumanoidStateType .
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().
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
Arah untuk berjalan masuk.
Atur ke true jika parameter moveDirection harus diambil sebagai relatif terhadap CurrentCamera .
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.
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.
Parameter
Posisi untuk mengatur Humanoid.WalkToPoint ke.
The BasePart untuk mengatur Humanoid.WalkToPart untuk.
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.
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.
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.
The Class.Part``Class.Instance yang akan diberikan kepada karakter.
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.
true jika state harus diaktifkan, false jika state harus dinonaktifkan.
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.
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
Kerusakan, atau jumlah yang harus dikurangkan dari Humanoid.Health.
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.
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:
- Untuk sebagai gantinya melengkapi Tool , gunakan Humanoid:EquipTool()
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.
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
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
- Humanoid:GetAppliedDescription() yang kembalikan HumanoidDescription saat ini yang diterapkan pada humanoid.
- Players:GetHumanoidDescriptionFromUserId() yang men返ikan HumanoidDescription yang menggambarkan avatar untuk pengguna yang diberikan.
- Players:GetHumanoidDescriptionFromOutfitId() yang men返ikan HumanoidDescription parameter yang diinisialisasi untuk cocok dengan aset pakaian sisi server yang ditransmisikan
- Player:LoadCharacterWithHumanoidDescription() yang menghasilkan pemain dengan tampilan dari yang dikirimkan di HumanoidDescription .
Parameter
Instansi HumanoidDescription yang ingin Anda atur untuk mencocokkankarakter.
Memberikan nilai
ApplyDescriptionReset
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
Instansi HumanoidDescription yang ingin Anda atur karakternya untuk cocok.
Memberikan nilai
PlayEmote
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
nama emote untuk dimainkan.
Memberikan nilai
berhasil dimainkan.
Acara
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:
- Untuk berenang dan berlari lihat peristiwa Humanoid.Swimming dan Humanoid.Running
- Anda juga dapat mendeteksi kapan sebuah Humanoid naik menggunakan acara Humanoid.StateChanged
- Anda dapat menonaktifkan pendakian menggunakan fungsi Humanoid:SetStateEnabled()
Parameter
Contoh Kode
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.
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
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
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
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
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.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local currentHealth = humanoid.Health
local function onHealthChanged(health)
local change = math.abs(currentHealth - health)
print("The humanoid's health", (currentHealth > health and "decreased by" or "increased by"), change)
currentHealth = health
end
humanoid.HealthChanged:Connect(onHealthChanged)
end
player.CharacterAdded:Connect(onCharacterAdded)
This code sample allows you to create a simple color-changing health bar using two nested Frames. Paste this into a LocalScript on the inner frame.
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
Jumping
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
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
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.
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
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:
- Humanoid.FallingDown untuk acara Humanoid yang terhubung dengan status FallingDown, yang berperilaku serupa dengan Ragdoll
Parameter
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:
- Untuk berenang dan panjat lihat peristiwa Humanoid.Swimming dan Humanoid.Climbing
- Anda juga dapat mendeteksi kapan Humanoid berjalan menggunakan acara Humanoid.StateChanged
Parameter
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.
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
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.
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
- Humanoid:GetState() dan Humanoid:ChangeState() untuk mendapatkan dan mengatur status.
- Humanoid:SetStateEnabled() untuk mengaktifkan dan menonaktifkan negara tertentu.
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.
local character = script.Parent
local primaryPart = character.PrimaryPart
-- create particles
local particles = Instance.new("ParticleEmitter")
particles.Size = NumberSequence.new(1)
particles.Transparency = NumberSequence.new(0, 1)
particles.Acceleration = Vector3.new(0, -10, 0)
particles.Lifetime = NumberRange.new(1)
particles.Rate = 20
particles.EmissionDirection = Enum.NormalId.Back
particles.Enabled = false
particles.Parent = primaryPart
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
-- listen to humanoid state
local function onStateChanged(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
particles.Enabled = true
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
particles.Enabled = false
end
end
end
humanoid.StateChanged:Connect(onStateChanged)
The following sample will require a one second cooldown after a Humanoid has landed before it is able to jump again.
To try this sample, place it inside a LocalScript in StarterCharacterScripts|StarterPlayer.StarterCharacterScripts.
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
StateEnabledChanged
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:
- Untuk menemukan apakah suatu negara saat ini diaktifkan, gunakan Humanoid:GetStateEnabled()
- Untuk mendengarkan perubahan status Humanoid gunakan Humanoid.StateChanged
Parameter
The Enum.HumanoidStateType untuk yang statusnya diaktifkan telah diubah.
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.
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
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:
- Untuk berlari dan naik gunung lihat peristiwa Humanoid.Running dan Humanoid.Climbing
- Anda juga dapat mendeteksi kapan Humanoid berenang menggunakan acara Humanoid.StateChanged
- Anda dapat menonaktifkan berenang menggunakan fungsi Humanoid:SetStateEnabled()
Parameter
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.
- Dalam kebanyakan kasus, disarankan untuk menghubungkan acara BasePart.Touched untuk BaseParts minat, karena acara Humanoid.Touched akan terus menembak saat manusia bergerak.Sebagai contoh, dalam gamedodgeball, akan lebih praktis untuk menghubungkan acara Touched untuk bola daripada menggunakan Humanoid.Touched .
- Saat mencoba bekerja ketika Humanoid telah mendarat di tanah, acara Humanoid.StateChanged lebih cocok.Alternatifnya, Anda dapat memeriksa Humanoid.FloorMaterial untuk melihat apakah humanoid berdiri di atas bahan non-udara.
Catatan
- Menghubungkan ke acara ini akan menyebabkan TouchTransmitter untuk dibuat di setiap anggota tubuh.
- Tidak ada saat ini yang setara dengan BasePart.TouchEnded untuk Humanoids .
Parameter
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.
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)