Humanoid
*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่
Humanoid เป็นวัตถุพิเศษที่ให้คุณสมบัติแก่โ
R6
- ชุดตัวละครพื้นฐานที่ใช้ 6 ส่วนสำหรับขา
- ส่วน Head ต้องแนบมากับส่วนที่มีชื่อว่า Torso หรือสัญญาณจะตายทันที
- รูปลักษณ์ BodyPart ใช้ CharacterMesh วัตถุ
- คุณสมบัติบางอย่างเช่น Humanoid.LeftLeg และ Humanoid.RightLeg ทำงานได้เฉพาะกับ R6 เท่านั้น
R15 เป็น
- ซับซ้อนมากกว่า R6 แต่ยังควบคุมได้มากขึ้นและมีประสิทธิภาพมากขึ้น
- ใช้ 15 ส่วนสำหรับขา.
- ส่วน Head ต้องแนบมากับชิ้นส่วนที่มีชื่อว่า UpperTorso หรือสัญลักษณ์จะตายทันที
- ต้องประกอบตัว BodyPart โดยตรง
- สามารถปรับแต่งได้โดยใช้วัตถุพิเศษ NumberValue ที่อยู่ภายในมนุษย์
- วัตถุ Vector3Value จะสร้างอัตโนมัติในตัวอุปกรณ์ที่มีชื่อว่า OriginalSize ภายในแต่ละขา
- กำลังติดตาม:
- สเกลลำดับตัว
- สเกลตัวอักษร
- สเกลตัวอักษร
- หัวเครื่องชั่ง
ตัวอย่างโค้ด
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()
วิธีการ
ติดตั้ง Class.Accessory ที่กำหนดไว้ให้กับพ่อของมนุษย์
รวมต้นไม้ของ Motor6D ด้วยการแนบ Attachment วัตถุในตัวละครของมนุษย์
ตั้งค่า Humanoid เพื่อให้เข้าสู่ Enum.HumanoidStateType ที่ให้
ทำให้ Humanoid ติดตั้ง Class.Tool ที่ให้ไว้
กลับรายการ Accessory ตัวที่ผู้ปกครองกำลังสวมใส่
กลับคัดลอกของ Class.HumanoidDescription ของมนุษย์ซึ่งอธิบายลักษณะปัจจุบันของมัน
ส่งส่วนของร่างกายนี้ไปยังฟังก์ชันนี้ (ส่วนของร่างกายควรเป็นพี่น้องของ Humanoid และเป็นลูกของ Model) เพื่อรับ Class.Part ของ Enum.BodyPartR15
กลับรายการ Enum.Limb ที่เกี่ยวข้อง
กลับสถานะปัจจุบันของมนุษย์ Enum.HumanoidStateType
กลับว่า Enum.HumanoidStateType เปิดใช้งานได้หรือไม่สำหรับ Humanoid
ทำให้ Humanoid เดินในทิศทางที่กำหนด
ทำให้ Humanoid พยายามที่จะเดินไปยังสถานที่ที่กำหนดโดยการตั้งค่า Humanoid.WalkToPoint และ Humanoid.WalkToPart โปรพี่สมบัติ
ลบวัตถุทั้งหมด Accessory ที่สวมใส่โดยผู้ปกครองของมนุษย์
แทนที่ส่วนตัวของมนุษย์ด้วยส่วนตัวอื่น
ตั้งค่าว่า Enum.HumanoidStateType จะเปิดใช้งานได้สำหรับ Humanoid หรือไม่
ลด Humanoid.Health ของ Humanoid โดยจำนวน Class.Humanoid หากไม่ได้รับการป้องกันโดย 2>Class.ForceField2>
เปลื้องอุปกรณ์ใด ๆ ของ Tool ที่ติดตั้งอยู่ในขณะนี้โดย Humanoid
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
ทำให้ตัวละครดูเหมือนกับผู้ผ่านใน HumanoidDescription
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
ทำให้ตัวละครดูเหมือนกับที่ผ่านใน HumanoidDescription แม้ว่าจะเปลี่ยนแปลงภายนอก
เล่นอีโมตและกลับมาที่สำเร็จหากมันถูกประมวลผล
อีเวนต์
เกิดเมื่อความเร็วที่ซึ่ง Humanoid กำลังเปลี่ยนแปลง
เปิดเมื่อ Humanoid ตาย
เกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก FallingDown``Enum.HumanoidStateType
เกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก Freefall``Enum.HumanoidStateType
เกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก GettingUp``Enum.HumanoidStateType
เปิดให้เมื่อ Humanoid.Health เปลี่ยนแปลง (หรือเมื่อ Humanoid.MaxHealth ตั้งค่า)
เกิดขึ้นเมื่อ Humanoid เข้าและออกจาก Jumping``Enum.HumanoidStateType
เกิดขึ้นเมื่อ Humanoid เสร็จสิ้นการเดินไปยังเป้าหมายที่ประกาศโดย Humanoid:MoveTo()
เกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก PlatformStanding``Enum.HumanoidStateType
เกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก Ragdoll``Enum.HumanoidStateType
เกิดขึ้นเมื่อความเร็วที่ Humanoid กําลังเปลี่ยนแปลง
ไฟร์เมื่อ <a href="/reference/engine/datasheets/class-humanoid.md">Class.Humanoid</a> อยู่ใน <a href="/reference/engine/datasheets/class-humanoid.md">Class.Seat</a> หรือ <a href="/reference/engine/datasheets/class-humanoid.md">Class.VehicleSeat</a> หรือลุกขึ้น
เกิดขึ้นเมื่อสถานะของ Humanoid เปลี่ยนแปลง
เกิดเมื่อ Humanoid:SetStateEnabled() ถูกเรียกใน Humanoid
เกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก StrafingNoPhysics``Enum.HumanoidStateType
เปิดให้เมื่อความเร็วที่ Humanoid ว่ายน้ำในน้ำ Terrain เปลี่ยนแปลง
เกิดไฟเมื่อหนึ่งในของเท้าของมนุษย์มีการติดต่อกับอื่น ๆ BasePart
คุณสมบัติ
AutoJumpEnabled
AutoJumpEnabled ตั้งค่าว่าจะให้ Humanoid พยายามกระโดดอัตโนมัติหรือไม่
ในปัจจุบัน สมบัติสินค้านี้ทำงานได้เฉพาะเมื่อมีความจริงต่อไปนี้เท่านั้น:
- โมเดลตัวละครของมนุษย์ Player.Character ของ Class.Player
- ผู้เล่นในคำถามนี้กำลังใช้การควบคุมด้วยแท็ช
เมื่อตัวละครของผู้เล่นเกิดขึ้น ค่าสมบัติของคุณตรงกับคุณสมบัติของผู้เล่นนั้น - ซึ่งในทางกลับกันจะตรงกับคุณสมบัติของ Player.AutoJumpEnabled
ตัวอย่างโค้ด
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>
ชนิดของการหมุน | พฤติกรรม | บริบท |
---|
ตัวอย่างโค้ด
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 ، BodyHeightScale 、 BodyProportionScale 、 2> BodyTypeScale2> 、 5> BodyWidthScale
BreakJointsOnDeath
กำหนดว่าโค้งของมนุษย์จะพังเมื่ออยู่ในสถานะ Enum.HumanoidStateType.Dead หรือไม่ ปกติจะเป็นค่าเริ่มต้นที่จริง
CameraOffset
สมบัติที่เกี่ยวข้อง CameraOffset ระบุตำแหน่งเหนือกล้องเมื่อตั้งค่า Camera.Camera.CameraSubject ของมันเป็น Camera.CameraSubject
ค่าเริ่มต้นจะถูกประยุกต์ในพื้นที่ของวัตถุ โดยเฉพาะอินเทอร์เฟซของ โรเตต ของมนุษย์ สำหรับตัวอย่างเช่น ค่าเริ่มต้น Vector3 ของ (0,
ตัวอย่างโค้ด
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
คุณสมบัติ DisplayDistanceType ควบคุมพฤติกรรมการแสดงของชื่อและสุขภาพของมนุษย์ คุณสมบัตินี้กำหนดโดยใช้ Enum.HumanoidDisplayDistanceType ค่าเรียงของสามตัวที่มีสามตัวเลือกที่แตกต่างกัน:
- เมื่อตั้งค่าเป็น Viewer สามารถให้มนุษย์เห็นชื่อ/สุขภาพของมนุษย์อื่นในระยะของมนุษย์ของตัวเอง NameDisplayDistance และ HealthDisplayDistance นอกจากนี้ยังสามารถให้มนุษย์เห็นส
- เมื่อตั้งค่าเป็น Subject สิ่งที่เป็นมนุษย์จะได้รับการควบคุม เต็มรูปแบบ เหนือชื่อและสุขภาพของตัวเองผ่านค่า NameDisplayDistance และ 1> HealthDisplayDistance1> ของมัน
- เมื่อตั้งค่าไว้ที่ None จะไม่มีสถานะของมนุษย์และสถานะสุขภาพบาร์ไม่ปรากฏใต้สถานการณ์ใด ๆ
ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ
ตัวอย่างโค้ด
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 เพื่อควบคุมระยะที่สามารถมองเห็นได้จากแถบสุขภาพของมนุษย์
ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ
HealthDisplayType
สมบัตินี้ควบคุมว่าเมื่อแถบสุขภาพของมนุษย์สามารถแสดงได้
หมายเหตุว่าคุณสมบัตินี้ทำงานอิสระจากคุณสมบัติ 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° ดังนั้นมนุษย์จึงสามารถปีนขึ้นทุกเนินที่พวกเขาต้องการโดยปกติ
ตัวอย่างโค้ด
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
ย้ายทิศทาง เป็นสมบัติที่อ่านเท่านั้นที่อธิบายทิศทางที่ Humanoid กำลังเดินผ่านใน, เป็นเวกเตอร์หน่วยหรือเวกเตอร์ความยาว zero ทิศทางได้รับอธิบายในพื้นที่โลก
เนื่องจากคุณสมบัตินี้เป็นของอ่านเท่านั้นจึงไม่สามารถตั้งได้โดย Script หรือ LocalScript
ตัวอย่างโค้ด
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 เท่านั้น
ดู การแสดงชื่อ/สุขภาพของตัวละคร สำหรับคู่มือในระดับลึกเกี่ยวกับการควบคุมการปรากฏตัวของชื่อตัวละครและแถบสุขภาพ
ตัวอย่างโค้ด
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
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 สตั๊ด/วินาที
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 เพื่อให้เวลาที่หมดอายุของไทม์เอาต์ไม่เปลี่ยนแปลง
ตัวอย่างโค้ด
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
วิธีนี้ติด Accessory ไว้กับพ่อของมนุษย์
เมื่อวิธีนี้ถูกเรียก, Accessory จะถู
หากไม่พบตัวอักษรที่ต้องการ Attachment จะยังคงเป็นบรรพบุรุษของหุ่นยนต์ แต่จะไม่ถูกแนบมากับตัวอักษรของมนุษย์ และจะยังคงเป็นบรรพบุรุษของหุ่นยนต์
โดยปกติ, เชือกอบตี้จะถูกสร้างในเซิร์ฟเวอร์ แต่พวกเขาสามารถถูกสร้างในเครื่องคอมพิวเตอร์ภายใต้บางสถานการณ์ ในสถานการณ์เหล่า
พารามิเตอร์
Class.Accessory ที่จะแนบมา
ส่งค่ากลับ
ตัวอย่างโค้ด
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
วิธีนี้จะรวบรวมต้นไม้ของ Motor6D ของข้อต่อสำหรับ Humanoid ต้องการให้ Motor6D ของข้อต่อจะเล่นสำหรับ 1> Class.Animation|Animations1> .
เริ่มตั้งแต่หุ่นคนเริ่มต้นด้วย RootPart ของหุ่นคนปัจจุบันที่มีช
Humanoid: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)
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
ฟังก์ชันนี้ทำให้ Humanoid เข้าสู่ Enum.HumanoidStateType ที่ให้ไว้ โดยอธิบายกิจกรรมที่ Humanoid กำลังทำอยู่
โปรดดูหน้า Enum.HumanoidStateType สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสถานะต่างๆ เนื่องจากบางสถานะมีชื่อที่ไม่เป็นธรรมชาติบางส่วน เช่น Enum.HumanoidStateType.Running อธิบายสถานะ
เนื่องจากพฤติกรรมเริ่มต้นของ Humanoid บางสถานะจะถูกเปลี่ยนแปลงโดยอัตโนมัติเมื่อการตั้งค่า โดยเช่น:
- การตั้งสถานะเป็น Enum.HumanoidStateType.Swimming เมื่อ humanoid ไม่อยู่ในน้ำจะทำให้มันถูกตั้งค่าอัตโนมัติเป็น Enum.HumanoidStateType.GettingUp
- เนื่องจากไม่ได้ใช้งานการตั้งสถานะเป็น Enum.HumanoidStateType.PlatformStanding จะทำให้สถานะ humanoid ตั้งค่าโดยอัตโนมัติเป็น Enum.HumanoidStateType.Running
ดูเพิ่มเติม Humanoid:SetStateEnabled() เพื่อเปิดใช้งานหรือปิดใช้งานสถานะบางอย่าง และ Humanoid:GetState() เพื่อรับสถานะมนุษย์
พารามิเตอร์
Class.Humanoid ที่จะประกอบด้วย Humanoid
ส่งค่ากลับ
ตัวอย่างโค้ด
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
ฟังก์ชันนี้ทำให้ Humanoid ติดตั้ง Class.Tool ที่ให้ไว้
ตัวอย่างด้านล่างจะทำให้ Player ติดตั้งเครื่องมือใน Workspace ที่มีชื่อว่า Tool
local Players = game:GetService("Players")local player = Players:FindFirstChildOfClass("Player")if player and player.Character thenlocal humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal tool = workspace:FindFirstChild("Tool")if tool thenhumanoid:EquipTool(tool)endendend
เมื่อคุณสมบัตินี้ถูกเรียกใช้จะทำให้มนุษย์เปลื้องอุปกรณ์ใด ๆ Tools ที่มีอยู่ในขณะนี้
แม้ว่าพวกเขาจะได้รับการติดตั้ง Tools สำหรับผู้ที่ Tool.RequiresHandle ไม่ใช่ตัวแทนจะไม่สามารถใช้งานได้หากพวกเขาไม่มีตัวแทน ไม่ว่าคุณจะใช้งานพวกเขาหรือไม่
ดูเพิ่มเติม:
- เพื่อถอดเครื่องมือให้ใช้ Humanoid:UnequipTools()
พารามิเตอร์
ส่งค่ากลับ
GetAccessories
ฟังก์ชันนี้จะสร้างรายการ Accessory ของวัตถุที่เป็นบุตรของมนุษย์ที่กําลังสวมใส่ ทั้งหมดของ Accessory รายการนี้จะรวมอยู่ ไม่ว่าพวกเขาจะแนบมาหรือไม่
หาก Humanoid ไม่มีวัตถุ Accessory ค่าตัวอย่างจะถูกส่งคืน
ดูเพิ่มเติม Humanoid:AddAccessory() เพื่อแนบ Accessory ไปยังพ่อของมนุษย์
ส่งค่ากลับ
ตัวอย่างโค้ด
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 ซึ่งอธิบายลักษณะปัจจุบันของมัน สามารถใช้เพื่อระบุลักษณะของตัวละครได้อย่างรวดเร็วและการกำหนดลั
ดูเพิ่มเติม
- Players:GetHumanoidDescriptionFromUserId() ซึ่งกลับคืน HumanoidDescription อธิบายตัวละครสำหรับผู้ใช้ที่ผ่านมา
- Players:GetHumanoidDescriptionFromOutfitId() ซึ่งส่งคืน HumanoidDescription ซึ่งประกอบด้วยตัวอ้างสิทธิ์ของ Class.HumanoidDescription ซึ่งเป็นตัวแทนของสินค้าด้านเซิร์ฟเวอร์
- Player:LoadCharacterWithHumanoidDescription() ซึ่งสร้างผู้เล่นด้วยลักษณะที่มาจากผู้ผ่านใน HumanoidDescription
ส่งค่ากลับ
GetBodyPartR15
ฟังก์ชันนี้รวมถึงสิ่งที่ Enum.BodyPartR15 คือ หรือ Part หากส่วนนั้นไม่ใช่ส่วนหนึ่งของร่างกาย R15 ก็จะไม่สามารถกู้คืนส่วนของผู้เล่นได้
สามารถใช้ร่วมกับ Humanoid:ReplaceBodyPartR15() เช่น หากส่วนหนึ่งของร่างกายผู้เล่นสัมผัสกับบางสิ่งบางอย่าง, ฟังก์ชั่นนี้จะกลับไปที่ตัวอินสแตน
คุณสมบัตินี้สามารถมีประโยชน์สำหรับเกมที่ตำแหน่งการโจมตีสำคัญ เช่น สามารถใช้เพื่อกำหนดว่าผู้เล่นถูกโจมตีในขาแล้วปลดล็อกพวกเขาตามอาการบาดเจ็บ
พารามิเตอร์
ตรวจสอบส่วนที่กำหนดเพื่อดูว่ามันเป็นส่วนหนึ่งของร่างกาย R15
ส่งค่ากลับ
ประเภทของตัวอวุธ R15 ของชิ้นส่วนที่ระบุหากชิ้นส่วนนั้นไม่ใช่ตัวอวุธ
GetLimb
ฟังก์ชันนี้กลับรายการ Enum.Limb รายการที่เกี่ยวข้องกับ Part ที่ให้ โดย R15 และ R6 ริกของตัวอย่าง เช่น:
-- สำหรับ R15print(humanoid:GetLimb(character.LeftUpperLeg)) -- รายการ.Limb.LeftLegprint(humanoid:GetLimb(character.LeftLowerLeg)) -- รายการ.Limb.LeftLegprint(humanoid:GetLimb(character.LeftFoot)) -- รายการ.Limb.LeftLeg-- สำหรับ R6print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg
หมายเหตุว่า Humanoid:GetLimb() จะส่งผลให้เกิดข้อผิดพลาดหากพ่อของชิ้นส่วนไม่ได้ตั้งไว้ให้กับพ่อของหุ่น
พารามิเตอร์
ส่งค่ากลับ
Ennum.Limb ส่วนที่ตรงกับ
ตัวอย่างโค้ด
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end
GetState
ฟังก์ชันนี้กลับค่าปัจจุบันของ Enum.HumanoidStateType ซึ่งอธิบายกิจกรรมที่ Humanoid กำลังทำอยู่ในขณะนี้ เช่น การกระโดดหรือว่ายน้ำ
ดูเพิ่มเติม Humanoid:SetStateEnabled() เพื่อเปิดหรือปิดสถานะเฉพาะ และ Humanoid:ChangeState() เพื่อเปลี่ยนสถานะของมนุษย์ปัจจุบัน
ส่งค่ากลับ
ปัจจุบัน Enum.HumanoidStateType ของ Humanoid
ตัวอย่างโค้ด
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 ที่ให้ไว้นี้เปิดใช้งานหรือไม่
ตัวอย่างโค้ด
local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false
Move
ฟังก์ชันนี้ทำให้ Humanoid เดินในทิศทางที่กำหนด Vector3
ข้อกำหนดแต่ถ้าตัวประการ relativeToCamera มีค่า true จะทำให้ทิศทางอยู
humanoid:Move(Vector3.new(0, 0, -1), true)
เมื่อคุณสมบัตินี้ถูกเรียกใช้, Humanoid จะเคลื่อนที่จนกว่าคุณสมบัติจะถูกเรียกอีกครั้ง อย่างไรก็ตาม, หากใช้สคริปต์การค
ฟังก์ชันนี้สามารถเรียกในเซิร์ฟเวอร์ได้ แต่สิ่งนี้ควรทำเฉพาะเมื่อเซิร์ฟเวอร์มี เป็นเจ้าของเครือข่ายของมนุษย์ ในการประกอบของมนุษย์.
ดูเพิ่มเติม Humanoid:MoveTo() ซึ่งทำให้ Humanoid เดินไปยังจุดหนึ่ง และ Player:Move() ซึ่งเรียกใช้งานนี้โดยไม่เป็นทางกุหลาบ
พารามิเตอร์
ทิศทางที่จะเดินเข้า
ตั้งค่าให้เป็น true หากตัวแปร moveDirection ควรถูกนำมาใช้เป็นค่าเชิงเส้นต่อ CurrentCamera
ส่งค่ากลับ
ตัวอย่างโค้ด
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
ฟังก์ชันนี้ทำให้ Humanoid พยายามที่จะเดินไปยังสถานที่ที่กำหนดโดยการตั้งค่า Humanoid.WalkToPoint และ Humanoid.WalkToPart โปรพี่สุด
ค่า ตําแหน่ง และ ส่วน ตรงกับสิ่งที่ Humanoid.WalkToPoint และ 1> Class.Humanoid.WalkToPart1> จะตั้งค่า
หากประการ ส่วน มีตัวอักษรประกอบด้วยตัวอักษรที่เป็นตัวอักษรที่อยู่ในระดับโลก หรือไม่ก็ได้
สถานะ เข้าถึงเป้าหมาย ของมนุษย์จะหมดอายุหลังจาก 8 วินาทีหากมันไม่ได้รับเป้าหมายของมัน นี่เป็นเพื่อให้ NPC ไม่ติดขัดรอ Humanoid.MoveToFinished
MoveTo() สิ้นสุดถ้าเงื่อนไขต่อไปนี้ใช้ได้:
ตัวละครมาถึงจุดหมายปลายทาง
ตัวละครติดขัดและนับเวลาจะหมดอายุแปดวินาที
มูลค่าของ Humanoid.WalkToPoint หรือ Humanoid.WalkToPart เปลี่ยนแปลง
สคริปต์เรียก Humanoid:Move() ด้วยปารามิเตอร์ใหม่ moveDirection
พารามิเตอร์
ตําแหน่งที่จะตั้ง Humanoid.WalkToPoint
The BasePart เพื่อตั้ง Humanoid.WalkToPart
ส่งค่ากลับ
ตัวอย่างโค้ด
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
ฟังก์ชันนี้ลบวัตถุทั้งหมด Accessory ที่สวมใส่โดยผู้ปกครองของมนุษย์สำหรับผู้เล่น Characters จะลบหมวกและอุปกรณ์อื่น ๆ ทั้งหมด
ฟังก์ชันนี้ลบวัตถุ Accessory โดยการเรียก Instance:Destroy() บนพวกเขาซึ่งหมายถึงว่า Parent ของอุปกรณ์จะตั้งเป็น 1> nil1> และล็อค
ดูเพิ่มเติม Humanoid:AddAccessory() เพื่อแนบ Accessory และ Humanoid:GetAccessories() เพื่อรวบรวมทุกวัตถุ 1> Class.Accessory1> ที่เป็นของ 4> Class.Humanoid4>
ส่งค่ากลับ
ตัวอย่างโค้ด
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 จะล้มเหลว
Class.Part ซึ่งจะเป็นบรรพบุรุษของตัวละคร
ส่งค่ากลับ
SetStateEnabled
คุณสมบัตินี้ตั้งค่าว่า Class.Humanoid จะเปิดใช้งานได้สำหรับ Class.Humanoid หรือไม่ เมื่อ
หมายเหตุว่าการใช้ SetStateEnabled() บนเซิร์ฟเวอร์ไม่สามารถเลียนแบบการเปลี่ยนแปลงได้ทั้งหมดในเคลื่อนไหวของลูกค้า หรือในทางกลับกัน
พารามิเตอร์
The Enum.HumanoidStateType ที่จะเปิดใช้งานหรือปิดใช้งาน
true ถ้า state ต้องการเปิดใช้งาน false ถ้า 0> state0> ต้องการปิดใช้งาน
ส่งค่ากลับ
ตัวอย่างโค้ด
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
ฟังก์ชันนี้ลด Humanoid.Health ของ Humanoid โดยจำนวน Class.Humanoid หากไม่ได้รับการป้องกันโดย 2>Class.ForceField2>
ฟังก์ชันนี้ยอมรับค่าเชิญเจ้า จํานวน ตัวองศา สิ่งนี้จะเพิ่ม Humanoid.Health ของมนุษย์ อย่างไรก็ตามสิ่งนี้จะมีผลเฉพาะถ้าไม่มี ForceField ใด ๆ
ForceSeconds ป้องกันการโจมตี
Class.Humanoid ถือเป็นสถานที่ศักดิ์สิทธิ์ถ้า Class.ForceField ตรงตามหนึ่งในเกณฑ์ต่อไปนี้:
- Class.ForceField แบ่งปัน Instance.Parent เดียวกับ Humanoid
- Class.ForceField เป็นบรรพบุรุษของ Humanoid.RootPart ของ Humanoid
เพื่อสร้างความเสียหายให้กับ Humanoid ไม่ว่าจะเป็นผลจากการปรากฏตัวของ ForceFields ใด ๆ ก็ตาม ตั้ง Humanoid.Health โดยตรง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการที่ ForceFields ปกป้อง Humanoids ดูหน้า ForceField
พารามิเตอร์
ความเสียหาย หรือจำนวนเงินที่จะหักจาก Humanoid.Health
ส่งค่ากลับ
ตัวอย่างโค้ด
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
ฟังก์ชันนี้เปลื้อง Tool ใด ๆ ที่ติดตั้งอยู่ในขณะนี้โดย Humanoid
Class.Tool ที่ไม่ได้ติดตั้งจะถูกผูกกับ Backpack ของ Class.Player ที่เกี่ยวข้องกับ Player
หากไม่มี Tool ติดตั้ง ฟังก์ชันนี้จะไม่ทำอะไร
แม้ว่า Tools สามารถติดตั้งโดย NPC (Non Player Characters) ได้ ฟังก์ชันนี้ทำงานได้เฉพาะกับ Humanoids ที่มีคู่มือกับ Class.Player
ดูเพิ่มเติม:
- ใช้ Class.Tool แทน
ส่งค่ากลับ
ตัวอย่างโค้ด
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
คุณสมบัตินี้ทำให้ตัวละครของคุณดูเหมือนกับที่ของผู้ผ่านใน HumanoidDescription คัดลอกของผู้ผ่านใน HumanoidDescription ได้ถูกเก็บไว้ใน HumanoidDescription สำหรั
ฟังก์ชันนี้มีประสิทธิภาพโดยการสรุปว่าเฉพาะฟังก์ชันนี้ใช้เพื่อเปลี่ยนรูปลักษณ์ของตัวละคร และไม่ม
ดูเพิ่มเติม
- Humanoid:GetAppliedDescription() ซึ่งกลับคืน HumanoidDescription ที่ประยุกต์ใช้ไปยังหุ่นยนต์ในขณะนี้
- Players:GetHumanoidDescriptionFromUserId() ซึ่งกลับคืน HumanoidDescription อธิบายตัวละครสำหรับผู้ใช้ที่ผ่านมา
- Players:GetHumanoidDescriptionFromOutfitId() ซึ่งส่งคืน HumanoidDescription ซึ่งประกอบด้วยตัวอ้างสิทธิ์ของ Class.HumanoidDescription ซึ่งเป็นตัวแทนของสินค้าด้านเซิร์ฟเวอร์
- Player:LoadCharacterWithHumanoidDescription() ซึ่งสร้างผู้เล่นด้วยลักษณะที่มาจากผู้ผ่านใน HumanoidDescription
พารามิเตอร์
Class.HumanoidDescription ตรงกัน
ส่งค่ากลับ
ApplyDescriptionReset
คุณสมบัตินี้ทำให้ตัวละครของคุณดูเหมือนกับที่ของผู้ที่ผ่านใน HumanoidDescription แม้ว่าจะเป็นการเปลี่ยนแปลงภายนอกก็ตาม คัดลอกของผ่าน Class.Humanoid
คุณสมบัตินี้จะรับประกันว่าตัวละค
พารามิเตอร์
ตัวอินสแตนซ์ HumanoidDescription ตรงกัน
ส่งค่ากลับ
อีเวนต์
Climbing
เกิดเมื่อความเร็วที่ซึ่ง Humanoid กำลังเปลี่ยนแปลง
Humanoids สามารถปีนขึ้นบันไดที่ทำจาก Parts หรือ TrussParts
Humanoids ปีนขึ้นที่ 70% ของความ Humanoid.WalkSpeed ของพวกเขา
เหตุการณ์นี้จะไม่เคยเกิดขึ้นด้วยความเร็ว 0 เมื่อ Humanoid หยุดปีนขึ้น
ดูเพิ่มเติม:
- สำหรับว่ายน้ำและวิ่งดูเหตุการณ์ Humanoid.Swimming และ Humanoid.Running
- คุณยังสามารถตรวจจับได้ว่า Humanoid กำลังขึ้นโดยใช้เหตุการณ์ Humanoid.StateChanged
- คุณสามารถปิดการเลื่อนขึ้นโดยใช้ฟังก์ชัน Humanoid:SetStateEnabled()
พารามิเตอร์
ตัวอย่างโค้ด
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> ถูกปิดใช้งานจะไม่เกิดเหตุการณ์
ตัวอย่างโค้ด
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 เปิดใช้งาน เมื่อเกิดเหตุการณ์นี้
พารามิเตอร์
FreeFalling
เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก Freefall``Enum.HumanoidStateType
ตัวประกาย เปิด หมายถึงว่า Humanoid กำลังเข้าหรือออกจากสถานะ Freefall
แม้ว่าสถานะ Freefall โดยทั่วไปจะสิ้นสุดลงเมื่อ Humanoid ไปถึงพื้น,
พารามิเตอร์
GettingUp
เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid เข้าหรือออกจากสถานะ Enum.HumanoidStateType.GettingUp สถานะโอนส่งที่
เมื่อ Humanoid พยายามกลับขึ้นมันจะเปิดเหตุการณ์ครั้งแรกด้วยค่า active ของ true ก่อนสักครู่หลังจากการเปิดตัวอีกครั้งด้วยค่า 1> active1>
เพื่อบังคับให้ Humanoid ตกลงมา, ใช้ función Humanoid:ChangeState() ด้วย Enum.HumanoidStateType.FallingDown .
พารามิเตอร์
HealthChanged
เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid.Health เปลี่ยนแปลง อย่างไรก็ตาม มันจะไม่เกิดขึ้นหากสุขภาพเพิ่มขึ้นจากมูลค่าเท่ากันหรือมากกว่า Humanoid.MaxHealth
เมื่อ Humanoid.Health ถึงศูนย์, Humanoid จะตายและเหตุการณ์ Humanoid.Died จะประกายไฟ เหตุการณ์นี้จะยิงด้วยค่าศูนย์
พารามิเตอร์
ค่าใหม่ของ Humanoid.Health
ตัวอย่างโค้ด
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)
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() ฟังก์ชัน
พารามิเตอร์
MoveToFinished
เหตุการณ์นี้เกิดขึ้นเมื่อ Humanoid เสร็จสิ้นการเดินทางไปยังเป้าหมายที่ประกาศโดย Humanoid.WalkToPoint และ Humanoid.WalkToPart โปรพี่
คุณสมบัติ Humanoid.WalkToPoint และ Humanoid.WalkToPart สามารถตั้งค่าได้อย่างอิสระหรือโดยใช้ฟังก์ชัน Humanoid:MoveTo()
หาก Humanoid ไปถึงเป้าหมายของมันในเวลา 8 วินาที, เหตุการณ์นี้จะกลับมาด้วย ไปยัง เป็นความจริง หากเป้าหมา
พารามิเตอร์
ตัวอย่างโค้ด
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 ที่ถูกปิดใช้งาน แม้ว่าจะเป็นเช่นนี้ แต่ก็ยังคงสามารถใช้งานได้โดยผู้พัฒนา
พารามิเตอร์
Ragdoll
เหตุการณ์นี้จะเกิดขึ้นเมื่อ Humanoid เข้าหรือออกจาก Ragdoll``Enum.HumanoidStateType
ตัวอักษร active จะมีค่า true หรือ false เพื่อระบุว่ากำลังเข้าหรือออก
ใช้ Humanoid:SetStateEnabled() เพื่อปิดการใช้งานสถานะการเปลี่ยนแปลงเพื่ออยู่ในสถานะ Ragdoll
ดูเพิ่มเติม:
- Humanoid.FallingDown สำหรับเหตุการณ์ Humanoid ที่เชื่อมโยงกับสถานะ FallingDown ซึ่งมีพฤติกรรมเช่นเดียวกับ 0> Ragdoll0>
พารามิเตอร์
Running
เหตุการณ์นี้จะเกิดขึ้นเมื่อความเร็วที่ Humanoid กําลังเปลี่ยนแปลง
ในขณะที่เริ่มต้นใช้ Humanoids ครอบคลุม โดยปกติจะมี Humanoid.WalkSpeed ในสตั๊ดส์ต่อวินาที
เมื่อ Humanoid หยุดวิ่งเหตุการณ์นี้จะเริ่มต้นด้วยความเร็ว 0
ดูเพิ่มเติม:
- สำหรับว่ายน้ำและปีนเขาดูเหตุการณ์ Humanoid.Swimming และ Humanoid.Climbing
- คุณยังสามารถตรวจจับได้ว่า Humanoid กำลังประมวลผลโดยใช้เหตุการณ์ Humanoid.StateChanged
พารามิเตอร์
ตัวอย่างโค้ด
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 ซึ่งระบุว่าที่นั่งนี้มีคนนั่งอยู่ในขณะนี้หากมี
พารามิเตอร์
ตัวอย่างโค้ด
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 ของ
ดูเพิ่มเติม
- Humanoid:GetState() และ Humanoid:ChangeState() เพื่อรับและตั้งสถานะ
- Humanoid:SetStateEnabled() เพื่อเปิดใช้งานและปิดใช้งานสถานะที่กำหนดเฉพาะ
พารามิเตอร์
พิมพ์
พิมพ์
ตัวอย่างโค้ด
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)
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 สำหรับซึ่งสถานะที่เปิดใช้งานได้ถูกเปลี่ยนแปลง
จริงหากสถานะถูกเปิดใช้งานแล้ว
ตัวอย่างโค้ด
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> กำลังเค
พารามิเตอร์
Swimming
เหตุการณ์นี้จะเกิดขึ้นเมื่อความเร็วที่ Humanoid ว่ายน้ำในน้ำ Terrain เปลี่ยนแปลง
Humanoids ว่ายน้ำที่ 87.5% ของ Humanoid.WalkSpeed ของพวกเขา
เหตุการณ์นี้จะไม่เคยเกิดขึ้นด้วยความเร็ว 0 เมื่อ Humanoid หยุดว่ายน้ำ
ดูเพิ่มเติม:
- สำหรับการประมวลผลและการปีนเขา โปรดดู Humanoid.Running และ Humanoid.Climbing เหตุการณ์
- คุณยังสามารถตรวจจับได้ว่า Humanoid กำลังว่ายน้ำโดยใช้เหตุการณ์ Humanoid.StateChanged
- คุณสามารถปิดการว่ายน้ำโดยใช้คุณสมบัติ Humanoid:SetStateEnabled()
พารามิเตอร์
Touched
เหตุการณ์นี้จะเกิดขึ้นเมื่อหนึ่งในของขวางของมนุษย์มีการติดต่อกับอีก BasePart ตัว The BasePart ซึ่งเป็นของขวางของมนุษย์ด้วยตัวมนุษย์เองนั้นจะได้รับการให้
เหตุการณ์นี้จะไม่เกิดขึ้นเมื่อ Humanoid สัมผัสกับตัวเอง
ทางเลือกอื่น
อย่างไรก็ตาม เหตุการณ์ Humanoid.Touched เป็นประโยชน์ คุณควรพิจารณาว่ามีตัวเลือกอื่นที่เหมาะกับความต้องการของคุณมากขึ้นหรือไม่
- ในกรณีส่วนใหญ่ จะแนะนำให้เชื่อมต่อกิจกรรม BasePart.Touched สำหรับ BaseParts ท
- เมื่อพยายามที่จะทำงานเมื่อ Humanoid ได้ลงจอดบนพื้น, อีเวนต์ Humanoid.StateChanged เหมาะสมกว่า อย่างไรก็ตาม, คุณสามารถตรวจสอบ Humanoid.FloorMaterial
โน้ต
- การเชื่อมต่อกับเหตุการณ์นี้จะทำให้ TouchTransmitter เกิดขึ้นในทุกส่วน
- ขณะนี้ไม่มีตัวเทียบเท่าของ BasePart.TouchEnded สำหรับ Humanoids
พารามิเตอร์
ตัวอย่างโค้ด
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)