Humanoid

แสดงที่เลิกใช้งานแล้ว

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

Humanoid เป็นวัตถุพิเศษที่ให้คุณสมบัติแก่โ

R6

  • ชุดตัวละครพื้นฐานที่ใช้ 6 ส่วนสำหรับขา
  • ส่วน Head ต้องแนบมากับส่วนที่มีชื่อว่า Torso หรือสัญญาณจะตายทันที
  • รูปลักษณ์ BodyPart ใช้ CharacterMesh วัตถุ
  • คุณสมบัติบางอย่างเช่น Humanoid.LeftLeg และ Humanoid.RightLeg ทำงานได้เฉพาะกับ R6 เท่านั้น

R15 เป็น

  • ซับซ้อนมากกว่า R6 แต่ยังควบคุมได้มากขึ้นและมีประสิทธิภาพมากขึ้น
  • ใช้ 15 ส่วนสำหรับขา.
  • ส่วน Head ต้องแนบมากับชิ้นส่วนที่มีชื่อว่า UpperTorso หรือสัญลักษณ์จะตายทันที
  • ต้องประกอบตัว BodyPart โดยตรง
  • สามารถปรับแต่งได้โดยใช้วัตถุพิเศษ NumberValue ที่อยู่ภายในมนุษย์
  • วัตถุ Vector3Value จะสร้างอัตโนมัติในตัวอุปกรณ์ที่มีชื่อว่า OriginalSize ภายในแต่ละขา
  • กำลังติดตาม:
    • สเกลลำดับตัว
    • สเกลตัวอักษร
    • สเกลตัวอักษร
    • หัวเครื่องชั่ง

ตัวอย่างโค้ด

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)

สรุป

คุณสมบัติ

  • อ่านพร้อมๆ กัน

    ตั้งค่าว่าตัวละครจะกระโดดอัตโนมัติเมื่อพวกเขาโดนสิ่งกีดขวางในขณะที่เป็นผู้เล่นบนอุปกรณ์มือถือ

  • อ่านพร้อมๆ กัน

    การหมุนอัตโนมัติตั้งค่าว่าจะหมุนอัตโนมัติไปทางทิศทางที่พวกเขากำลังเคลื่อนไหวหรือไม่

  • อ่านพร้อมๆ กัน

    เมื่อเปิดใช้งาน โครงสร้างเครื่องชี้วัดขนาดของตัวละครจะเปลี่ยนแปลงตามมูลค่าที่เปลี่ยนแปลงของมุมมองของมนุษย์

  • อ่านพร้อมๆ กัน

    กำหนดว่า ข้อต่อของมนุษย์จะพังเมื่ออยู่ในสถานะ Enum.HumanoidStateType.Dead

  • อ่านพร้อมๆ กัน

    การเลียนแบบที่ปรับแก้ตำแหน่งเหยี่ยวของกล้องเมื่อตั้งค่ากล้องเป็นนี้สัมพันธ์มนุษย์

  • อ่านพร้อมๆ กัน

    ควบคุมพฤติกรรมการแสดงชื่อและสุขภาพของชื่อมนุษย์

  • อ่านพร้อมๆ กัน

    ตั้งค่าข้อความของมนุษย์ ที่แสดงอยู่เหนือหัวของพวกเขา

  • อ่านพร้อมๆ กัน
  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบาย Enum.Material ที่ Humanoid กำลังยืนอยู่ หาก Humanoid ไม่ได้ยืนบนอะไร ค่านี้จะเป็น 2>Air2>

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายสถานะสุขภาพปัจจุบันของมนุษย์ในช่วง [0, Humanoid.MaxHealth]

  • อ่านพร้อมๆ กัน

    ใช้ร่วมกับคุณสมบัติ DisplayDistanceType เพื่อควบคุมระยะที่สามารถมองเห็นได้จากแถบสุขภาพของมนุษย์

  • อ่านพร้อมๆ กัน

    การควบคุมเมื่อแถบสุขภาพของมนุษย์อนุญาตให้แสดง

  • อ่านพร้อมๆ กัน

    กำหนดระยะที่ห่างออกจากพื้น Humanoid.RootPart ควรจะอยู่

  • ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    หาก true เวลา Humanoid กระโดดขึ้นด้วยแรงผลัก

  • อ่านพร้อมๆ กัน

    ให้การควบคุมความสูงที่ Humanoid กระโดด

  • อ่านพร้อมๆ กัน

    กำหนดว่ามีแรงผลักขึ้นเมื่อกระโดด Humanoid เท่าไหร่

  • อ่านพร้อมๆ กัน

    ค่าสูงสุดของมนุษย์ Health

  • อ่านพร้อมๆ กัน

    มุมเหลี่ยมสูงสุดที่มนุษย์สามารถเดินได้โดยไม่ล้ม

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อธิบายทิศทางที่ Humanoid กำลังเดิน

  • อ่านพร้อมๆ กัน

    ใช้ร่วมกับคุณสมบัติ Humanoid.DisplayDistanceType เพื่อควบคุมระยะที่ชื่อของมนุษย์สามารถมองเห็นได้

  • อ่านพร้อมๆ กัน

    ควบคุมว่าบาร์ชื่อและสุขภาพของมนุษย์โอบตรงหลังผนังหรือวัตถุอื่น ๆ

  • อ่านพร้อมๆ กัน

    กำหนดว่า Humanoid อยู่ในสถานะ Enum.HumanoidStateType.PlatformStanding หรือไม่

  • อ่านพร้อมๆ กัน

    ช่วยให้ผู้พัฒนาปิดการใช้งานพฤติกรรมที่ผู้เล่น Character|character ตายหาก Neck Motor6D ถูกลบออกหรือตัดการเชื่อมต่ออย่างรวดเร็ว

  • อ่านพร้อมๆ กัน

    อธิบายว่า Humanoid กำลังใช้รุ่น R6 หรือรุ่น R15 ใหม่

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    อ้างอิงถึงวัตถุ HumanoidRootPart ของมนุษย์

  • อ่านอย่างเดียว
    ไม่ซ้ำ
    อ่านพร้อมๆ กัน

    คำอ้างอิงถึงที่นั่งที่ Humanoid กำลังนั่งอยู่ในขณะนี้หากมี

  • อ่านพร้อมๆ กัน

    อธิบายว่า Humanoid กำลังนั่งอยู่หรือไม่

  • อ่านพร้อมๆ กัน

    อธิบายตำแหน่ง 3D ที่ Player กำลังควบคุม Class.Humanoid ที่กดลงมาในโลกในขณะที่ใช้ Humanoid

  • อ่านพร้อมๆ กัน

    กำหนดว่า JumpHeight (ปลอม) หรือ Humanoid.JumpPower (จริง) คุณสมบัติจะถูกใช้

  • อ่านพร้อมๆ กัน

    อธิบายความเร็วในการเคลื่อนที่สูงสุดของมนุษย์ในสตั๊ดต่อวินาที

  • อ่านพร้อมๆ กัน

    คำอ้างอิงถึงส่วนหนึ่งที่ตำแหน่งของมันกำลังพยายามจะถึงโดยมนุษย์

  • อ่านพร้อมๆ กัน

    ตำแหน่งที่มนุษย์พยายามจะถึงหลังจากโทรไปยัง Humanoid:MoveTo()

วิธีการ

อีเวนต์

คุณสมบัติ

AutoJumpEnabled

อ่านพร้อมๆ กัน

AutoJumpEnabled ตั้งค่าว่าจะให้ Humanoid พยายามกระโดดอัตโนมัติหรือไม่

ในปัจจุบัน สมบัติสินค้านี้ทำงานได้เฉพาะเมื่อมีความจริงต่อไปนี้เท่านั้น:

  • โมเดลตัวละครของมนุษย์ Player.Character ของ Class.Player
  • ผู้เล่นในคำถามนี้กำลังใช้การควบคุมด้วยแท็ช

เมื่อตัวละครของผู้เล่นเกิดขึ้น ค่าสมบัติของคุณตรงกับคุณสมบัติของผู้เล่นนั้น - ซึ่งในทางกลับกันจะตรงกับคุณสมบัติของ Player.AutoJumpEnabled

ตัวอย่างโค้ด

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

อ่านพร้อมๆ กัน

สมบัติคุณลักษณะ AutoRotate อธิบายว่าว่า มนุษย์จะหมุนอัตโนมัติไปทางทิศทางที่พวกเขากำลังเคลื่อนที่ไป เมื่อตั้งค่าเป็นจริง ตัวแบบตัวละครจะเริ่มเปลี่ยนเป็นหน

หากโมเดลตัวละครเป็นตัวละครของผู้เล่น ก็จะส่งผลให้พฤติกรรมการหมุนของมนุษย์เป็นไปตามค่าโปรปริติยาของ UserGameSetting นั้น

เมื่อสมบัติสมุดหมุนอัตโนมัติถูกตั้งค่าเป็น true สมบัติสมุดจะมีผลกระทบต่อการหมุนของมนุษย์ดังต่อไปนี้:


<tbody>
<tr>
<td>การเคลื่อนที่ที่เกี่ยวข้อง</td>
<td />
<td />
</tr>
<tr>
<td>สถานที่กล้อง</td>
<td>ตัวละครจะหมุนในทิศทางของกล้อง</td>
<td>ผู้เล่นมีกล้องของพวกเขาซูมเป็นบุคคลแรกหรือพวกเขาอยู่ในโหมดล็อคอัตโนมัติ</td>
</tr>
</tbody>
ชนิดของการหมุนพฤติกรรมบริบท

ตัวอย่างโค้ด

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

อ่านพร้อมๆ กัน

The Humanoid มีหกค่าเด็กสเกลในรวมทั้ง BodyDepthScale ، BodyHeightScaleBodyProportionScale 、 2> BodyTypeScale2> 、 5> BodyWidthScale

BreakJointsOnDeath

อ่านพร้อมๆ กัน

กำหนดว่าโค้งของมนุษย์จะพังเมื่ออยู่ในสถานะ Enum.HumanoidStateType.Dead หรือไม่ ปกติจะเป็นค่าเริ่มต้นที่จริง

CameraOffset

อ่านพร้อมๆ กัน

สมบัติที่เกี่ยวข้อง CameraOffset ระบุตำแหน่งเหนือกล้องเมื่อตั้งค่า Camera.Camera.CameraSubject ของมันเป็น Camera.CameraSubject

ค่าเริ่มต้นจะถูกประยุกต์ในพื้นที่ของวัตถุ โดยเฉพาะอินเทอร์เฟซของ โรเตต ของมนุษย์ สำหรับตัวอย่างเช่น ค่าเริ่มต้น Vector3 ของ (0,

ตัวอย่างโค้ด

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)
อ่านพร้อมๆ กัน

คุณสมบัติ DisplayDistanceType ควบคุมพฤติกรรมการแสดงของชื่อและสุขภาพของมนุษย์ คุณสมบัตินี้กำหนดโดยใช้ Enum.HumanoidDisplayDistanceType ค่าเรียงของสามตัวที่มีสามตัวเลือกที่แตกต่างกัน:

  • เมื่อตั้งค่าเป็น Viewer สามารถให้มนุษย์เห็นชื่อ/สุขภาพของมนุษย์อื่นในระยะของมนุษย์ของตัวเอง NameDisplayDistance และ HealthDisplayDistance นอกจากนี้ยังสามารถให้มนุษย์เห็นส
  • เมื่อตั้งค่าเป็น Subject สิ่งที่เป็นมนุษย์จะได้รับการควบคุม เต็มรูปแบบ เหนือชื่อและสุขภาพของตัวเองผ่านค่า NameDisplayDistance และ 1> HealthDisplayDistance1> ของมัน
  • เมื่อตั้งค่าไว้ที่ None จะไม่มีสถานะของมนุษย์และสถานะสุขภาพบาร์ไม่ปรากฏใต้สถานการณ์ใด ๆ

ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ

ตัวอย่างโค้ด

Displaying a Humanoid's Health and Name

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

DisplayName

อ่านพร้อมๆ กัน

DisplayName เป็นสมบัติสมุดที่กำหนดชื่อของมนุษย์เมื่อมองเห็นได้ โดยปกติมนุษย์จะมีค่าของสตริงว่าง หาก DisplayName เป็นสตริงว่าง การแสดงชื่อของมนุษย์จะเริ่ม

กําลังโหลดตัวละครผู้เล่น

เมื่อผู้เล่นโหลดตัวละครของพวกเขา โดยอัตโนมัติหรือผ่านการใช้งานของ LoadCharacter() คนูิดที่สร้างโดยเครื่องย่อยจะมีค่า DisplayName ของโปรไฟล์ผู้ใช้

ตัวละครเริ่มต้นและ StarterHumanoid

เมื่อ Humanoid ที่มีชื่อว่า StarterHumanoid ประก

EvaluateStateMachine

อ่านพร้อมๆ กัน

FloorMaterial

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

นี่คือสมบัติที่อ่านเท่านั้นที่อธิบาย Class.Humanoid ที่ตั้งอยู่บน Enum.Material ในขณะนี้ มันทำงานกับทั้ง Humanoid และ Parts โมเดล

ตัวอย่างรหัสด้านล่างแสดงให้เห็นวิธีการฟังเมื่อคุณสมบัตินี้เปลี่ยนโดยใช้ Object:GetPropertyChangedSignal() เมื่อวัสดุที่มนุษย์ยืนบนเปลี่ยนแปลง มันจะพิมพ์ข้อความที่แสดงว่าวัสดุใหม่กำลังยืนบน


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

อุปสรรค

  • เมื่อ Humanoid ไม่ได้อยู่บนพื้น ค่านี้จะถูกตั้งให้เป็น Air
    • สิ่งนี้เกิดขึ้นเพราะตัวละคร열ที่ไม่สามารถมีค่าเปล่าได้
    • นี่อาจทำให้เกิดความสับสนหากวัสดุของชิ้นส่วนถูกตั้งไว้เป็นอากาศ สถานที่แต่ในความเป็นจริงอาจไม่ควรใช้วัสดุนั้นในที่แรก
  • ตัวละครของ Class.Humanoid ต้องสามารถชนกับพื้นได้หรือไม่ หรือมันจะไม่ได้รับการตรวจจับ
    • คุณไม่สามารถทดสอบว่า Humanoid ว่ายน้ำกับคุณสมบัตินี้หรือไม่ คุณควรใช้หน้าใจของมัน Humanoid:GetState() แทน

Health

ไม่ซ้ำ
อ่านพร้อมๆ กัน

ค่านี้表示Class.Humanoid ของปัจจุบัน ค่านี้จะถูกจำกัดไว้ที่ช่วงระหว่าง 0 และ Humanoid หากตัวนิ่งไม่ได้อยู่ในสถานะที่แข็งแกร่ง ค่านี้จะถูกตั้งค่าเป็น 0 ตลอดเวลา

โปรดทราบว่าการใช้งาน TakeDamage() อาจใช้เพื่อลบจาก Health แทนที่จะตั้งค่าสมบัติสินค้าโดยตรง

การฟื้นฟูสุขภาพ

โดยปกติสคริปต์การฟื้นฟูพลังชีวิตอัตโนมัติจะถูกใส่เข้าสู่เซลล์ประสาทของมนุษย์ สิ่งนี้ทำให้ตัวละครที่ไม่ตายเข้าสู่เซลล์ประสาท

แสดงบาร์สุขภาพ

เมื่อ Health น้อยกว่า MaxHealth จะปรากฏบาร์สุขภาพในประสบการณ์ การแสดงแสงของบาร์สุขภาพขึ้นอยู่กับ

ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ

ความตาย

เมื่อค่าสุขภาพของตัวละครถึง 0 สถานะ Humanoid จะเปลี่ยนเป็นสถานะ Enum.HumanoidStateType.Dead โดยอัตโนมัติ ในสถานะ

HealthDisplayDistance

อ่านพร้อมๆ กัน

ค่านี้ใช้ร่วมกับค่า DisplayDistanceType เพื่อควบคุมระยะที่สามารถมองเห็นได้จากแถบสุขภาพของมนุษย์

ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ

อ่านพร้อมๆ กัน

สมบัตินี้ควบคุมว่าเมื่อแถบสุขภาพของมนุษย์สามารถแสดงได้

หมายเหตุว่าคุณสมบัตินี้ทำงานอิสระจากคุณสมบัติ HealthDisplayDistance ของมนุษย์ซึ่งรับผิดชอบในการทำให

ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ

HipHeight

อ่านพร้อมๆ กัน

กำหนดระยะห่าง (ใน studs) จากพื้นเมื่อ RootPart ต้องอยู่เมื่อคนอื่นยืนอยู่ ส่วน RigType ส่งผลกระทบต่อวิธีที่พฤติกรรมนี้ปฏิสัมพันธ์

สำหรับ R15 รุ่น มีค่าความสูงที่เหมาะสมไว้ล่วงหน้าเพื่อให้ความสูงของ RootPart ถูกต้อง ความสูงของขาไม่ได้รับการใช้ ความสูงของมนุษย์สามารถอธิบายได้ในสูตรต่อไ


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

สำหรับ R6 ริกของ R6 อธิบายค่าเฉลี่ยเท่านั้น HipHeight แทนที่ด้วยค่าเฉลี่ย R สามารถอธิบายความสูงของรูปตัวอักษรได้ในสูตรต่อไปนี้:


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

Jump

ไม่ซ้ำ
อ่านพร้อมๆ กัน

หาก true เราจะกระโดดด้วยความเร็วขึ้นของเราเท่ากับมูลค่าของ Humanoid หรือความสูงของ Humanoid.JumpPower ตามที่มีม

JumpHeight

อ่านพร้อมๆ กัน

ให้การควบคุมความสูงของการกระโดด Humanoid ใน studs ค่าเริ่มต้นของคุณสมบัตินี้ได้รับการกำหนดโดยค่า StarterPlayer.CharacterJumpHeight ซึ่งเป็นค่าเริ่มต้นของ 7.2

แม้ว่าการตั้งค่าสมบัตินี้ให้เป็น 0 จะป้องกันไม่ให้มนุษย์กระโดดได้ แต่การปิดการโดนเพชรของมนุษย์ผ่าน Enum.HumanoidStateType.Jumping จะแนะนำให้ปิดการโดนเพชรผ่านการปิดสถานะ Class.Humanoid

สมบัตินี้มองไม่เห็นใน หน้าต่าง Proprietades ถ้า Humanoid.UseJumpPower ตั้งค่าเป็น ปิด เนื่องจากไม่เกี่ยวข้องกันอย่างอื่น (แทนที่, 1> Class.Humanoid.JumpPower1> ใช้)

JumpPower

อ่านพร้อมๆ กัน

กำหนดว่ามีแรงผลักขึ้นมากเท่าไหร่ใน Humanoid เมื่อกระโดด มูลค่าเริ่มต้นของสมบัตินี้จะถูกกำหนดโดยค่า Class.StarterPlayer.CharacterJ

แม้ว่าการตั้งค่าสมบัตินี้ให้เป็น 0 จะป้องกันไม่ให้มนุษย์กระโดดได้ แต่การปิดการโดนเพชรของมนุษย์ผ่าน Enum.HumanoidStateType.Jumping จะแนะนำให้ปิดการโดนเพชรผ่านการปิดสถานะ Class.Humanoid

สมบัตินี้มองไม่เห็นใน หน้าต่าง Proprietades ถ้า Humanoid.UseJumpPower ตั้งค่าเป็น true เนื่องจากไม่เกี่ยวข้องกันอย่างอื่น (แทนที่, 1> Class.Humanoid.JumpHeight1> จะใช้)

MaxHealth

อ่านพร้อมๆ กัน

ค่าสูงสุดของมนุษย์ Health

ค่านี้ใช้ร่วมกับค่า Health เพื่อขนาดตัวแสดงผลบาร์สุขภาพ เมื่อค่า Health ของมนุษย์ถึง Class

MaxSlopeAngle

อ่านพร้อมๆ กัน

สมบัตินี้กำหนดมุมเหลี่ยมสูงสุดที่มนุษย์สามารถปีนขึ้นได้ หากมุมเหลี่ยมของมุมเหลี่ยมเกินขีดจำกัดของมนุษย์พวกเขาจะล้มลงมุมเหลี่ยม

เมื่อตัวละครเกิดขึ้น ค่านี้จะตั้งตามมูลค่าของ StarterPlayer.CharacterMaxSlopeAngle

ค่านี้จำกัดค่าไว้ที่ 0° ถึง 89° เท่านั้น มันเริ่มต้นที่ 89° ดังนั้นมนุษย์จึงสามารถปีนขึ้นทุกเนินที่พวกเขาต้องการโดยปกติ

ตัวอย่างโค้ด

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

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

ย้ายทิศทาง เป็นสมบัติที่อ่านเท่านั้นที่อธิบายทิศทางที่ Humanoid กำลังเดินผ่านใน, เป็นเวกเตอร์หน่วยหรือเวกเตอร์ความยาว zero ทิศทางได้รับอธิบายในพื้นที่โลก

เนื่องจากคุณสมบัตินี้เป็นของอ่านเท่านั้นจึงไม่สามารถตั้งได้โดย Script หรือ LocalScript

ตัวอย่างโค้ด

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

อ่านพร้อมๆ กัน

คุณสมบัติ NameDisplayDistance คือตัวเลขที่ใช้ร่วมกับคุณสมบัติ Humanoid.DisplayDistanceType เพื่อควบคุมระยะที่ชื่อของมนุษย์สามารถมองเห็นได้

ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ

NameOcclusion

อ่านพร้อมๆ กัน

ควบคุมว่าบาร์ชื่อและสถานะของมนุษย์สามารถมองเห็นได้หลังผนังหรือวัตถุอื่นหรือไม่ ค่านี้เป็น Enum.NameOcclusion ค่าและสามารถกำหนดให้เปิดใช้งานทั้งหมดของชื่อมนุษย์ ชื่อศัตรู หรือป

ในกรณีที่ LocalPlayer ไม่มี Humanoid ที่เกี่ยวข้องกับมัน สิ่งนี้จะใช้ได้กับเรื่อง Humanoid เท่านั้น

ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ

ตัวอย่างโค้ด

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

อ่านพร้อมๆ กัน

กำหนดว่า Humanoid อยู่ในสถานะ Enum.HumanoidStateType.PlatformStanding หรือไม่ เมื่อใช่สถานะของมนุษย์คือตกตะลุมบอนและไม่สามารถเคลื่อนที่ได้ สถานะนี้จะเหมือนกับก

RequiresNeck

อ่านพร้อมๆ กัน

ช่วยให้ผู้พัฒนาปิดการใช้งานพฤติกรรมที่ผู้เล่น Character|character ตายหาก Neck Motor6D ถูกลบออกหรือตัดการเชื่อมต่ออย่างรวดเร็ว สถานที่นี้เริ่มต้นที่จริง

อ่านพร้อมๆ กัน

RigType อธิบายว่า Humanoid กำลังใช้ริกของตัวละคร R6 เก่าหรือริกของตัวละคร R15 ใหม่

R6 ใช้ 6 สิ่งที่มองเห็นได้ Parts ในขณะที่ R15 ใช้ 15 สิ่งที่มองเห็นได้ Parts ริก R15 มีข้อต่อมากขึ้นกว่าริก R6 เมื่อถูกวาดอนิเมชั่น

หมายเหตุว่าหากตั้งค่าคุณสมบัตินี้ผิดพลาด Humanoid จะไม่ทำงานได้อย่างถูกต้อง เช่น หาก

RootPart

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

การอ้างอิงไปยังวัตถุ HumanoidRootPart ของมนุษย์, ส่วนหัวขับขี่ของมนุษย์, ที่ควบคุมการเคลื่อนที่ของมนุษย์ผ่านโลก 3D นี้. ส่วนนี้มักจะมองไม่เห็น.

หมายเหตุในกรณีของตัวละครผู้เล่น RootPart คือเดียวกับ Model.PrimaryPart ของ Player.Character โมเดล

SeatPart

อ่านอย่างเดียว
ไม่ซ้ำ
อ่านพร้อมๆ กัน

SeatPart เป็นการอ้างอิงถึงที่นั่งที่นั่งที่มีอยู่ในขณะนี้โดย Humanoid หากมี มูลค่าของสมบัตินี้สามารถเป็น Seat หรือ Class.VehicleSeat

หมายเหตุ:

  • สำหรับบูลที่ระบุว่า Humanoid กำลังนั่งอยู่หรือไม่ ดูที่ Humanoid.Sit

Sit

อ่านพร้อมๆ กัน

สมบัติ Sit เป็นตัวแปรที่เป็นบูสต์ที่ระบุว่า Humanoid กำลังนั่งอยู่หรือไม่ Humanoids สาม

หมายเหตุ:

  • Class.Humanoid.SeatPart1> สามารถรับได้โดยการใช้สมบัติสมบัติ VehicleSeat หรือ Humanoid ส่วน 1>Class.Humanoid1> นั้นนั่งอยู่บนสามารถได้รับได้โดยการใช้สมบัติสมบัติ 4>Class.H
  • มันเป็นไปได้ที่จะตรวจจับเมื่อมนุษย์นั่งโดยการเชื่อมต่อกับเหตุการณ์ Humanoid.Seated

TargetPoint

อ่านพร้อมๆ กัน

อย่าใช้ สิ่งนี้ทำงานได้เฉพาะกับโหมดการทดลองใช้ ซึ่งถูกยกเลิกการใช้งานแล้ว

สมบัตินี้อธิบายตำแหน่ง 3D ในพื้นที่ที่ Player กำลังควบคุมนี้ Humanoid คลิกครั้งสุดท้ายด้วย Tool ที่พร้อมอุปกรณ์

สมบัตินี้ใช้โดยเครื่องมือคลาสสิกเป็นหลักเพื่อกำหนดว่ามนุษย์กำลังเล็งเมื่อพวกเขาเปิดใช้งานเครื่องมือ หากคุณให้ NPC ปืนจรวดคลาสสิก, ตั้ง เป้าหมา

UseJumpPower

อ่านพร้อมๆ กัน

เมื่อตัวละครเกิดขึ้น ค่านี้จะตั้งตามค่าของ StarterPlayer.CharacterUseJumpPower ซึ่งเป็นค่าเริ่มต้นที่จริง

เมื่อกระโดดด้วยตัวนี้ตั้งค่าเป็นจริง, ค่า Humanoid.JumpHeight จะถูกใช้เพื่อรับรองว่าการกระโดดของมนุษย์จะถึงความสูงนั้น ด้วยตัวนี้ตั้งค่าเป็นปลอม, ค่า Class.H

WalkSpeed

อ่านพร้อมๆ กัน

สมบัตินี้อธิบายว่า Humanoid สามารถเดินได้เร็วแค่ไหนในต่อวินาที มันเริ่มต้นด้วยค่าของ StarterPlayer.CharacterWalkSpeed (16) ซึ่งหมายถึงตัวละครของผู้เล่นสามารถเคลื่อนที่ได้

โน้ต

  • เมื่อควบคุมบนอุปกรณ์มือถือหรือแพดพักเกม, มนุษย์สามารถเดินช้ากว่าของมัน WalkSpeed หากการควบคุมของนิ้วมือเพียงองศาเดียวจากศูนย์
  • คุณสามารถแช่แข็งหุ่นมนุษย์ได้โดยการตั้งค่า WalkSpeed ให้เป็น 0 นี่จะป้องกันผู้เล่นที่ควบคุมไม่ให้เคลื่อนที่ผ่านหน้าผากโดยผ่านเม커าริโอมาติกที่เป็นเอกลักษณ์ของมัน
  • สคริปต์อนิเมชันเริ่มต้นจะปรับแต่งการเคลื่อนไหวของมนุษย์ตามความเร็วที่เป็นมาตรฐานของ 16 สตั๊ด/วินาที
  • ความเร็วที่ Humanoid กำลังเดินอยู่ในขณะนี้สามารถได้รับได้โดยการใช้กิจกรรม Running

WalkToPart

อ่านพร้อมๆ กัน

WalkToPart เป็นอ้างอิงถึงส่วนหนึ่งที่มนุษย์พยายามจะถึง ค่านี้จะถูกตั้งค่าเมื่อส่วนหนึ่งถูกส่งเป็นอาร์เจนต์ที่สองของคุณสมบัติ Humanoid:MoveTo()

เมื่อ WalkToPart ถูกติดตั้งและมีมนุษย์พยายามอย่างจริงจังเพื่อให้บรรลุส่วนโดยใช้เวลาของเวกเตอร์ 3 ของมันจะยังคงปรับปรุงเป้าหมายของมันเป็นตำแหน่งของส่วนโดยเพิ่ม Class.Humanoid.WalkToPoint

สามารถอธิบายได้ใน Lua ว่า:


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

อุปสรรค

  • การตั้งค่าค่า WalkToPart ไม่เพียงพอที่จะทำให้มนุษย์เริ่มต้นขึ้นหลังจากชิ้นส่วน
  • มนุษย์ถูกเรียกให้เริ่มพยายามที่จะถึงเป้าหมายเมื่อมีการเปลี่ยนแปลงของมูลค่า WalkToPoint
  • นี่อาจจะเปลี่ยนแปลงในอนาคต
  • สถานะ ถึงเป้าหมาย ของมนุษย์จะหมดอายุหลังจาก 8 วินาทีหากมันไม่ถึงเป้าหมาย
  • นี่ทำให้ NPC ไม่ติดขัดรอ Humanoid.MoveToFinished เพื่อยิง
  • หากคุณไม่ต้องการให้เกิดขึ้น คุณควรทำซ้ำ MoveTo เพื่อให้เวลาที่หมดอายุของไทม์เอาต์ไม่เปลี่ยนแปลง

WalkToPoint

อ่านพร้อมๆ กัน

WalkToPoint อธิบายตำแหน่ง 3D ในพื้นที่ที่มนุษย์พยายามจะถึงหลังจากได้รับคำขอให้ทำเช่นนั้นโดยการใช้งาน Humanoid:MoveTo() ของมนุษย์

ตั้งค่าHumanoid.WalkToPart ของมนุษย์ไว้ เป้าหมายจะถูกตั้งโดยการแปลง WalkToPoint ให้เป็นตำแหน่งและการหมุน หาก WalkToPoint ตั้งค่ามนุษย์จะพยายามติดต่อตำแหน่ง 3D ที่ระบุโดย WalkToPoint

อุปสรรค

  • มูลค่าของ WalkToPoint ต้องเปลี่ยนเป็นมูลค่าที่แตกต่างกันเพื่อให้มนุษย์เริ่มเดินไปยังมัน
  • หากคุณต้องการสร้างการเดินทางของมนุษย์ไปยัง 0,0,0 คุณควรใช้คุณสมบัติ MoveTo ของมนุษย์
  • นี่อาจจะเปลี่ยนแปลงในอนาคต
  • สถานะ ถึงเป้าหมาย ของมนุษย์จะหมดอายุหลังจาก 8 วินาทีหากมันไม่ถึงเป้าหมาย
  • นี่ทำให้ NPC ไม่ติดขัดรอ Humanoid.MoveToFinished เพื่อยิง
  • หากคุณไม่ต้องการให้เกิดขึ้น คุณควรทำซ้ำ MoveTo เพื่อให้เวลาที่หมดอายุของไทม์เอาต์ไม่เปลี่ยนแปลง

ตัวอย่างโค้ด

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)

วิธีการ

AddAccessory

void

วิธีนี้ติด Accessory ไว้กับพ่อของมนุษย์

เมื่อวิธีนี้ถูกเรียก, Accessory จะถู

หากไม่พบตัวอักษรที่ต้องการ Attachment จะยังคงเป็นบรรพบุรุษของหุ่นยนต์ แต่จะไม่ถูกแนบมากับตัวอักษรของมนุษย์ และจะยังคงเป็นบรรพบุรุษของหุ่นยนต์

โดยปกติ, เชือกอบตี้จะถูกสร้างในเซิร์ฟเวอร์ แต่พวกเขาสามารถถูกสร้างในเครื่องคอมพิวเตอร์ภายใต้บางสถานการณ์ ในสถานการณ์เหล่า

พารามิเตอร์

accessory: Instance

Class.Accessory ที่จะแนบมา


ส่งค่ากลับ

void

ตัวอย่างโค้ด

[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

วิธีนี้จะรวบรวมต้นไม้ของ Motor6D ของข้อต่อสำหรับ Humanoid ต้องการให้ Motor6D ของข้อต่อจะเล่นสำหรับ 1> Class.Animation|Animations1> .

เริ่มตั้งแต่หุ่นคนเริ่มต้นด้วย RootPart ของหุ่นคนปัจจุบันที่มีช

Humanoid:BuildRigFromAttachments() ยังเพิ่มความสูงของตัวละครและกำหนดสีตัว


ส่งค่ากลับ

void

ตัวอย่างโค้ด

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

ฟังก์ชันนี้ทำให้ Humanoid เข้าสู่ Enum.HumanoidStateType ที่ให้ไว้ โดยอธิบายกิจกรรมที่ Humanoid กำลังทำอยู่

โปรดดูหน้า Enum.HumanoidStateType สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสถานะต่างๆ เนื่องจากบางสถานะมีชื่อที่ไม่เป็นธรรมชาติบางส่วน เช่น Enum.HumanoidStateType.Running อธิบายสถานะ

เนื่องจากพฤติกรรมเริ่มต้นของ Humanoid บางสถานะจะถูกเปลี่ยนแปลงโดยอัตโนมัติเมื่อการตั้งค่า โดยเช่น:

ดูเพิ่มเติม Humanoid:SetStateEnabled() เพื่อเปิดใช้งานหรือปิดใช้งานสถานะบางอย่าง และ Humanoid:GetState() เพื่อรับสถานะมนุษย์

พารามิเตอร์

Class.Humanoid ที่จะประกอบด้วย Humanoid

ค่าเริ่มต้น: "None"

ส่งค่ากลับ

void

ตัวอย่างโค้ด

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

ฟังก์ชันนี้ทำให้ Humanoid ติดตั้ง Class.Tool ที่ให้ไว้

ตัวอย่างด้านล่างจะทำให้ Player ติดตั้งเครื่องมือใน Workspace ที่มีชื่อว่า Tool


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

เมื่อคุณสมบัตินี้ถูกเรียกใช้จะทำให้มนุษย์เปลื้องอุปกรณ์ใด ๆ Tools ที่มีอยู่ในขณะนี้

แม้ว่าพวกเขาจะได้รับการติดตั้ง Tools สำหรับผู้ที่ Tool.RequiresHandle ไม่ใช่ตัวแทนจะไม่สามารถใช้งานได้หากพวกเขาไม่มีตัวแทน ไม่ว่าคุณจะใช้งานพวกเขาหรือไม่

ดูเพิ่มเติม:

พารามิเตอร์

tool: Instance

เครื่องมือ Tool เพื่อใช้งาน


ส่งค่ากลับ

void

GetAccessories

ฟังก์ชันนี้จะสร้างรายการ Accessory ของวัตถุที่เป็นบุตรของมนุษย์ที่กําลังสวมใส่ ทั้งหมดของ Accessory รายการนี้จะรวมอยู่ ไม่ว่าพวกเขาจะแนบมาหรือไม่

หาก Humanoid ไม่มีวัตถุ Accessory ค่าตัวอย่างจะถูกส่งคืน

ดูเพิ่มเติม Humanoid:AddAccessory() เพื่อแนบ Accessory ไปยังพ่อของมนุษย์


ส่งค่ากลับ

รายการ Accessory วัตถุที่เป็นบรรพบุรุษของ มนุษย์

ตัวอย่างโค้ด

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

ฟังก์ชันนี้จะสร้างคันเครื่องของมนุษย์ที่เก็บไว้ HumanoidDescription ซึ่งอธิบายลักษณะปัจจุบันของมัน สามารถใช้เพื่อระบุลักษณะของตัวละครได้อย่างรวดเร็วและการกำหนดลั

ดูเพิ่มเติม


ส่งค่ากลับ

GetBodyPartR15

ฟังก์ชันนี้รวมถึงสิ่งที่ Enum.BodyPartR15 คือ หรือ Part หากส่วนนั้นไม่ใช่ส่วนหนึ่งของร่างกาย R15 ก็จะไม่สามารถกู้คืนส่วนของผู้เล่นได้

สามารถใช้ร่วมกับ Humanoid:ReplaceBodyPartR15() เช่น หากส่วนหนึ่งของร่างกายผู้เล่นสัมผัสกับบางสิ่งบางอย่าง, ฟังก์ชั่นนี้จะกลับไปที่ตัวอินสแตน

คุณสมบัตินี้สามารถมีประโยชน์สำหรับเกมที่ตำแหน่งการโจมตีสำคัญ เช่น สามารถใช้เพื่อกำหนดว่าผู้เล่นถูกโจมตีในขาแล้วปลดล็อกพวกเขาตามอาการบาดเจ็บ

พารามิเตอร์

part: Instance

ตรวจสอบส่วนที่กำหนดเพื่อดูว่ามันเป็นส่วนหนึ่งของร่างกาย R15


ส่งค่ากลับ

ประเภทของตัวอวุธ R15 ของชิ้นส่วนที่ระบุหากชิ้นส่วนนั้นไม่ใช่ตัวอวุธ

GetLimb

ฟังก์ชันนี้กลับรายการ Enum.Limb รายการที่เกี่ยวข้องกับ Part ที่ให้ โดย R15 และ R6 ริกของตัวอย่าง เช่น:


-- สำหรับ R15
print(humanoid:GetLimb(character.LeftUpperLeg)) -- รายการ.Limb.LeftLeg
print(humanoid:GetLimb(character.LeftLowerLeg)) -- รายการ.Limb.LeftLeg
print(humanoid:GetLimb(character.LeftFoot)) -- รายการ.Limb.LeftLeg
-- สำหรับ R6
print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg

หมายเหตุว่า Humanoid:GetLimb() จะส่งผลให้เกิดข้อผิดพลาดหากพ่อของชิ้นส่วนไม่ได้ตั้งไว้ให้กับพ่อของหุ่น

พารามิเตอร์

part: Instance

Class.Part สำหรับ Enum.Limb ที่จะต้องดึงกลับ


ส่งค่ากลับ

Ennum.Limb ส่วนที่ตรงกับ

ตัวอย่างโค้ด

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


ส่งค่ากลับ

เขียนพร้อมๆ กัน

ฟังก์ชันนี้กลับค่าปัจจุบันของ Enum.HumanoidStateType ซึ่งอธิบายกิจกรรมที่ Humanoid กำลังทำอยู่ในขณะนี้ เช่น การกระโดดหรือว่ายน้ำ

ดูเพิ่มเติม Humanoid:SetStateEnabled() เพื่อเปิดหรือปิดสถานะเฉพาะ และ Humanoid:ChangeState() เพื่อเปลี่ยนสถานะของมนุษย์ปัจจุบัน


ส่งค่ากลับ

ปัจจุบัน Enum.HumanoidStateType ของ Humanoid

ตัวอย่างโค้ด

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

เขียนพร้อมๆ กัน

ฟังก์ชัน GetStateEnabled กลับว่า Enum.HumanoidStateType เปิดใช้งาน Humanoid หรือไม่

สถานะ humanoid อธิบายกิจกรรมที่ humanoid กำลังทำอยู่

เมื่อ Class.Humanoid:ChangeState() หรือรหัสมนุษย์ภายในของ Roblox ถูกปิดใช้งาน สิ่งนี้จะไม่สามารถให้มนุษย์เข้าสู่สถานะนั้นได้ นี่เป็นเช่นเดียวกับการเปลี่ยนแปลงสถานะที่ดำเนินการโดยใ

ดูเพิ่มเติม:

  • สำหรับอีเวนต์ที่เกิดขึ้นเมื่อสถานะมนุษย์เปิดใช้งานหรือปิดใช้งานดู Humanoid.StateEnabledChanged
  • เพื่อเปิดใช้งานหรือปิดใช้งานสถานะ Humanoid ใช้ Humanoid:SetStateEnabled()

พารามิเตอร์

Container.HumanoidStateType


ส่งค่ากลับ

ว่า Enum.HumanoidStateType ที่ให้ไว้นี้เปิดใช้งานหรือไม่

ตัวอย่างโค้ด

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

ฟังก์ชันนี้ทำให้ Humanoid เดินในทิศทางที่กำหนด Vector3

ข้อกำหนดแต่ถ้าตัวประการ relativeToCamera มีค่า true จะทำให้ทิศทางอยู


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

เมื่อคุณสมบัตินี้ถูกเรียกใช้, Humanoid จะเคลื่อนที่จนกว่าคุณสมบัติจะถูกเรียกอีกครั้ง อย่างไรก็ตาม, หากใช้สคริปต์การค

ฟังก์ชันนี้สามารถเรียกในเซิร์ฟเวอร์ได้ แต่สิ่งนี้ควรทำเฉพาะเมื่อเซิร์ฟเวอร์มี เป็นเจ้าของเครือข่ายของมนุษย์ ในการประกอบของมนุษย์.

ดูเพิ่มเติม Humanoid:MoveTo() ซึ่งทำให้ Humanoid เดินไปยังจุดหนึ่ง และ Player:Move() ซึ่งเรียกใช้งานนี้โดยไม่เป็นทางกุหลาบ

พารามิเตอร์

moveDirection: Vector3

ทิศทางที่จะเดินเข้า

relativeToCamera: bool

ตั้งค่าให้เป็น true หากตัวแปร moveDirection ควรถูกนำมาใช้เป็นค่าเชิงเส้นต่อ CurrentCamera

ค่าเริ่มต้น: false

ส่งค่ากลับ

void

ตัวอย่างโค้ด

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

ฟังก์ชันนี้ทำให้ Humanoid พยายามที่จะเดินไปยังสถานที่ที่กำหนดโดยการตั้งค่า Humanoid.WalkToPoint และ Humanoid.WalkToPart โปรพี่สุด

ค่า ตําแหน่ง และ ส่วน ตรงกับสิ่งที่ Humanoid.WalkToPoint และ 1> Class.Humanoid.WalkToPart1> จะตั้งค่า

หากประการ ส่วน มีตัวอักษรประกอบด้วยตัวอักษรที่เป็นตัวอักษรที่อยู่ในระดับโลก หรือไม่ก็ได้

สถานะ เข้าถึงเป้าหมาย ของมนุษย์จะหมดอายุหลังจาก 8 วินาทีหากมันไม่ได้รับเป้าหมายของมัน นี่เป็นเพื่อให้ NPC ไม่ติดขัดรอ Humanoid.MoveToFinished

MoveTo() สิ้นสุดถ้าเงื่อนไขต่อไปนี้ใช้ได้:

  • ตัวละครมาถึงจุดหมายปลายทาง

  • ตัวละครติดขัดและนับเวลาจะหมดอายุแปดวินาที

  • มูลค่าของ Humanoid.WalkToPoint หรือ Humanoid.WalkToPart เปลี่ยนแปลง

  • สคริปต์เรียก Humanoid:Move() ด้วยปารามิเตอร์ใหม่ moveDirection

  • สคริปต์เปลี่ยนแปลง CFrame สมบัติของ RootPart

พารามิเตอร์

location: Vector3

ตําแหน่งที่จะตั้ง Humanoid.WalkToPoint

part: Instance

The BasePart เพื่อตั้ง Humanoid.WalkToPart

ค่าเริ่มต้น: "nil"

ส่งค่ากลับ

void

ตัวอย่างโค้ด

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

ฟังก์ชันนี้ลบวัตถุทั้งหมด Accessory ที่สวมใส่โดยผู้ปกครองของมนุษย์สำหรับผู้เล่น Characters จะลบหมวกและอุปกรณ์อื่น ๆ ทั้งหมด

ฟังก์ชันนี้ลบวัตถุ Accessory โดยการเรียก Instance:Destroy() บนพวกเขาซึ่งหมายถึงว่า Parent ของอุปกรณ์จะตั้งเป็น 1> nil1> และล็อค

ดูเพิ่มเติม Humanoid:AddAccessory() เพื่อแนบ Accessory และ Humanoid:GetAccessories() เพื่อรวบรวมทุกวัตถุ 1> Class.Accessory1> ที่เป็นของ 4> Class.Humanoid4>


ส่งค่ากลับ

void

ตัวอย่างโค้ด

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

แทนที่ R15/Rthro อย่างไดนามิกในลิมบ์มนุษย์ด้วยส่วนที่แตกต่างกัน ส่วนนี้จะถูกปรับแต่งให้เครื่องอัตโนมัติตามปกติ

ระบบนี้มีประโยชน์สำหรับการแก้ไขตัวละครในระหว่างเกมเล่นหรือการสร้างตัวละครจากฐานของริกของเรา ระบบที่เกี่ยวข้อง GetBodyPartR15 สามารถมาในประโยชน์เมื่อใช้ระบบนี

ชื่อของส่วนที่ผ่านจะตรงกับชื่อ BodyPartR15 Enum ที่ผ่าน

พารามิเตอร์

ส่วนตัวอวัยที่จะแทนที่ Enum.BodyPartR15.Unknown จะล้มเหลว

part: BasePart

Class.Part ซึ่งจะเป็นบรรพบุรุษของตัวละคร


ส่งค่ากลับ

SetStateEnabled

void

คุณสมบัตินี้ตั้งค่าว่า Class.Humanoid จะเปิดใช้งานได้สำหรับ Class.Humanoid หรือไม่ เมื่อ

หมายเหตุว่าการใช้ SetStateEnabled() บนเซิร์ฟเวอร์ไม่สามารถเลียนแบบการเปลี่ยนแปลงได้ทั้งหมดในเคลื่อนไหวของลูกค้า หรือในทางกลับกัน

พารามิเตอร์

The Enum.HumanoidStateType ที่จะเปิดใช้งานหรือปิดใช้งาน

enabled: bool

true ถ้า state ต้องการเปิดใช้งาน false ถ้า 0> state0> ต้องการปิดใช้งาน


ส่งค่ากลับ

void

ตัวอย่างโค้ด

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

ฟังก์ชันนี้ลด Humanoid.Health ของ Humanoid โดยจำนวน Class.Humanoid หากไม่ได้รับการป้องกันโดย 2>Class.ForceField2>

ฟังก์ชันนี้ยอมรับค่าเชิญเจ้า จํานวน ตัวองศา สิ่งนี้จะเพิ่ม Humanoid.Health ของมนุษย์ อย่างไรก็ตามสิ่งนี้จะมีผลเฉพาะถ้าไม่มี ForceField ใด ๆ

ForceSeconds ป้องกันการโจมตี

Class.Humanoid ถือเป็นสถานที่ศักดิ์สิทธิ์ถ้า Class.ForceField ตรงตามหนึ่งในเกณฑ์ต่อไปนี้:

เพื่อสร้างความเสียหายให้กับ Humanoid ไม่ว่าจะเป็นผลจากการปรากฏตัวของ ForceFields ใด ๆ ก็ตาม ตั้ง Humanoid.Health โดยตรง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการที่ ForceFields ปกป้อง Humanoids ดูหน้า ForceField

พารามิเตอร์

amount: number

ความเสียหาย หรือจำนวนเงินที่จะหักจาก Humanoid.Health


ส่งค่ากลับ

void

ตัวอย่างโค้ด

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

ฟังก์ชันนี้เปลื้อง Tool ใด ๆ ที่ติดตั้งอยู่ในขณะนี้โดย Humanoid

Class.Tool ที่ไม่ได้ติดตั้งจะถูกผูกกับ Backpack ของ Class.Player ที่เกี่ยวข้องกับ Player

หากไม่มี Tool ติดตั้ง ฟังก์ชันนี้จะไม่ทำอะไร

แม้ว่า Tools สามารถติดตั้งโดย NPC (Non Player Characters) ได้ ฟังก์ชันนี้ทำงานได้เฉพาะกับ Humanoids ที่มีคู่มือกับ Class.Player

ดูเพิ่มเติม:

  • ใช้ Class.Tool แทน

ส่งค่ากลับ

void

ตัวอย่างโค้ด

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
ผลตอบแทน

คุณสมบัตินี้ทำให้ตัวละครของคุณดูเหมือนกับที่ของผู้ผ่านใน HumanoidDescription คัดลอกของผู้ผ่านใน HumanoidDescription ได้ถูกเก็บไว้ใน HumanoidDescription สำหรั

ฟังก์ชันนี้มีประสิทธิภาพโดยการสรุปว่าเฉพาะฟังก์ชันนี้ใช้เพื่อเปลี่ยนรูปลักษณ์ของตัวละคร และไม่ม

ดูเพิ่มเติม

พารามิเตอร์

humanoidDescription: HumanoidDescription

Class.HumanoidDescription ตรงกัน

assetTypeVerification: Enum.AssetTypeVerification
ค่าเริ่มต้น: "Default"

ส่งค่ากลับ

void

ApplyDescriptionReset

void
ผลตอบแทน

คุณสมบัตินี้ทำให้ตัวละครของคุณดูเหมือนกับที่ของผู้ที่ผ่านใน HumanoidDescription แม้ว่าจะเป็นการเปลี่ยนแปลงภายนอกก็ตาม คัดลอกของผ่าน Class.Humanoid

คุณสมบัตินี้จะรับประกันว่าตัวละค

พารามิเตอร์

humanoidDescription: HumanoidDescription

ตัวอินสแตนซ์ HumanoidDescription ตรงกัน

assetTypeVerification: Enum.AssetTypeVerification
ค่าเริ่มต้น: "Default"

ส่งค่ากลับ

void

PlayEmote

ผลตอบแทน

หากไม่สามารถเล่นเมโลดี้ได้เนื่องจากไม่พบ emoteName ใน HumanoidDescription นี้ API จะให้ข้อผิดพลาด เนื่องจาก API จะกลับไปที่จริงเพื่อแสดงว่าเมโลดี้ถูกเล่นสำเร็จ

พารามิเตอร์

emoteName: string

ชื่อของเอโมจิที่จะเล่น


ส่งค่ากลับ

เล่นได้สำเร็จ

อีเวนต์

ApplyDescriptionFinished

พารามิเตอร์

description: HumanoidDescription

Climbing

เกิดเมื่อความเร็วที่ซึ่ง Humanoid กำลังเปลี่ยนแปลง

Humanoids สามารถปีนขึ้นบันไดที่ทำจาก Parts หรือ TrussParts

Humanoids ปีนขึ้นที่ 70% ของความ Humanoid.WalkSpeed ของพวกเขา

เหตุการณ์นี้จะไม่เคยเกิดขึ้นด้วยความเร็ว 0 เมื่อ Humanoid หยุดปีนขึ้น

ดูเพิ่มเติม:

  • สำหรับว่ายน้ำและวิ่งดูเหตุการณ์ Humanoid.Swimming และ Humanoid.Running
  • คุณยังสามารถตรวจจับได้ว่า Humanoid กำลังขึ้นโดยใช้เหตุการณ์ Humanoid.StateChanged
  • คุณสามารถปิดการเลื่อนขึ้นโดยใช้ฟังก์ชัน Humanoid:SetStateEnabled()

พารามิเตอร์

speed: number

ความเร็วที่ Humanoid กำลังเดินทางอยู่ในขณะนี้


ตัวอย่างโค้ด

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

เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid ตาย, โดยปกติเมื่อ Humanoid.Health ถึง 0 สิ่งนี้อาจเกิดขึ้นได้โดยการตั้งค่าสุขภาพโดยตรงหรือการตั้งค่าสุขภาพโดยตร

เหตุการณ์นี้จะเกิดขึ้นเฉพาะถ้า Humanoid เป็นลูกหลานของ Workspace หาก Dead1> enum.HumanoidStateType1> ถูกปิดใช้งานจะไม่เกิดเหตุการณ์


ตัวอย่างโค้ด

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

เหตุการณ์ FallingDown จะเกิดขึ้นเมื่อ Humanoid เข้าและออกจาก FallingDown``Enum.HumanoidStateType

Class.Humanoid จะเข้าสู่สถานะ GettingUp หลังจากที่สถานะ FallingDown เปิดใช้งาน เมื่อเกิดเหตุการณ์นี้

พารามิเตอร์

active: bool

อธิบายว่า Humanoid กำลังเข้าหรือออกจาก FallingDown``Enum.HumanoidStateType


FreeFalling

เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก Freefall``Enum.HumanoidStateType

ตัวประกาย เปิด หมายถึงว่า Humanoid กำลังเข้าหรือออกจากสถานะ Freefall

แม้ว่าสถานะ Freefall โดยทั่วไปจะสิ้นสุดลงเมื่อ Humanoid ไปถึงพื้น,

พารามิเตอร์

active: bool

ว่า Humanoid กำลังเข้าหรือออกจาก Freefall``Enum.HumanoidStateType


GettingUp

เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid เข้าหรือออกจากสถานะ Enum.HumanoidStateType.GettingUp สถานะโอนส่งที่

เมื่อ Humanoid พยายามกลับขึ้นมันจะเปิดเหตุการณ์ครั้งแรกด้วยค่า active ของ true ก่อนสักครู่หลังจากการเปิดตัวอีกครั้งด้วยค่า 1> active1>

เพื่อบังคับให้ Humanoid ตกลงมา, ใช้ función Humanoid:ChangeState() ด้วย Enum.HumanoidStateType.FallingDown .

พารามิเตอร์

active: bool

ว่า Humanoid กำลังเข้าหรือออกจาก GettingUp``Enum.HumanoidStateType


HealthChanged

เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid.Health เปลี่ยนแปลง อย่างไรก็ตาม มันจะไม่เกิดขึ้นหากสุขภาพเพิ่มขึ้นจากมูลค่าเท่ากันหรือมากกว่า Humanoid.MaxHealth

เมื่อ Humanoid.Health ถึงศูนย์, Humanoid จะตายและเหตุการณ์ Humanoid.Died จะประกายไฟ เหตุการณ์นี้จะยิงด้วยค่าศูนย์

พารามิเตอร์

health: number

ค่าใหม่ของ Humanoid.Health


ตัวอย่างโค้ด

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

เหตุการณ์นี้เกิดขึ้นเมื่อ Humanoid เข้าและออกจาก Jumping``Enum.HumanoidStateType

เมื่อ Humanoid กระโดด, เหตุการณ์นี้จะได้รับการเปิดใช้งานด้ว

คุณสามารถปิดการโดดโดยใช้งาน Humanoid:SetStateEnabled() ฟังก์ชัน

พารามิเตอร์

active: bool

ว่า Humanoid กำลังเข้าหรือออกจาก Jumping``Enum.HumanoidStateType


MoveToFinished

เหตุการณ์นี้เกิดขึ้นเมื่อ Humanoid เสร็จสิ้นการเดินทางไปยังเป้าหมายที่ประกาศโดย Humanoid.WalkToPoint และ Humanoid.WalkToPart โปรพี่

คุณสมบัติ Humanoid.WalkToPoint และ Humanoid.WalkToPart สามารถตั้งค่าได้อย่างอิสระหรือโดยใช้ฟังก์ชัน Humanoid:MoveTo()

หาก Humanoid ไปถึงเป้าหมายของมันในเวลา 8 วินาที, เหตุการณ์นี้จะกลับมาด้วย ไปยัง เป็นความจริง หากเป้าหมา

พารามิเตอร์

reached: bool

ตัวแปรที่บ่งชี้ว่า Humanoid ที่ถึงเป้าหมาย จริง หาก Humanoid ถึงเป้าหมายของมัน 2>ฟรี2> หากเวลาเดินหมดก่อนที่จะถึงเป้าหมาย


ตัวอย่างโค้ด

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

เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก PlatformStanding``Enum.HumanoidStateType

ขณะที่ Humanoid อยู่ในสถานะ PlatformStanding สถานะ Humanoid.PlatformStand จะเป็น 2>Class.Humanoid.PlatformStand2> โปรพีเรตจะเป็น 5>Class.Humanoid.PlatformStand5> โปรพีเรต

ขณะที่ Humanoid.PlatformStand ตั้งไว้ที่ จริง แล้ว Humanoid จะไม่สามารถเคลื่อนที่ได้ สำหรับข้อมูลเพิ่มเติมโปรดดูหน้าสำหรับ 1> Class.Humanoid.PlatformStand1>

PlatformStand Enum.HumanoidStateType ได้รับการรวมกับส่วน Platform ที่ถูกปิดใช้งาน แม้ว่าจะเป็นเช่นนี้ แต่ก็ยังคงสามารถใช้งานได้โดยผู้พัฒนา

พารามิเตอร์

active: bool

ว่า Humanoid กำลังเข้าหรือออกจาก PlatformStanding``Enum.HumanoidStateType


Ragdoll

เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก Ragdoll``Enum.HumanoidStateType

ตัวอักษร active จะมีค่า true หรือ false เพื่อระบุว่ากำลังเข้าหรือออก

ใช้ Humanoid:SetStateEnabled() เพื่อปิดการใช้งานสถานะการเปลี่ยนแปลงเพื่ออยู่ในสถานะ Ragdoll

ดูเพิ่มเติม:

  • Humanoid.FallingDown สำหรับเหตุการณ์ Humanoid ที่เชื่อมโยงกับสถานะ FallingDown ซึ่งมีพฤติกรรมเช่นเดียวกับ 0> Ragdoll0>

พารามิเตอร์

active: bool

ว่า Humanoid กำลังเข้าหรือออกจาก Ragdoll``Enum.HumanoidStateType


Running

เหตุการณ์นี้จะเกิดขึ้นเมื่อความเร็วที่ Humanoid กําลังเปลี่ยนแปลง

ในขณะที่เริ่มต้นใช้ Humanoids ครอบคลุม โดยปกติจะมี Humanoid.WalkSpeed ในสตั๊ดส์ต่อวินาที

เมื่อ Humanoid หยุดวิ่งเหตุการณ์นี้จะเริ่มต้นด้วยความเร็ว 0

ดูเพิ่มเติม:

  • สำหรับว่ายน้ำและปีนเขาดูเหตุการณ์ Humanoid.Swimming และ Humanoid.Climbing
  • คุณยังสามารถตรวจจับได้ว่า Humanoid กำลังประมวลผลโดยใช้เหตุการณ์ Humanoid.StateChanged

พารามิเตอร์

speed: number

ความเร็วที่ Humanoid กำลังวิ่ง


ตัวอย่างโค้ด

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

เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid นั่งอยู่ในหรือลุกขึ้นจาก Seat หรือ VehicleSeat

เมื่อตัวละครมีการติดต่อกับที่นั่งพวกเขาจะถูกแนบมากับที่นั่งและจะเล่นอนิเมชันนั่ง สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ให้ดูที่หน้า Seat

  • หากตัวละครนั่งลง พารามิเตอร์ active จะเป็น จริง และ currentSeatPart จะเป็นที่นั่งที่พวกเขานั่งอยู่ในขณะนี้
  • หากตัวละครลุกขึ้นจากที่นั่ง พารามิเตอร์ active จะเป็น currentSeatPart และ nil คือตัวประกายอาวุธ

ดูเพิ่มเติม:

  • Humanoid.Sit ซึ่งระบุว่ามีการนั่งของมนุษย์หรือไม่
  • Humanoid.SeatPart ซึ่งระบุว่าที่นั่งนี้มีคนนั่งอยู่ในขณะนี้หากมี

พารามิเตอร์

active: bool

จริงหาก Humanoid นั่งลง

currentSeatPart: BasePart

ที่นั่งที่ Humanoid นั่งถ้ามันนั่งลง


ตัวอย่างโค้ด

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

เหตุการณ์นี้จะเกิดขึ้นเมื่อสถานะของ Humanoid เปลี่ยนแปลง

เนื่องจากไม่มีสถานะ Humanoid.Running ของมนุษย์ดังนั้นคุณจึงควรใช้เหตุการณ์ RootPart หรือฟังส่วน Velocity ของ

ดูเพิ่มเติม

พารามิเตอร์

พิมพ์

พิมพ์


ตัวอย่างโค้ด

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

เหตุการณ์ StateEnableChanged จะเกิดขึ้นเมื่อ Humanoid:SetStateEnabled() ถูกเรียกใน Humanoid

ตัวแปรรวมถึง Enum.HumanoidStateType ในคำถามพร้อมด้วยบูลที่ระบุว่าตัวแปรนี้เปิดใช้งานหรือไม่

ดูเพิ่มเติม:

  • เพื่อหาว่ารัฐบาลถูกเปิดใช้งานอยู่หรือไม่ใช้ Humanoid:GetStateEnabled()
  • เพื่อฟังการเปลี่ยนแปลงสถานะ Humanoid ใช้ Humanoid.StateChanged

พารามิเตอร์

Enzym.HumanoidStateType สำหรับซึ่งสถานะที่เปิดใช้งานได้ถูกเปลี่ยนแปลง

isEnabled: bool

จริงหากสถานะถูกเปิดใช้งานแล้ว


ตัวอย่างโค้ด

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

เหตุการณ์นี้ไม่ได้เกิดขึ้นเมื่อ Humanoid กำลังเหยียบและไม่ควรใช้โดยผู้พัฒนา

เหตุการณ์นี้จะถูกเรียกเมื่อ Humanoid เข้าหรือออกจาก StrafingNoPhysics``Enum.HumanoidStateType

เมื่อ Humanoid เข้าสู่สถานะ StrafingNoPhysics นี้จะเกิดขึ้นด้วยปารามิเตอร์ active ของ 2> true2> เม

เหตุการณ์นี้เกี่ยวข้องกับสถานะ StrafingNoPhysics``Class.Humanoid และทำ ไม่ ไฟเมื่อ 2>Class.Humanoid2> กำลังเค

พารามิเตอร์

active: bool

ว่า Humanoid กำลังเข้าหรือออกจาก StrafingNoPhysics``Enum.HumanoidStateType


Swimming

เหตุการณ์นี้จะเกิดขึ้นเมื่อความเร็วที่ Humanoid ว่ายน้ำในน้ำ Terrain เปลี่ยนแปลง

Humanoids ว่ายน้ำที่ 87.5% ของ Humanoid.WalkSpeed ของพวกเขา

เหตุการณ์นี้จะไม่เคยเกิดขึ้นด้วยความเร็ว 0 เมื่อ Humanoid หยุดว่ายน้ำ

ดูเพิ่มเติม:

  • สำหรับการประมวลผลและการปีนเขา โปรดดู Humanoid.Running และ Humanoid.Climbing เหตุการณ์
  • คุณยังสามารถตรวจจับได้ว่า Humanoid กำลังว่ายน้ำโดยใช้เหตุการณ์ Humanoid.StateChanged
  • คุณสามารถปิดการว่ายน้ำโดยใช้คุณสมบัติ Humanoid:SetStateEnabled()

พารามิเตอร์

speed: number

ความเร็วที่ Humanoid กำลังว่ายน้ำอยู่ในขณะนี้


Touched

เหตุการณ์นี้จะเกิดขึ้นเมื่อหนึ่งในของขวางของมนุษย์มีการติดต่อกับอีก BasePart ตัว The BasePart ซึ่งเป็นของขวางของมนุษย์ด้วยตัวมนุษย์เองนั้นจะได้รับการให้

เหตุการณ์นี้จะไม่เกิดขึ้นเมื่อ Humanoid สัมผัสกับตัวเอง

ทางเลือกอื่น

อย่างไรก็ตาม เหตุการณ์ Humanoid.Touched เป็นประโยชน์ คุณควรพิจารณาว่ามีตัวเลือกอื่นที่เหมาะกับความต้องการของคุณมากขึ้นหรือไม่

  • ในกรณีส่วนใหญ่ จะแนะนำให้เชื่อมต่อกิจกรรม BasePart.Touched สำหรับ BaseParts
  • เมื่อพยายามที่จะทำงานเมื่อ Humanoid ได้ลงจอดบนพื้น, อีเวนต์ Humanoid.StateChanged เหมาะสมกว่า อย่างไรก็ตาม, คุณสามารถตรวจสอบ Humanoid.FloorMaterial

โน้ต

  • การเชื่อมต่อกับเหตุการณ์นี้จะทำให้ TouchTransmitter เกิดขึ้นในทุกส่วน
  • ขณะนี้ไม่มีตัวเทียบเท่าของ BasePart.TouchEnded สำหรับ Humanoids

พารามิเตอร์

touchingPart: BasePart

Class.BasePart ที่ Humanoid ได้รับในการติดต่อ

humanoidPart: BasePart

ส่วนของ Humanoid ที่ได้รับการแตะต้อง


ตัวอย่างโค้ด

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)