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.

The Humanoid adalah objek khusus yang memberi model kemampuan untuk berjalan secara fisik di sekitar dan berinter

R6

  • Rig karakter dasar yang menggunakan 6 bagian untuk anggota.
  • Bagian Head harus dipasang ke bagian bernama Torso, atau Humanoid akan mati secara instan.
  • BodyPart tampaknya diterapkan menggunakan objek CharacterMesh .
  • Beberapa properti, seperti Humanoid.LeftLeg dan Humanoid.RightLeg, hanya bekerja dengan R6.

R15

  • Lebih kompleks dari R6, tetapi juga jauh lebih fleksibel dan kuat.
  • Menggunakan 15 bagian untuk anggota.
  • Bagian Head harus dipasang ke bagian bernama UpperTorso atau Humanoid akan mati secara instan.
  • Penampilan BodyPart harus dipersiapkan secara langsung.
  • Dapat diubah secara dinamis dengan menggunakan objek khusus NumberValue yang dapat diakses di dalam Humanoid.
  • The Humanoid akan secara otomatis membuat Vector3Value objek bernama OriginalSize di setiap lengan.
  • Jika NumberValue adalah anak dalam Humanoid dan bernama salah satu dari mengikuti, itu akan digunakan untuk mengontrol fungsionalitas skaliting:
    • Skala Kedalaman Tubuh
    • Skala Tinggi Badan
    • Skala Lebar Tubuh
    • Skala Kepala

Contoh Kode

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 menentukan apakah akan mencoba untuk secara otomatis melompat atas rintangan yang itu berjalan ke arahnya.

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

  • Model karakter Humanoid adalah Player.Character dari Class.Player
  • Pemain yang dimaksud menggunakan kendalisentuh.

Ketika karakter pemain muncul, nilai prop性 cocok dengan prop pemain Player.AutoJumpEnabled - yang kemudian cocok dengan prop StarterPlayer.AutoJumpEnabled.

Contoh Kode

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 AutoRotate menjelaskan apakah atau tidak Humanoid akan secara otomatis berputar menghadap dalam arah yang mereka gerakkan. Saat diatur ke benar, model karakter akan secara bertahap berputar menghadap arah gerakan mereka saat Humanoid berjalan di sekitar. Saat diatur ke palsu, model karakter akan tetap diam dalam rotasi saat ini, kecuali jika diterapkan keputaran ke Akar HumanoidRoot .

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

Ketika property RotateType di set ke benar, rotasi jenis ini memiliki efek berikut pada rotasi Humanoid:


<tbody>
<tr>
<td>Relatif Gerakan</td>
<td />
<td />
</tr>
<tr>
<td>Relatif Kamera</td>
<td>Karakter akan berputar menghadap ke arah kamera.</td>
<td>Pemain memiliki kamera mereka fokus ke mode orang pertama, atau mereka berada dalam mode mode Lock-Shift.</td>
</tr>
</tbody>
Jenis RotasiPerilakuKonтеks

Contoh Kode

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

The Humanoid memiliki enam nilai skala anak termasuk BodyDepthScale, BodyHeightScale, BodyProportionScale, 2> BodyTypeScale2>, 5> HeadScale5>, dan mengubah ukuran setiap bagian dan aks

BreakJointsOnDeath

Baca Paralel

Menentukan apakah persyaratan joint pada manusia berubah ketika dalam Enum.HumanoidStateType.Dead state. Defaults ke true.

CameraOffset

Baca Paralel

プロパティ CameraOffset menentukan posisi subjek kamera ketika subjeknya Camera.CameraSubject diatur ke posisi ini Humanoid.

Offset diterapkan dalam objek-ruang, relatif terhadap orientasi dari Humanoid's Bagian Akar Manusia . Misalnya, OFFSET Datatype.Vector3 nilai dari 1> (0, 10, 0)1> OFFSETs kamera pemain ke 10 studs di atas kamera pemain.

Contoh Kode

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

DisplayDistanceType menghasilkan perilaku jarak dari nama dan tampilan kesehatan manusia. Elemen ini diatur menggunakan Enum.HumanoidDisplayDistanceType enum dengan tiga nilai yang tersedia, masing-masing dengan set peraturan mereka sendiri:

  • Ketika diatur ke Viewer, humanoid melihat nama/kesehatan dari humanoid lain dalam rentang NameDisplayDistance dan HealthDisplayDistance .
  • Ketika diatur ke Subject, humanoid mengambil kendali penuh atas nama dan kesehatan tampilannya melalui nilai NameDisplayDistance dan NameDisplayDistance nya.
  • Ketika diatur ke None, nama dan bar kesehatan manusia tidak muncul di bawah kondisi apa pun.

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

Contoh Kode

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 property yang menentukan tampilan nama Humanoid saat terlihat. Secara default, Humanoid baru akan memiliki nilai string kosong. Jika DisplayName adalah string kosong, tampilan nama Humanoid akan default ke nama orang tua.

Memuat Karakter Pemain

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

StarterCharacter dan StarterHumanoid

Ketika Humanoid bernama StarterHumanoid adalah orang tua dari

EvaluateStateMachine

Baca Paralel

FloorMaterial

Hanya Baca
Tidak Direplikasi
Baca Paralel

Ini adalah properti baca-hanya yang menggambarkan Enum.Material yang saat ini berdiri di atasnya. Ini bekerja dengan kedua Humanoid dan Parts voxel.

Sampel kode di bawah ini menunjukkan cara mendengarkan saat propinsi ini berubah menggunakan Object:GetPropertyChangedSignal() . Ketika bahan yang dibangun di atas berubah, itu akan mencetak pesan yang menunjukkan bahwa bahan baru dibangun di atasnya.


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

Kecuali

  • Ketika Humanoid tidak berdiri di atas lantai, nilai property ini akan diatur menjadi Air.
    • Ini terjadi karena propinsi tidak dapat memiliki nilai kosong.
    • Ini dapat menyebabkan beberapa kebingungan jika bagian memiliki bahan itu ditetapkan ke udara, meskipun dalam praktek, bagian tidak seharusnya menggunakan bahan itu di tempat pertama.
  • Model karakter Class.Humanoid harus dapat bertabrakan dengan lantai, atau tidak akan terdeteksi.

Health

Tidak Direplikasi
Baca Paralel

Propinsi ini mewakili kesehatan saat ini dari Humanoid.Nilai ini dibatasi antara 0 dan MaxHealth.Jika humanoid mati, nilai ini secara terus-menerus diatur ke 0.

Catat bahwa fungsi TakeDamage() dapat digunakan untuk mengurang dari Health alih-alih menetapkan propinsi secara langsung.

Regenerasi Kesehatan

Secara default, naskah pemulihan kesehatan pasif secara otomatis ditambahkan ke dalam humanoid. Ini menyebabkan karakter pemain non-死 yang meng regenerasi 1% dari MaxHealth setiap detik. Untuk menonaktifkan perilaku regenerasi ini, tambahkan naskah kosong Script bernama

Tampilan Bar Kesehatan

Ketika Health kurang dari MaxHealth, bar kesehatan ditampilkan dalam pengalaman. Perilaku tampilan bar kesehatan bergantung pada HealthDisplayDistance dan 1> Class.Humanoid.HealthDisplayType|Health

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

Kematian

Ketika nilai kesehatan karakter mencapai 0, Humanoid secara otomatis beralih ke Enum.HumanoidStateType.Dead negara. Di negara ini, Health dikunci ke 0; namun, tidak ada kesalahan atau peringatan untuk

HealthDisplayDistance

Baca Paralel

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

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

Baca Paralel

Item ini mengontrol ketika bar kesehatan humanoid diizinkan untuk ditampilkan. Secara default, item ini diatur menjadi Class.Humanoid.Health|Health

Catat bahwa properti ini berfungsi secara independen dari properti HealthDisplayDistance mana pun yang bertanggung jawab untuk membuat bar kesehatan menghilang pada jarak tertentu. Jika Humanoid.HealthDisplayType|HealthDisplayType

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

HipHeight

Baca Paralel

Mendeterminkan jarak (dalam stud) dari tanah di mana RootPart seharusnya berada ketika manusia berdiri. RigType mengubah cara berperilaku properti ini.

Untuk R15 rigs, ketinggian yang sesuai telah ditetapkan untuk menjamin ketinggian Class.Humanoid.RootPart|RootPart yang benar. Tinggi kaki tidak digunakan. Tinggi total dari manusia dapat dijelaskan dengan rumus berikut:


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

Untuk R6 rigs, HipHeight sebagai gantinya menggambarkanOffset relatif. Tinggi total dari humanoid dapat dijelaskan dalam formula berikut:


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

Jump

Tidak Direplikasi
Baca Paralel

Jika true , jumps Humanoid dengan kekuatan ke atas yang sama dengan nilai Humanoid.JumpPower atau ketinggian 1> Class.Humanoid.JumpHeight1>, tergantung pada nilai 4> Class.Humanoid.UseJumpPower4> .

JumpHeight

Baca Paralel

Menyediakan kontrol atas ketinggian sebuah Humanoid lompat, dalam stud.Nilai awal dari property ini ditentukan oleh nilai StarterPlayer.CharacterJumpHeight yang bernilai 7,2.

Meskipun menetapkan property ini ke 0 akan secara efektif mencegah humanoid melompat, disarankan untuk menonaktifkan melompat dengan menonaktifkan state Enum.HumanoidStateType.Jumping melalui Humanoid:SetStateEnabled() .

Properti ini hanya terlihat di jendela Properties jika Humanoid.UseJumpPower ditetapkan ke false , karena tidak akan relevan jika tidak (sebaliknya, 1> Class.Humanoid.JumpPower1> digunakan).

JumpPower

Baca Paralel

Menentukan berapa banyak kekuatan tertinggi diterapkan kepada Humanoid saat melompat.Nilai awal dari property ini ditentukan oleh nilai StarterPlayer.CharacterJumpPower yang bernilai 50 dan dibatasi antara 0 dan 1000.Catat bahwa lompat

Meskipun menetapkan property ini ke 0 akan secara efektif mencegah humanoid melompat, disarankan untuk menonaktifkan melompat dengan menonaktifkan state Enum.HumanoidStateType.Jumping melalui Humanoid:SetStateEnabled() .

Properti ini hanya terlihat di jendela Properties jika Humanoid.UseJumpPower ditetapkan ke true , karena tidak akan relevan jika tidak (sebaliknya, 1> Class.Humanoid.JumpHeight1> digunakan).

MaxHealth

Baca Paralel

Nilai maksimum dari seorang Health .

Nilai dari property ini digunakan bersama dengan property Health untuk menyesuaikan tampilan bar kesehatan default. Ketika propinsi humanoid's Health mencapai MaxHealth, bar kesehatannya m

MaxSlopeAngle

Baca Paralel

Properti ini menentukan sudut pendek maksimum yang dapat ditangani oleh manusia. Jika sudut pendeknya lebih besar dari sudut pendek MaxSlopeAngle, mereka akan menangis ke bawah.

Ketika karakter dibuat, nilai ini ditetapkan sesuai dengan nilai StarterPlayer.CharacterMaxSlopeAngle.

Nilai properti ini dibatasi ke nilai antara 0° dan 89°. Ini bertindak sebagai 89°, jadi humanoid dapat menaiki hampir setiap jalan yang mereka inginkan secara default.

Contoh Kode

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

PindahkanArah adalah property baca-hanya yang menggambarkan arah yang diambil oleh Humanoid , sebagai vektor unit atau vektor panjang nol. Arah dijelaskan dalam ruang dunia.

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

Contoh Kode

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 NamaDisplays距离 adalah angka yang digunakan bersama dengan properti Humanoid.DisplayDistanceType untuk mengontrol jarak dari mana nama manusia dapat dilihat.

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

NameOcclusion

Baca Paralel

Mengontrol apakah bar nama dan kesehatan manusia dapat dilihat di belakang dinding atau objek lain. Elemen ini adalah nilai Enum.NameOcclusion dan dapat dikonfigurasi untuk menyembunyikan semua nama, nama musuh, atau menonaktifkan occlusion sepenuhnya.

Dalam kasus di mana LocalPlayer tidak memiliki Humanoid yang terkait dengannya, property ini berlaku sebaliknya untuk subjek Humanoid .

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

Contoh Kode

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

Mengukur apakah Humanoid saat ini dalam keadaan Enum.HumanoidStateType.PlatformStanding . Ketika benar, Humanoid berada dalam keadaan di mana ia jatuh bebas dan tidak dapat bergerak. State ini bersama dengan duduk, kecuali bahwa melompat tidak melepaskan Humanoid dari state.

RequiresNeck

Baca Paralel

Memungkinkan pengembang untuk menonaktifkan perilaku di mana pemain Character|character mati jika Neck Motor6D dihapus atau terputus bahkan untuk saat yang sementara.プロパ티 ini bernilai benar.

Baca Paralel

RigType menggambarkan apakah Humanoid menggunakan rig karakter R6 warisan, atau rakasa karakter R15 yang lebih baru.

R6 rig menggunakan 6 yang terlihat Parts sementara R15 rig menggunakan 15 yang terlihat Parts . R15 rig memiliki lebih banyak join bersama daripada R6 rig, menjad mereka jauh lebih fleksibel saat animasi.

Catat bahwa jika property ini diatur secara tidak benar, Humanoid tidak akan berfungsi dengan benar. Misalnya, jika R15 humanoid's RigType di set ke R6, Class.Humanoid akan mat

RootPart

Hanya Baca
Tidak Direplikasi
Baca Paralel

Sebuah referensi ke objek HumanoidRootPart dari Humanoid yang mengendalikan gerakan manusia melalui dunia 3D. Bagian ini biasanya tidak terlihat.

Catat bahwa dalam kasus karakter pemain, RootPart sama dengan Model.PrimaryPart dari model Player.Character.

SeatPart

Hanya Baca
Tidak Direplikasi
Baca Paralel

SeatPart adalah referensi ke kursi yang duduk di sebuah Humanoid , jika ada.Nilai dari property ini dapat menjadi Seat , atau VehicleSeat . Ini akan menjadi 1> nol1> jika Humanoid tidak duduk di kursi saat ini.

Catatan:

Sit

Baca Paralel

Properti Sit adalah boeing yang menunjukkan apakah Humanoid saat ini duduk. Humanoids dapat dipaksa dalam keadaan duduk dengan tidak ada tabrakan di kaki-kakinya. Jika

Catatan:

  • Class.Humanoid dapat diperoleh dengan menggunakan property VehicleSeat atau Humanoid 1> Class.Humanoid1> duduk di atas dapat diperoleh dengan menggunakan 4> Class.Humanoid.SeatPart4>
  • Mungkin untuk mendeteksi ketika seorang Humanoid duduk dengan terhubung ke acara Humanoid.Seated.

TargetPoint

Baca Paralel

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

Item ini menggambarkan posisi 3D di ruang di mana Player mengendalikan ini Humanoid terakhir diklik dengan Tool yang dilengkapi.

Properti ini terutama digunakan oleh alat klasik untuk menentukan apa yang diincar oleh manusia saat mereka mengaktifkan alat. Jika Anda memberi NPC alat roket klasik, tetapkan TargetPoint mereka, dan kemudian panggil fungsi Class.Tool:Activate() alat, Anda dapat membuat NPC menembak roket ke titik target.

UseJumpPower

Baca Paralel

Ketika karakter muncul, nilai ini diatur sesuai dengan nilai StarterPlayer.CharacterUseJumpPower yang default menjadi benar.

Ketika Anda melompat, dengan set ini ke benar, nilai Humanoid.JumpHeight digunakan untuk menjamin lompatan manusia ke ketinggian itu. Dengan set ini ke benar, nilai Humanoid.JumpPower digunakan untuk menerapkan tekanan ke atas.

WalkSpeed

Baca Paralel

Properti ini menjelaskan seberapa cepat Humanoid dapat berjalan, dalam stud per detik. Ini bertindak sebagai nilai default dari StarterPlayer.CharacterWalkSpeed (16), yang berarti seorang karakter pemain dapat bergerak 16 stud ke arah mana pun setiap detik.

Catatan

  • Ketika diperiksa di perangkat seluler atau gamepad, seorang humanoid dapat berjalan lebih lambat dari Class.Humanoid.WalkSpeed nya jika tombol kontrol di gerakkan hanya dalam satu derajat perlahan dari pusat.
  • Anda dapat membekukan humanoid di tempatnya dengan menetapkan WalkSpeed ke 0; ini mencegah pemain kontrol untuk menggerakkannya melalui mekanisme gerakan default.
  • Skrip animasi default menyesuaikan animasi gerakan manusia berdasarkan kecepatan relatifnya 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 mencoba untuk mencapai. Propinsi ini biasanya ditetapkan ketika bagian dilewati sebagai argumen kedua dari fungsi Humanoid:MoveTo() Humanoid.

Ketika WalkToPart ditetapkan dan seorang manusia aktif mencoba mencapai bagian, itu akan terus memperbarui tujuan Vector3-nya untuk menjadi posisi bagian, plus Humanoid.WalkToPoint yang diterjemahkan dalam ruang objek relatif terhadap rotasi bagian.

Ini dapat dijelaskan dalam Lua sebagai:


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

Kecuali

  • Menetapkan nilai WalkToPart tidak cukup untuk membuat awal manusia setelah bagian.
  • Humanoid diminta untuk mulai mencoba mencapai tujuan saat nilai WalkToPoint diubah.
  • Ini mungkin berubah di masa depan.
  • Negara mencapai tujuan dari kondisi manusia akan berakhir setelah 8 detik jika tidak mencapai tujuan.
  • Ini dilakukan agar NPC tidak terjebak menunggu Humanoid.MoveToFinished untuk menembak.
  • Jika Anda tidak ingin ini terjadi, Anda harus berulang kali memanggil MoveTo sehingga waktu batas akan tetap diatur ulang.

WalkToPoint

Baca Paralel

WalkToPoint menjelaskan posisi 3D di ruang yang mana seorang manusia mencoba untuk mencapainya, setelah telah diminta untuk melakukannya oleh fungsi Humanoid:MoveTo() Humanoid.

Jika Humanoid.WalkToPart manusia diatur, maka tujuan ditentukan dengan mengubah WalkToPoint relatif ke posisi dan rotasi bagian. Jika WalkToPart tidak diatur, maka manusia akan mencoba mencapai posisi 3D yang ditentukan oleh WalkToPoint secara langsung.

Kecuali

  • Nilai WalkToPoint harus diubah menjadi nilai yang berbeda agar manusia mulai berjalan menuju ke sana.
  • Jika Anda ingin membuat jalan manusia ke 0,0,0 , Anda harus menggunakan fungsi MoveTo Humanoid.
  • Ini mungkin berubah di masa depan.
  • Negara mencapai tujuan dari kondisi manusia akan berakhir setelah 8 detik jika tidak mencapai tujuan.
  • Ini dilakukan agar NPC tidak terjebak menunggu Humanoid.MoveToFinished untuk menembak.
  • Jika Anda tidak ingin ini terjadi, Anda harus berulang kali memanggil MoveTo sehingga waktu batas akan tetap diatur ulang.

Contoh Kode

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

void

Metode ini menghubungkan Accessory yang ditentukan ke orang tuanya.

Ketika metode ini dianggil, Accessory ditambahkan ke karakter dengan mencari

Jika Attachment yang diperlukan tidak dapat ditemukan, maka Accessory akan tetap menjadi anak kandung dari orang dewasa tetapi akan terlepas.

Biasanya, jahitan aksesori dibuat di server, tetapi mereka dapat dibuat di klien di bawah beberapa kondisi. Dalam situasi ini, panggilan sisi klien untuk AddAccessory() mungkin tidak selalu menghasilkan perilaku yang diinginkan dan Anda dapat menggunakan

Parameter

accessory: Instance

Class.Accessory yang akan dipasang.


Memberikan nilai

void

Contoh Kode

[Humanoid] AddAccessory Example

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

BuildRigFromAttachments

void

Metode ini mengumpulkan pohon Motor6D jenjang untuk Humanoid . Motor6D jenjang diperlukan untuk memutar ulang 1> Class.Animation|Animasi1> .

Memulai dari humanoid's RootPart , metode ini mengumpulkan semua Attachments orang tua di bagian saat ini yang berakhir

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


Memberikan nilai

void

Contoh Kode

Lua Port of BuildRigFromAttachments

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

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

ChangeState

void

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

Silakan tinjau halaman Enum.HumanoidStateType untuk informasi lebih lanjut tentang negara-negara tertentu, karena beberapa memiliki nama yang tidak intuitif. Misalnya, Enum.HumanoidStateType.Running menggambarkan negara di mana kaki manusia berada di tanah, termasuk saat berdiri diam.

Karena perilaku default dari Humanoid, beberapa negara akan secara otomatis diubah setelah diatur. Misalnya:

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

Parameter

Class.Humanoid yang akan dilakukan.

Nilai Default: "None"

Memberikan nilai

void

Contoh Kode

Double Jump

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

EquipTool

void

Fungsi ini membuat Humanoid melengkapi Tool yang diberikan.

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


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

Ketika fungsi ini dipanggil, manusia akan secara otomatis melepaskan peralatan mana pun yang saat ini telah dilengkapi

Meskipun mereka akan dilengkapi, Tools untuk which Tool.RequiresHandle adalah Class.Tool.RequiresHandle yang tidak 2>Class.Tool.RequiresHandle2> akan berfungsi jika mereka tidak memiliki handle, terlepas dari apakah fungsi ini digunakan untuk melengkapi mereka atau tidak

Lihat juga:

Parameter

tool: Instance

The Tool untuk dilengkapi.


Memberikan nilai

void

GetAccessories

Fungsi ini mengembalikan sebuah array dari Accessory objek yang dikenakan orang dewasa saat ini. Semua objek Accessory ini akan diinclusi, terlepas dari apakah mereka terikat atau tidak.

Jika Humanoid tidak memiliki objek Accessory, maka array kosong akan dihasilkan.

Lihat juga Humanoid:AddAccessory() untuk menghubungkan anak Accessory ke orang tua.


Memberikan nilai

Sebuah matriks objek Accessory yang merupakan objek anak dari orang dewasa.

Contoh Kode

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

Fungsi ini mengembalikan salinan dari HumanoidDescription yang disimpan dari manusia, yang menggambarkan tampilannya saat ini. Ini dapat digunakan untuk dengan cepat menentukan tampilan seseorang dan menetapkan tampilan mereka ke karakter lain menggunakan fungsi Humanoid:ApplyDescription().

Lihat Juga


Memberikan nilai

GetBodyPartR15

Fungsi ini mengembalikan apa Enum.BodyPartR15 adalah, atau Part jika bagiannya bukan bagian tubuh R15. Fungsi ini memungkinkan pengembang untuk mengambil bagian tubuh pemain terlepas dari nama bagian tubuh yang sebenarnya, sehingga menghasilkan daftar enum.

Itu dapat digunakan bersama dengan Humanoid:ReplaceBodyPartR15() . Misalnya, jika bagian tubuh pemain menyentuh sesuatu, fungsi ini akan mengembalikan mendapatkan instansi bagian. Pengembang kemudian dapat melihat apa bagian dari tubuh yang ada, seperti kepala atau lengan. Kemudian tergantung pada

Fungsi ini dapat berguna untuk game di mana lokasi pukulan penting. Misalnya, dapat digunakan untuk menentukan apakah pemain tersebut terkena di kaki dan kemudian memperlambat mereka berdasarkan cedera.

Parameter

part: Instance

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


Memberikan nilai

Jenis bagian tubuh R15 yang ditentukan jika bagian itu bukan bagian tubuh.

GetLimb

Fungsi ini mengembalikan Enum.Limb fungsi yang dianggap sebagai Part kumpulan yang terkait dengan Class.Part yang diberikan. Bekerja untuk kedua R15 dan R6 rig, misalnya:


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

Catat bahwa Humanoid:GetLimb() akan menghasilkan kesalahan jika orang tua bagian tidak diatur ke orang tua humanoid.

Parameter

part: Instance

Class.Part untuk yang mana Enum.Limb akan diambil.


Memberikan nilai

The Enum.Limb bagian yang sesuai.

Contoh Kode

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

Fungsi ini mengembalikan Enum.HumanoidStateType saat ini, menggambarkan aktivitas yang dilakukan Humanoid saat ini, seperti melompat atau berenang.

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


Memberikan nilai

Class.Humanoid saat ini dari Humanoid .

Contoh Kode

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

Fungsi GetStateEnabled menghasilkan apakah Enum.HumanoidStateType diaktifkan untuk Humanoid.

Negara humanoid menjelaskan aktivitas yang dilakukan manusia saat ini.

Ketika Enum.HumanoidStateType khusus di disabled, humanoid tidak pernah bisa masuk ke state tersebut. Ini berlaku terlepas dari apakah upaya untuk mengubah state dilakukan menggunakan Humanoid:ChangeState() atau kode humanoid internal Roblox.

Lihat juga:

  • Untuk acara yang diaktifkan ketika status manusia diaktifkan atau dimatikan lihat Humanoid.StateEnabledChanged
  • Untuk mengaktifkan atau menonaktifkan Class.Humanoid negara menggunakan Class.Humanoid:SetStateEnabled()

Parameter

ENSEUM.HUMANOID. estadoType yang diberikan.


Memberikan nilai

Apakah Enum.HumanoidStateType yang diberikan diaktifkan.

Contoh Kode

Setting and Getting Humanoid States

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

Move

void

Fungsi ini menyebabkan Humanoid berjalan di arah yang diberikan Vector3 .

Secara default, arahnya adalah dalam dunia, tetapi jika parameter relativeToCamera adalah true, arahnya relatif terhadap CFrame dari 1>Class.Workspace.CurrentCamera|CurrentCamera1> . Karena a


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

Ketika fungsi ini dipanggil, Humanoid akan bergerak sampai fungsi itu dipanggil lagi. Namun, jika skrip kontrol default digunakan, fungsi ini akan diubah saat dipanggil pada pemain Characters . Ini dapat dihindari dengan menggunakan fungs

Fungsi ini dapat dianggap di server, tetapi ini hanya boleh dilakukan ketika server memiliki kepemilikan jaringan dari pengaturan manusia.

Lihat juga Humanoid:MoveTo() yang membuat Humanoid berjalan ke satu titik, dan Player:Move() yang secara efektif memanggil fungsi ini.

Parameter

moveDirection: Vector3

Arah untuk berjalan.

relativeToCamera: bool

Tetapkan untuk true jika parameter moveDirection harus diambil relatif terhadap CurrentCamera.

Nilai Default: false

Memberikan nilai

void

Contoh Kode

Moving a Humanoid Forwards

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

MoveTo

void

Fungsi ini menyebabkan Humanoid untuk mencoba berjalan ke lokasi yang ditentukan dengan menetapkan Humanoid.WalkToPoint dan Humanoid.WalkToPart property.

lokasi dan bagian parameter mencerminkan apa yang akan diatur oleh Class.Humanoid.WalkToPoint dan1> Class.Humanoid.WalkToPart1>.

Jika parameter bagian ditentukan, Humanoid masih akan mencoba berjalan ke poin. Namun, jika bagian bergerak maka poin Humanoid akan berjalan untuk berada di posisi yang sama 1>relatif ter

Negara mencapai tujuan dari suatu humanoid akan berakhir setelah 8 detik jika tidak mencapai tujuan. Ini dilakukan agar NPC tidak terjebak menunggu Humanoid.MoveToFinished untuk menembak. Jika Anda tidak ingin ini terjadi, Anda harus berulang kali memanggil MoveTo agar batas waktu tetap diatur ulang.

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

Parameter

location: Vector3

Posisi untuk menetapkan Humanoid.WalkToPoint ke.

part: Instance

The BasePart untuk menetapkan Humanoid.WalkToPart ke.

Nilai Default: "nil"

Memberikan nilai

void

Contoh Kode

Humanoid MoveTo Without Time out

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

RemoveAccessories

void

Fungsi ini menghapus semua Accessory objek yang dikenakan oleh orang tuas manusia. Untuk pemain Characters, ini akan menghapus semua topi dan aksesori lainnya.

Fungsi ini menghapus objek Accessory di dalamnya dengan memanggil Instance:Destroy() di atasnya, yang berarti Parent dari aksesori ditetapkan menjadi 1> nil1> dan terkunci.

Lihat juga Humanoid:AddAccessory() untuk menambahkan Accessory , dan Humanoid:GetAccessories() untuk mendapatkan semua 1> Class.Accessory1> objek yang dimiliki oleh 4> Class.Humanoid4> .


Memberikan nilai

void

Contoh Kode

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

Mengganti bagian lambung R15/Rthro secara dinamis dengan bagian lain di Humanoid. Bagian ini diotayakan secara otomatis seperti biasa.

Fungsi ini berguna untuk mengubah karakter selama gameplay atau membangun karakter dari rig pangkal. Fungsi terkait GetBodyPartR15 dapat datang dalam handy saat menggunakan fungsi ini.

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

Parameter

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

part: BasePart

Class.PartInstance yang akan menjadi orang tua karakter.


Memberikan nilai

SetStateEnabled

void

Fungsi ini menetapkan apakah Enum.HumanoidStateType diaktifkan untuk Humanoid . Saat Enum.HumanoidStateType diaktifkan, 1> Class.Humanoid1> tidak per

Catat bahwa menggunakan SetStateEnabled() di server tidak mengkloning perubahan ke klien, juga tidak sebaliknya.

Parameter

The Enum.HumanoidStateType untuk diaktifkan atau dimatikan.

enabled: bool

true jika state dimaksudkan untuk diaktifkan, false jika 0> state0> dimaksudkan untuk di禁用.


Memberikan nilai

void

Contoh Kode

Jump Cooldown

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

TakeDamage

void

Fungsi ini menurunkan Humanoid.Health dari Humanoid dengan jumlah yang diberikan jika tidak dilindungi oleh 1> Class.ForceField1>

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

Bagaimana ForceFields melindungi dari TakeDamage

Sebuah Humanoid dianggap terlindungi oleh sebuah ForceField jika ForceField memenuhi salah satu kriteria berikut:

Untuk melakukan kerusakan pada Humanoid irrespective of any ForceFields present, set Humanoid.Health langsung.

Untuk lebih banyak informasi tentang cara ForceFields melindungi Humanoids lihat halaman ForceField

Parameter

amount: number

Kerusakan, atau jumlah yang akan diambil dari Humanoid.Health .


Memberikan nilai

void

Contoh Kode

Damaging a Humanoid

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

UnequipTools

void

Fungsi ini melepaskan apa pun Tool saat ini dilengkapi oleh Humanoid

Alat Klasik akan dianggap sebagai anak Backpack dari Player yang berkaitan dengan 1> Class.Humanoid1> .

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

Meskipun Tools dapat dilengkapi oleh NPC (Non Player Character), fungsi ini hanya berfungsi pada Humanoids dengan NPC yang sesuai. Ini karena objek Player diperlukan untuk menjadi orang tua bagi 1>

Lihat juga:


Memberikan nilai

void

Contoh Kode

Unequip Tool Keybind

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

ApplyDescription

void
Hasil

Fungsi ini menghasilkan karakter tampak cocok dengan yang dilewati dalam HumanoidDescription . Salinan dari dilewati HumanoidDescription adalah ditampilkan sebagai HumanoidDescription untuk 1> Class.Human1> .

Fungsi ini dioptimalkan dengan membuat asumsi bahwa hanya fungsi ini yang digunakan untuk mengubah tampilan karakter, dan tidak ada perubahan yang dilakukan melalui cara lain selain panggilan. Jika perubahan dilakukan pada karakter antara pangg

Lihat Juga

Parameter

humanoidDescription: HumanoidDescription

Instansi HumanoidDescription yang ingin Anda tetapkan karakter untuk mencocokkan.

assetTypeVerification: Enum.AssetTypeVerification
Nilai Default: "Default"

Memberikan nilai

void

ApplyDescriptionReset

void
Hasil

Fungsi ini menghasilkan tampilan karakter yang cocok dengan yang dilewati dalam HumanoidDescription, bahkan setelah perubahan eksternal. Salinan dari dilewati HumanoidDescription ditampilkan sebagai HumanoidDescription untuk 1> Class.Humanoid .

Fungsi ini akan selalu memastikan bahwa karakter mencerminkan karakter yang dilewati dal

Parameter

humanoidDescription: HumanoidDescription

Instansi HumanoidDescription yang ingin Anda tetapkan karakter untuk mencocokkan.

assetTypeVerification: Enum.AssetTypeVerification
Nilai Default: "Default"

Memberikan nilai

void

PlayEmote

Hasil

Jika emote tidak dapat dimainkan karena emoteName tidak ditemukan dalam HumanoidDescription ini, API ini akan memberikan kesalahan. API akan mengembalikan true untuk menunjukkan bahwa emote telah dimainkan dengan sukses.

Parameter

emoteName: string

nama emote untuk dimainkan.


Memberikan nilai

berhasil dimainkan.

Acara

ApplyDescriptionFinished

Parameter

description: HumanoidDescription

Climbing

Berdiam saat kecepatan di mana Humanoid mengalami perubahan.

Humanoids dapat menaiki tangga yang terbuat dari Parts atau TrussParts .

Humanoids mencari naik 70% dari Humanoid.WalkSpeed mereka.

Acara ini tidak akan selalu berakhir dengan kecepatan 0 ketika Humanoid berhenti naik.

Lihat juga:

Parameter

speed: number

Kecepatan di mana Humanoid saat ini berada.


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

Acara ini diaktifkan ketika Humanoid mati, biasanya ketika Humanoid.Health mencapai 0. Ini bisa disebabkan oleh terputusnya kepala mereka dari kepala mereka Humanoid.Torso , atau secara langsung menetapkan property kesehatan.

Acara ini hanya diaktifkan jika Humanoid adalah nenek moyang dari Workspace. Jika Dead2>Enum.HumanoidStateType2> dinonaktifkan, itu tidak akan diaktifkan.


Contoh Kode

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

Acara FallingDown diaktifkan saat Humanoid memasuki dan meninggalkan FallingDown``Enum.HumanoidStateType.

The Humanoid akan memasuki status GettingUp 3 detik setelah status FallingDown diaktifkan. Saat ini acara ini akan diaktifkan dengan nilai 1> aktif1> dari 4> false

Parameter

active: bool

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


FreeFalling

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

Parameter aktif mewakili apakah Humanoid memasuki atau meninggalkan status Freefall.

Meskipun status Freefall umumnya berakhir ketika Humanoid mencapai tanah, acara ini dapat diaktifkan dengan aktif sama

Parameter

active: bool

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


GettingUp

Acara ini diaktifkan ketika Class.Humanoid``Enum.HumanoidStateType.GettingUp atau Humanoid (3 detik) atau 2>Class.HumanoidStateType.Ragdoll2> (1 detik)

Ketika Humanoid mencoba untuk mendapatkan kembali, acara ini akan pertama-tama menembak dengan parameter active dari true sebelum waktu setelah menembak lagi dengan parameter 1> active1> dari 4> force4> .

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

Parameter

active: bool

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


HealthChanged

Acara ini diaktifkan ketika Humanoid.Health berubah. Namun, itu tidak akan diaktifkan jika kesehatan meningkat dari nilai yang sama atau lebih besar dari Humanoid.MaxHealth.

Ketika Humanoid.Health mencapai nol, Humanoid akan mati dan acara Humanoid.Died akan diaktifkan. Acara ini akan diaktifkan dengan nilai nol.

Parameter

health: number

Nilai baru dari Humanoid.Health .


Contoh Kode

Humanoid.HealthChanged

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

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

Jumping

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

Ketika jenis Humanoid jumps, acara ini diaktifkan dengan active parameter of true sebelumnya setelah seb

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

Parameter

active: bool

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


MoveToFinished

Acara ini diaktifkan ketika Humanoid selesai berjalan ke tujuan yang diumumkan oleh Humanoid.WalkToPoint dan Humanoid.WalkToPart property.

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

Jika Humanoid mencapai tujuan dalam waktu 8 detik, acara ini akan kembali dengan tercapai sebagai benar. Jika tujuan tidak dicapai dalam waktu 8 detik, Humanoid akan berhenti berjalan dan 1> tercapai

Parameter

reached: bool

Boolean yang menunjukkan apakah Humanoid mencapai tujuan. Benar jika Humanoid mencapai tujuan, 2> Palsu2> jika walk-time kedaluwarsa sebelum tujuan dapat dicapai.


Contoh Kode

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 diaktifkan ketika Humanoid memasuki atau meninggalkan PlatformStanding``Enum.HumanoidStateType .

Sementara Humanoid berada dalam PlatformStanding negara, propinsi Humanoid.PlatformStand akan menjadi 2>benar2>.

Sementara Humanoid.PlatformStand di set ke true, maka Humanoid tidak akan dapat bergerak. Untuk informasi lebih lanjut, silakan lihat halaman untuk 1> Class.Humanoid.PlatformStand1>.

PlatformStand Enum.HumanoidStateType dikaitkan dengan bagian Platform yang sekarang dinonaktifkan. Meskipun demikian, itu masih dapat digunakan oleh pengembang.

Parameter

active: bool

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


Ragdoll

Acara ini diaktifkan 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 Dapatkan Up untuk tetap dalam status Ragdoll.

Lihat juga:

  • Humanoid.FallingDown untuk acara Class.Humanoid yang terhubung dengan negara FallingDown, yang bersikap mirip dengan Ragdoll

Parameter

active: bool

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


Running

Acara ini diaktifkan ketika kecepatan di mana Humanoid berjalan perubahan.

Saat mengeklik Humanoids cover, on average, their Humanoid.WalkSpeed in studs per detik.

Ketika Humanoid berhenti berjalan acara ini akan berakhir dengan kecepatan 0.

Lihat juga:

Parameter

speed: number

Kecepatan di mana Humanoid berjalan.


Contoh Kode

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

Acara ini terjadi ketika Humanoid atau Seat atau VehicleSeat duduk di atau dibangun dari 1> Class.T座1> .

Ketika karakter berinteraksi dengan kursi, mereka ditautkan ke kursi dan dimainkan animasi duduk. Untuk lebih banyak informasi tentang ini, lihat halaman Seat.

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

Lihat juga:

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

Parameter

active: bool

Benar jika Humanoid duduk.

currentSeatPart: BasePart

Kursi yang duduk Humanoid jika duduk.


Contoh Kode

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

Acara ini diaktifkan ketika status Humanoid diubah.

Karena tidak ada negara manusiawi yang "berlumut", Anda harus menggunakan acara Humanoid.Running atau mendengarkan bagian RootPart untuk bekerja ketika Velocity berdiri diam.

Lihat Juga

Parameter

ketiktahap sebelumnya dari manusia.

ketiktahap keadaan manusia.


Contoh Kode

Jumping Particles

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

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

StateEnabledChanged

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

Parameter termasuk Enum.HumanoidStateType dalam pertanyaan serta boo yang menunjukkan apakah negara ini sekarang diaktifkan.

Lihat juga:

Parameter

enum.HumanoidStateType untuk negara yang aktif telah diubah.

isEnabled: bool

Benar jika negara sekarang diaktifkan.


Contoh Kode

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

Acara ini tidak menyetel saat Humanoid sedang beredar dan seharusnya tidak digunakan oleh pengembang

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

Ketika Humanoid memasuki StrafingNoPhysics negara ini acara ini akan diaktifkan dengan parameter aktif dari 2> true2> . Acara ini akan diaktifkan lagi dengan 5>

Acara ini terkait dengan StrafingNoPhysics``Class.Humanoid negara dan melakukan tidak berapi saat 1>Class.Humanoid1> bergerak perpendicular ke arah yang dihadapinya. Negara ini saat ini tidak digunak

Parameter

active: bool

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


Swimming

Acara ini diaktifkan ketika kecepatan di mana Humanoid berenang di dalam air Terrain berubah.

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

Acara ini tidak akan selalu berakhir dengan kecepatan 0 ketika Humanoid berhenti berenang.

Lihat juga:

Parameter

speed: number

Kecepatan di mana Humanoid saat ini berenang.


Touched

Acara ini diaktifkan ketika salah satu dari limb-limb manusia berhubungan dengan lain BasePart. The BasePart yang di sentuh, bersama dengan lambung sendiri, diberikan.

Acara ini tidak akan menyetir ketika anggota Humanoid berada dalam kontak dengan diri mereka sendiri.

Alternatif

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

  • Dalam kebanyakan kasus, disarankan untuk menghubungkan acara BasePart.Touched untuk BaseParts of interest, karena acara Class.Humanoid.
  • Ketika mencoba untuk 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 apa pun yang tidak ada di udara.

Catatan

Parameter

touchingPart: BasePart

The BasePart the Humanoid telah berhubungan dengan.

humanoidPart: BasePart

Lembah dari Humanoid yang telah disentuh.


Contoh Kode

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)