Humanoid
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Hình người là một đối tượng đặc biệt được cung c
R6
- Một cấu hình nhân vật cơ bản sử dụng 6 bộ phận cho các chi.
- Phần Head phải được kết dính với một phần tên là Torso, hoặc hình người sẽ chết ngay lập tức.
- Các bộ phận cơ thể được áp dụng bằng cách sử dụng CharacterMesh đối tượng.
- Một số tính chất, chẳng hạn như Humanoid.LeftLeg và Humanoid.RightLeg, chỉ hoạt động với R6.
R15
- Phức tạp hơn R6, nhưng cũng rất dễ dàng và bền vững hơn.
- Sử dụng 15 bộ phận cho các chi.
- Phần Head phải được kết dính với một phần tên là UpperTorso hoặc hình người sẽ chết ngay lập tức.
- Các bộ phận cơ thể phải được tập họp trực tiếp.
- Có thể được thay đổi động nhịp bằng cách sử dụng các đối tượng đặc biệt NumberValue có trong Hình người.
- Hình người sẽ tự động tạo ra Vector3Value đối tượng có tên là OriginalSize bên trong mỗi chi dưới.
- Nếu một NumberValue được gọi là một trong những tên sau theo dõi, nó sẽ được sử dụng để điều khiển chức năng bảo vệ kích thước:
- Độ sâu cơ thể
- Thước đo Chiều cao cơ thể
- Thước đo BodyWidth
- Thước đo
Mẫu mã
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)
Tóm Tắt
Thuộc Tính
Điều chỉnh xem mô tả dòng mã nào sẽ tự động nhảy khi họ đánh vào một vật cản như một người chơi trên một thiết bị di động.
AutoRotate thiết lập có hay không thì hình người sẽ tự động quay mặt về hướng mà họ đang di chuyển.
Khi bật, AutomaticScalingEnabled gây ra kích thước của nhân vật thay đổi theo giá trị trong đơn vị thay đổi kích thước của con cái hình người.
Xác định xem đầu ghép của hình người có bị vỡ khi ở trong trạng thái Enum.HumanoidStateType.Dead .
Một mức dịch chuyển được áp dụng cho vị trí chủ đề của Camera khi CameraSubject của nó được đặt vào đây.
Điều khiển hành vi khoảng cách của tên và sức khỏe của hình người.
Đặt chữ của một Hình người, hiển thị trên đầu của họ.
Mô tả Enum.Material đang đứng trên. Nếu Humanoid không đứng trên bất kỳ thứ gì, giá trị của thuộc tính này sẽ là Humanoid.
Mô tả sức khỏe hiện tại của Humanoid trên khoảng cách [0, Humanoid.MaxHealth]
Sử dụng kết hợp với property DisplayDistanceType để điều khiển khoảng cách mà thanh sức khỏe của hình người có thể được nhìn thấy.
Điều khiển khi dòng sống của người này được cho phép để hiển thị.
Xác định khoảng cách từ mặt đất mà Humanoid.RootPart nên.
Nếu true , the Humanoid jumps with an upwards force.
Cung cấp kiểm soát về chiều cao mà Humanoid nhảy vào.
Xác định mức lực lên cao bao nhiêu đối với Humanoid khi nhảy.
Giá trị tối đa của một hình người Health .
Góc dốc tối đa mà một hình người có thể di chuyển mà không bị trượt.
Mô tả hướng mà Humanoid đang đi.
Được sử dụng cùng với thuộc tính Humanoid.DisplayDistanceType để điều khiển khoảng cách mà tên của hình người có thể được xem.
Kiểm tra xem dòng tên và dòng sống của một hình người có thể được nhìn thấy đằng sau tường hoặc các vật thể khác.
Xác định có phải Humanoid hiện đang ở trong trạng thái Enum.HumanoidStateType.PlatformStanding không.
Cho phép các nhà phát triển tắt chức năng nơi mà một người chơi Character|character đó chết nếu Neck Motor6D được loại bỏ hoặc kết nối mạnh mẽ ngay cả trong một giây.
Mô tả apakah đây là Humanoid sử dụng cấu hình R6 hoặc cấu hình R15 mới.
Một tham khảo đến cơ thể Hình người của con người.
Một tham chiếu đến ghế ngồi mà một Humanoid hiện đang ngồi, nếu có.
Mô tả có phải Humanoid đang ngồi hiện tại.
Mô tả vị trí 3D mà Player đang điều khiển Humanoid cuối cùng đã được nhấp chuột trong thế giới bằng cách sử dụng một Tool.
Xác định có sử dụng JumpHeight (giả) hoặc Humanoid.JumpPower (đúng) property.
Mô tả tốc độ di chuyển tối đa của hình người trong studs mỗi giây.
Một tham chiếu đến một phần cuối của máy chủ đang cố gắng được đạt đến bởi một người dùng.
Vị trí mà một hình người đang cố gắng đạt đến, sau khi gọi điện đến Humanoid:MoveTo() được thực hiện.
Phương Pháp
Kết nối Class.Accessory với cha của hình người.
Lập một cây Motor6D bằng cách kết hợp các đối tượng Attachment để tạo thành một cây có nhiều cột.
Đặt Humanoid để nhập Enum.HumanoidStateType đã được cung cấp.
Đã trả lại một loạt các đối tượng Accessory đang mặc mà cha mẹ của người dùng đang mặc.
Lại một bản sao của humanoid's cached HumanoidDescription which describes its current look.
Truyền một phần cơ thể này (phần cơ thể nên là con của Humanoid và là con của một Model) để nhận được Enum.BodyPartR15 của Part .
Điều chỉnh hiện tại của người Enum.HumanoidStateType .
Trả lại có phải Enum.HumanoidStateType được kích hoạt cho Humanoid hay không.
Gây ra Humanoid để đi theo hướng đã được chỉ định.
Khiến cho Humanoid thử đi bộ đến vị trí đã định bằng cách thiết lập Humanoid.WalkToPoint và Humanoid.WalkToPart속性.
Loại bỏ tất cả Accessory đối tượng đeo bởi cha của hình người.
Thay thế một phần của cơ thể Hình Người bằng một phần khác.
Đặt whether a given Enum.HumanoidStateType is enabled for the Humanoid .
Giảm Humanoid.Health của Class.Humanoid bằng cách cho Humanoid bằng số tiền đã được định lượng nếu nó không được bảo vệ bởi một 1> Class.ForceField1> .
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
Làm cho nhân vật trông giống như những gì đã qua ở HumanoidDescription .
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
Làm cho nhân vật trông giống như điều đã qua HumanoidDescription , ngay cả sau những thay đổi bên ngoài.
Chơi những cảm xúc và trả lại nếu thành công.
Sự Kiện
Lửa khi tốc độ mà một Humanoid đang leo thay đổi.
Lửa khi Humanoid chết.
Lửa khi Humanoid vào hoặc rời khỏi FallingDown``Enum.HumanoidStateType .
Lửa khi Humanoid vào hoặc rời khỏi Freefall``Enum.HumanoidStateType .
Lửa khi Humanoid vào hoặc rời khỏi GettingUp``Enum.HumanoidStateType .
Lửa khi Humanoid.Health thay đổi (hoặc khi Humanoid.MaxHealth được cài đặt).
Lửa khi Humanoid vào và rời khỏi Jumping``Enum.HumanoidStateType .
Lửa khi Humanoid kết thúc việc di chuyển đến một mục tiêu đã được tuyên bố bởi Humanoid:MoveTo() .
Lửa khi Humanoid vào hoặc rời khỏi PlatformStanding``Enum.HumanoidStateType .
Lửa khi Humanoid vào hoặc rời khỏi Ragdoll``Enum.HumanoidStateType .
Lửa khi tốc độ mà một Humanoid thay đổi.
Bắt lửa khi một Humanoid hoặc ngồi trong một Seat hoặc VehicleSeat hoặc đứng dậy.
Lửa khi trạng thái của Humanoid được thay đổi.
Lửa khi Humanoid:SetStateEnabled() được gọi trên Humanoid .
Lửa khi Humanoid vào hoặc rời khỏi StrafingNoPhysics``Enum.HumanoidStateType .
Bắt lửa khi tốc độ mà một Humanoid bơi trong nước Terrain thay đổi.
Lửa khi một trong những vị trí của hình người có tiếp xúc với một trong những ... BasePart khác.
Thuộc Tính
AutoJumpEnabled
AutoJumpEnabled đặt có hay không Humanoid sẽ thử nhảy tự động qua một vật cản nó đang đi qua.
Hiện tại, thuộc tính này chỉ hoạt động khi các điều kiện sau đây đúng:
- Mô hình nhân vật của Humanoid là Class.Player.Character của một Class.Player .
- Người chơi đó đang sử dụng các nút cảm điều khiển.
Khi một nhân vật của người chơi được tạo, giá trị thuộc tính trùng với thuộc tính Player.AutoJumpEnabled của người chơi - mà lại trùng với thuộc tính StarterPlayer.AutoJumpEnabled .
Mẫu mã
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
Tính chất AutoRotate mô tả có hay không có sự quay tự động của Hình người để mặt vào hướng mà họ đang di chuyển. Khi đặt vào true, mô hình nhân vật sẽ từ từ quay mặt về hướng di chuyển của họ cho đến khi một lực quay được áp dụng cho <
Nếu mô hình nhân vật xảy ra là nhân vật của một người chơi, thì hành vi của quay của Hình người ảnh hưởng bởi thuộc tính quay của UserGameSetting.
Khi thuộc tính AutoRotate được cài đặt thành true, thuộc tính RotateType có những hiệu ứng sau đây trên sự quay của hình người:
<tbody><tr><td>Di chuyển tương đối</td><td /><td /></tr><tr><td>Camera tương đối</td><td>Nhân vật sẽ quay mặt về phía máy ảnh.</td><td>Người chơi có máy ảnh của họ bị mời vào chế độ thứ nhất, hoặc họ đang ở chế độ Shift-lock.</td></tr></tbody>
Kiểu chuyển động | Hành vi | Kiến thức |
---|
Mẫu mã
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
Hình người có sáu giá trị kích thước trẻ em bao gồm BodyDepthScale, BodyHeightScale, BodyProportionScale, 2> BodyTypeScale2>, 5> HeadScale</
BreakJointsOnDeath
Xác định liệu các mối nối của hình người bị vỡ khi trong trạng thái Enum.HumanoidStateType.Dead . Mặc định để true.
CameraOffset
Thuộc tính CameraOffset định một mức độ lệch cho vị trí chủ đề của máy ảnh khi mà Camera.CameraSubject của nó được đặt vào cái này Humanoid .
Độ dịch chỉ được áp dụng trong không gian mục người chơi, so với hướng của Humanoid's (0, 10, 0) mục tiêu. Ví dụ, một giá trị dịch chỉ Datatype.Vector3 độ dịch 0> (0, 10, 0)0> độ dịch của má
Mẫu mã
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
Cuộn dữ liệu DisplayDistanceType kiểm soát hành vi khoảng cách của tên và hiển thị sức khỏe của con người. Đặt tính này bằng cách sử dụng Enum.HumanoidDisplayDistanceTypeenum với ba giá trị có sẵn, mỗi giá trị đều có một bộ quy tắc riêng:
- Khi đặt để Viewer, hình người nhìn thấy tên / sức khỏe của các hình người khác trong phạm vi của chính nó NameDisplayDistance và HealthDisplayDistance .
- Khi đặt vào Subject, hình người lấy đi kiểm soát hoàn toàn trên tên của mình và hiển thị sức khỏe của nó qua các giá trị NameDisplayDistance và 1> HealthDisplayDistance1> của nó.
- Khi đặt sang None, hàng tên và dòng sức khỏe của hình người sẽ không xuất hiện dưới bất kỳ điều kiện nào.
Xem Tên nhân vật / Hiển thị sức khỏe để có một hướng dẫn chi tiết về cách điều khiển những tên nhân vật và dòng sức khỏe.
Mẫu mã
local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
DisplayName
DisplayName là một tính năng định tên cho Humanoid khi nó hiển thị khi có thể nhìn thấy. Bởi mặc định, một Humanoid mới sẽ có giá trị của một chuỗi trống. Nếu DisplayName là một chuỗi trống, hiển thị tên của Humanoid sẽ mặc định là tên của cha mẹ
Đang tải Nhân vật Người chơi
Khi người chơi tải nhân vật của họ, hoặc tự động hoặc thông qua sử dụng LoadCharacter() , thì Humanoid được tạo bởi máy chủ sẽ có định tính DisplayName của người chơi.
Nhân vật Khởi đầu và Người lớn
Khi một Class.Humanoid được gọi là Humanoid đã được chuỗi
EvaluateStateMachine
FloorMaterial
Đây là một thuộc tính đọc-chỉ định mà mô hình Enum.Material hiện đang đứng trên. Nó hoạt động với cả các thuộc tính thường Humanoid và Parts.
Mẫu mã dưới đây cho thấy cách lắng nghe khi điều này thay đổi bằng cách sử dụng Object:GetPropertyChangedSignal() . Khi vật liệu người đang đứng trên thay đổi, nó sẽ in một thông điệp cho thấy vật liệu mới đang đứng trên.
local Humanoid = route.to.humanoid
Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
print("New value for FloorMaterial: " .. tostring(Humanoid.FloorMaterial))
end)
Hang động
- Khi Humanoid không đứng trên một sàn, giá trị của thuộc tính này sẽ được đặt thành Air .
- Điều này xảy ra vì các thuộc tính của Enum không thể có giá trị trống.
- Điều này có thể gây ra một số sự lẫn lộn nếu một phần được cài đặt vật liệu của nó thành Không khí, mặc dù trên thực tế, các phần không nên sử dụng vật liệu đó ở đầu địa điểm.
- Mô hình nhân vật của Humanoid phải có thể va chạm với sàn, hoặc nó sẽ không được phát hiện.
- Bạn không thể kiểm tra xem Humanoid có đang bơi với giá trị này hay không. Bạn nên sử dụng chức năng Humanoid:GetState() của nó.
Health
Đặt tính này đại diện cho sức khỏe hiện tại của Humanoid . Giá trị được giới hạn trong khoảng từ 0 đến MaxHealth . Nếu humanoid đã chết, giá trị này được đặt liên tục về 0.
Lưu ý rằng hàm TakeDamage() có thể được sử dụng để trừ khỏi Health thay vì cài đặt trực tiếp.
Tái tạo sức khỏe
Bởi mặc định, một lệnh phục hồi sức khỏe bị động trong một người chơi bị tắt. Điều này gây ra những nhân vật chơi không chết không được tái tạo 1% của Class.Humanoid.MaxHealth|
Hiển thị thanh sức khỏe
Khi Health thấp hơn MaxHealth, một thanh sức khỏe được hiển thị trong kinh nghiệm. Độ hiển thị của thanh sức khỏe dựa trên Class.Humanoid.HealthDisplayDistance|
Xem Tên nhân vật / Hiển thị sức khỏe để có một hướng dẫn chi tiết về cách điều khiển những tên nhân vật và dòng sức khỏe.
Cái chết
Khi giá trị sức khỏe của nhân vật đạt 0, Humanoid tự động chuyển sang trạng thái Enum.HumanoidStateType.Dead . Ở trạng thái này, Class.Humanoid.Health
HealthDisplayDistance
Đây là một số được sử dụng cùng với property DisplayDistanceType để kiểm soát khoảng cách mà dòng sức khỏe của hình người có thể được nhìn thấy.
Xem Tên nhân vật / Hiển thị sức khỏe để có một hướng dẫn chi tiết về cách điều khiển những tên nhân vật và dòng sức khỏe.
HealthDisplayType
Đặt tính này để điều khiển khi dòng sống của một người được cho phép để hiển
Lưu ý rằng thuộc tính này hoạt động độc lập với thuộc tính HealthDisplayDistance của người lớn đóng vai trò trong việc làm cho dòng sống b
Xem Tên nhân vật / Hiển thị sức khỏe để có một hướng dẫn chi tiết về cách điều khiển những tên nhân vật và dòng sức khỏe.
HipHeight
Xác định khoảng cách (in studs) khỏi mặt đất mà RootPart nên là khi con người đang đứng. RigType ảnh hưởng đến cách hoạt động của thuộc tính này.
Đối với R15 các thiết bị, một chiều cao phù hợp được lưu cấu hình để đảm bảo chiều cao của RootPart được chính xác. Chiều cao của chân không được sử dụng. Chiều cao của toàn bộ hình người có thể được mô tả bằng công thức sau:
Height = (0.5 * RootPart.Size.Y) + HipHeight
Đối với R6 các thiết bị, HipHeight thay vì mô tả một mức dốc tương đối. Chiều cao tổng của hình người có thể được mô tả bằng công thức sau:
Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
Jump
Nếu true , thì Humanoid nhảy với một lực lên cao bằng giá trị của Humanoid.JumpPower hoặc chiều cao của 1> Class.Humanoid.JumpHeight1>, tùy thuộc vào giá
JumpHeight
Cung cấp kiểm soát về chiều cao của một Humanoid nhảy, trong studs. Giá trị khởi đầu của thuộc tính này được xác định bằng giá trị của StarterPlayer.CharacterJumpHeight , mặc định là 7,2.
Mặc dù đặt thuộc tính này để 0 sẽ hiệu quả ngăn chặn hình người nhảy, nhưng được khuyến nghị tắt nhảy bằng cách tắt trạng thái Enum.HumanoidStateType.Jumping .
Đặ性 này chỉ xuất hiện trong cái Properties window nếu Humanoid.UseJumpPower được set to false , vì nó sẽ không liên quan đến nó (thay vào đó, 1> Class.Humanoid.JumpPower1> được sử dụng).
JumpPower
Xác định mức lực lên cao được áp dụng cho Humanoid khi nhảy. Giá trị khởi đầu của thuộc tính này được xác định bằng giá trị StarterPlayer.CharacterJumpPower mặc
Mặc dù đặt thuộc tính này để 0 sẽ hiệu quả ngăn chặn hình người nhảy, nhưng được khuyến nghị tắt nhảy bằng cách tắt trạng thái Enum.HumanoidStateType.Jumping .
Đặ性 này chỉ xuất hiện trong cái Properties window nếu Humanoid.UseJumpPower được set to true , vì nó sẽ không liên quan đến nó (thay vào đó, 1> Class.Humanoid.JumpHeight1> được sử dụng).
MaxHealth
Giá trị tối đa của một hình người Health .
Giá trị của thuộc tính này được sử dụng cùng với thuộc tính Health để hiển thị màn hình hiển thị sức khỏe mặc định của hình người. Khi một hì
MaxSlopeAngle
Đặ性 này xác định góc dốc tối đa mà một hình người có thể leo trèo. Nếu góc dốc của một hình người lớn hơn góc dốc của một hình người, họ sẽ trượt xuống dốc.
Khi một nhân vật xuất hiện, giá trị này được đặt theo giá trị của StarterPlayer.CharacterMaxSlopeAngle.
Giá trị của thuộc tính này được giới hạn giá trị giữa 0° và 89°. Nó mặc định là 89°, vì vậy hình người có thể leo trèo hầu như bất kỳ dốc nào họ muốn bởi mặc định.
Mẫu mã
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
Di chuyển Hướng là một tính chất đọc chỉ mà mô tả hướng mà một Humanoid đang bước vào, như một vektor đơn vị hoặc một vektor độ dài. Hướng được mô tả trong không gian thế giới.
Vì đặt tính này chỉ có thể được thiết lập bởi một Script hoặc LocalScript .
Mẫu mã
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
Cột TênHiểnThịKhoảngCách là một số đoạn sử dụng cùng với cột Humanoid.DisplayDistanceType để điều khiển khoảng cách mà tên của hình người có thể được xem.
Xem Tên nhân vật / Hiển thị sức khỏe để có một hướng dẫn chi tiết về cách điều khiển những tên nhân vật và dòng sức khỏe.
NameOcclusion
Kiểm tra xem dòng tên và dòng sống của một người nào đó có thể được nhìn thấy đằng sau tường hoặc các thống kê khác không. Đây là một giá trị Enum.NameOcclusion và có thể được tùy chỉnh để bao gồm tất cả các tên, tên kẻ thù hoặc tắt tính năng tắt tính nă
Trong các trường hợp khi LocalPlayer không có Class.Humanoid liên quan, thì điều này đã ứng dụng cho chủ đề Humanoid .
Xem Tên nhân vật / Hiển thị sức khỏe để có một hướng dẫn chi tiết về cách điều khiển những tên nhân vật và dòng sức khỏe.
Mẫu mã
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
Xác định có phải Humanoid đang hiện tại trong trạng thái Enum.HumanoidStateType.PlatformStanding không. Khi đúng, Humanoid đang ở trong trạng thái nó đang rơi xuống và không thể di chuyển. This state behaves similar to sitting, except that jumping does not free the humanoid from the state.
RequiresNeck
Cho phép các nhà phát triển tắt hành vi nơi một người chơi Character|character đó chết nếu Neck Motor6D được loại bỏ hoặc kết nối mạng ngay cả trong một giây nữa. Đặt tính này về giá trị true.
RigType
RigType mô tả apakah một Humanoid đang sử dụng các rương R6 truyền thống hoặc rương R15 mới hơn.
R6 giàn khoan sử dụng 6 bề mặt được thấy Parts trong khi R15 giàn khoan sử dụng 15 bề mặt được thấy Parts . R15 giàn khoan có nhiều mắt hơn R6, làm cho chúng nhiều hơn khi được hoạt hóa.
Lưu ý rằng nếu thiết lập thuộc tính này sai, Humanoid sẽ không hoạt động đúng cách. Ví dụ, nếu R15 hình người của R
RootPart
Một tham khảo đến các đối tượng HumanoidRootPart của Humanoid đó là phần lái lược của người dùng điều khiển hoạt động của một người dùng qua thế giới 3D. Bộ phận này thường được giấu khỏi mắt.
Lưu ý rằng trong trường hợp của nhân vật người chơi, RootPart giống như Model.PrimaryPart của mô hình Player.Character .
SeatPart
SeatPart là một tham chiếu đến ghế ngồi mà một Humanoid hiện đang ngồi, nếu có. Giá trị của thuộc tính này có thể là một Seat hoặc một VehicleSeat . Nó sẽ là 1> nil1> nếu
Ghi chú:
- Đối với một bool miêu tả nếu Humanoid hiện đang ngồi hoặc không, xem Humanoid.Sit
Sit
Thuộc tính Sit là một biến đổi để cho phép Humanoid đang ngồi hiện tại có đang ngồi hay không. Humanoids có thể được buộc vào
Ghi chú:
- Các Seat hoặc VehicleSeat của Class.Humanoid có thể được nhận được bằng cách sử dụng thuộc tính Humanoid
- Có thể phát hiện khi một Humanoid ngồi bằng cách kết nối với sự kiện Humanoid.Seated .
TargetPoint
Không sử dụng Thuộc tính này chỉ hoạt động với Chế độ Thử nghiệm được bật, đã bị tạm dừng hoàn toàn.
Thuộc tính này mô tả một vị trí 3D trong không gian nơi Player đang điều khiển cái này Humanoid với một Tool được trang bị.
Thuộc tính này được sử dụng chủ yếu bởi các công cụ class để xác định nơi mà một hình người đang mục tiêu khi họ kích hoạt một công cụ. Nếu bạn cho một người dùng một ngọn tên lửa cổ điển, thiết lập Mục ti
UseJumpPower
Khi một nhân vật xuất hiện, giá trị này được đặt theo giá trị của StarterPlayer.CharacterUseJumpPower mà mặc định là true.
Khi nhảy, với các thiết lập này để true, giá trị Humanoid.JumpHeight là sử dụng để đảm bảo các nhảy hình người đến đó. Với các thiết lập này để false, giá trị Humanoid.JumpPower được sử dụng để áp dụng một lực
WalkSpeed
Đặc tính này mô tả tốc độ mà Humanoid đi bộ nhanh trong một giây. Nó mặc định giá trị của StarterPlayer.CharacterWalkSpeed (16), có nghĩa là một nhân vật nhân vật có thể di chuyển 16 studs trong bất kỳ hướng nào mỗi giây.
Ghi chú
- Khi được điều khiển trên một thiết bị di động hoặc gamepad, một hình người có thể đi chậm hơn Class.Humanoid.WalkSpeed|WalkSpeed của nó nếu ngón tay điều khiển được di chuyển một độ từ trung tâm.
- Bạn có thể đóng băng một hình người bằng cách thiết lập WalkSpeed để 0; điều này ngăn chặn người điều khiển di chuyển nó qua các cơ chuyển động mặc định.
- Tập lệnh hoạt họa mặc định tăng tốc độ di chuyển của hình người bằng cách tính tổng số vị trí điểm chính xác của nó so với tốc độ mặc định của 16 studs/giây.
WalkToPart
WalkToPart là một tham chiếu đến một phần mà người dùng đang cố gắng đạt đến. Đặt thuộc tính này thường xảy ra khi một phần được truyền như một trong những 2nd argument của hàm Humanoid:MoveTo() của người dùng.
Khi WalkToPart được cài đặt và một người nào đó đang chủ động cố gắng đạt đến phần, nó sẽ tiếp tục cập nhật mục tiêu Vector3 của nó để là vị trí của phần, plus the Humanoid.WalkToPoint được dịch trong không gian nhân vật so với sự quay của phần.
Điều này có thể được mô tả bằng Lua như:
goal = humanoid.WalkToPart.CFrame:pointToObjectSpace(humanoid.WalkToPoint)
Hang động
- Đặt giá trị của WalkToPart không đủ để tạo ra một bước bắt đầu là hình người theo một phần.
- Hộp sọ được yêu cầu bắt đầu cố gắng đạt được một mục tiêu khi giá trị của WalkToPoint được thay đổi.
- Điều này có thể được thay đổi trong tương lai.
- Trạng thái đạt đến mục tiêu của một hình người sẽ hết hạn sau 8 giây nếu nó không đạt đến mục tiêu của nó.
- Điều này được thực hiện để NPC không bị mắc kẹt khi đang chờ đợi Humanoid.MoveToFinished để bắn.
- Nếu bạn không muốn điều này xảy ra, bạn nên gọi MoveTo nhiều lần để giữ cho thời gian trễ được đặt lại.
WalkToPoint
WalkToPoint mô tả vị trí 3D trong không gian mà một người nhân vật đang cố gắng đạt đến, sau khi đã được kêu gọi làm điều đó bởi hành động Humanoid:MoveTo() của người nhân vật.
Nếu một hình người được cài đặt, mục tiêu được đặt bằng cách biến đổi WalkToPoint so với vị trí và quay của các bộ phận. Nếu WalkToPoint không được cài đặt, thì hình người sẽ cố gắng đạt đến vị trí 3D được đặt trực tiếp bởi WalkToPoint.
Hang động
- Giá trị của WalkToPoint phải được thay đổi thành một giá trị khác để người nhân vật bắt đầu di chuyển đến nó.
- Nếu bạn muốn tạo một chuyến đi hình người đến 0,0,0 , bạn nên sử dụng chức năng di chuyển của hình người.
- Điều này có thể được thay đổi trong tương lai.
- Trạng thái đạt đến mục tiêu của một hình người sẽ hết hạn sau 8 giây nếu nó không đạt đến mục tiêu của nó.
- Điều này được thực hiện để NPC không bị mắc kẹt khi đang chờ đợi Humanoid.MoveToFinished để bắn.
- Nếu bạn không muốn điều này xảy ra, bạn nên gọi MoveTo nhiều lần để giữ cho thời gian trễ được đặt lại.
Mẫu mã
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)
Phương Pháp
AddAccessory
Phương pháp này kết hợp Accessory với cha của hình người.
Khi gọi phương thức này, một Accessory đượ
Nếu yêu cầu Attachment không thể được tìm thấy, thì Accessory sẽ ở trong phụ huynh của hình người nhưng nó sẽ không được kết nối.
Thông thường, các mối hàn phụ kiện được tạo trên máy chủ, nhưng chúng có thể được tạo trên máy chủ dưới một số điều kiện nhất định. Trong những trường hợp này, các cuộc gọi bên client đế
Tham Số
Class.Accessory để được kết dính.
Lợi Nhuận
Mẫu mã
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
Phương thức này tập hợp một cây Motor6D của các kết nối cho Humanoid . Motor6D các kết nối được yêu cầu cho sự phát lại của 1> Class.Animation|Animations1> .
Bắt đầu từ humanoid's RootPart , phương thức này thu thập tất cả Attachments
Humanoid:BuildRigFromAttachments() cũng tăng kích thước nhân vật và thiết lập màu sắc cơ thể.
Lợi Nhuận
Mẫu mã
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
Hàm này khiến cho Humanoid đi vào Enum.HumanoidStateType đã được cho, mô tả hoạt động mà Humanoid đang thực hiện.
Vui lòng xem trang Enum.HumanoidStateType để biết thêm thông tin về các trạng thái, vì một số có tên không thích hợp. Ví dụ, Enum.HumanoidStateType.Running mô tả một trạng thái nơi chân của hình người đang ở trên mặt đất, bao gồm khi chúng đang chờ
Do hành vi mặc định của Humanoid, một số trạng thái sẽ được thay đổi tự động khi được cài đặt. Ví dụ:
- Đặt trạng thành Enum.HumanoidStateType.Swimming khi không có humanoid trong nước sẽ khiến nó được tự động đặt thành Enum.HumanoidStateType.GettingUp .
- Như nó không được sử dụng, thiết lập trạng thái để Enum.HumanoidStateType.PlatformStanding sẽ khiến trạng thái hình người được tự động thiết lập thành Enum.HumanoidStateType.Running .
Xem thêm Humanoid:SetStateEnabled() để bật hoặc tắt một trạng thái cụ thể, và Humanoid:GetState() để lấy trạng thái người dùng hiện tại.
Tham Số
Class.Humanoid là Humanoid để thực hiện.
Lợi Nhuận
Mẫu mã
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
Hàm này làm cho Humanoid trang bị Tool đã được cung cấp.
Ví dụ bên dưới sẽ khiến cho một Player trang bị một công cụ trong Workspace có tên 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
Khi chức năng này được gọi, hình người sẽ tự động bỏ bỏ bất kỳ Tools mà nó hiện đang trang bị
Mặc dù chúng sẽ được trang bị, Tools đối với điều kiện Tool.RequiresHandle là trên sẽ không hoạt động nếu chúng không có handle, bất kể việc sử dụng chức năng này để trang bị chúng hay không
Xem thêm:
- Để bỏ trang bị công cụ, hãy sử dụng Humanoid:UnequipTools()
Tham Số
Lợi Nhuận
GetAccessories
Hàm này trả về một loạt các Accessory đối tượng mà cha mẹ của người hình người hiện đang mặc. Tất cả các Accessory đối tượng này sẽ được bao gồm, bất kể là chúng được kết nối hay không.
Nếu Humanoid không có đối tượng Accessory, một mat阵 trống sẽ được trả lại.
Xem thêm Humanoid:AddAccessory() để kết hợp một Accessory với cha của một hình người.
Lợi Nhuận
Mẫu mã
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
Hàm này trả lại một bản sao của humanoid's cached HumanoidDescription which describes its current look. This can be used to quickly determine a character's look and to assign their look to other characters using the Humanoid:ApplyDescription() function.
Xem thêm
- Players:GetHumanoidDescriptionFromUserId() which returns a HumanoidDescription describing the avatar for the passed in user.
- Players:GetHumanoidDescriptionFromOutfitId() which returns a HumanoidDescription whose parameters are initialized to match that of the passed in server-side outfit asset.
- Player:LoadCharacterWithHumanoidDescription() which spawns a player with the look from the passed in HumanoidDescription .
Lợi Nhuận
GetBodyPartR15
Hàm này trả về những gì Enum.BodyPartR15 là, hoặc Part nếu nó không phải là một phần của cơ thể R15. This function allows developers to retrieve player body parts regardless of what the actual body part names are, instead returning an enum.
Nó có thể được sử dụng cùng với Humanoid:ReplaceBodyPartR15() . Ví dụ, nếu một phần cơ thể của người chơi chạm vào một cái gì đó, chức năng này sẽ trả lại nhận một instanti-vị trí. Các nhà phát triể
Hành động này có thể hữu ích cho các trò chơi nơi vị trí đòn đánh quan trọng. Ví dụ, nó có thể được sử dụng để xác định có người chơi bị đánh vào chân và sau đó chậm họ xuống dựa trên chấn thương.
Tham Số
Bộ phận được xác định để kiểm tra xem nó là một phần cơ thể R15.
Lợi Nhuận
Loại R15 body part của phần được chỉ định hoặc không xác định nếu phần không phải là một phần cơ thể.
GetLimb
Hàm này trả về danh mục Enum.Limb được liên kết với Part để tạo thành R15 và R6. Hoạt động cho cả R15 và R6 cấu hình, ví dụ:
-- Đối với R15print(humanoid:GetLimb(character.LeftUpperLeg)) -- enum.Limb.LeftLegprint(humanoid:GetLimb(character.LeftLowerLeg)) -- enum.Limb.LeftLegprint(humanoid:GetLimb(character.LeftFoot)) -- enum.Limb.LeftLeg-- Đối với R6print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg
Ghi chú rằng Humanoid:GetLimb() sẽ ném một lỗi nếu cha mẹ của bộ phận không được đặt cho cha mẹ của hình người.
Tham Số
Lợi Nhuận
Menu.Limb phù hợp với phần.
Mẫu mã
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
Hàm này trả lại hiện tại của hình người Enum.HumanoidStateType , mô tả hoạt động mà Humanoid đang thực hiện, ví dụ như nhảy hoặc bơi.
Xem thêm Humanoid:SetStateEnabled() để bật hoặc tắt một trạng thái cụ thể, và Humanoid:ChangeState() để thay đổi trạng thái hiện tại của hình người.
Lợi Nhuận
Hiện tại Enum.HumanoidStateType của 枚HumanoidStateType .
Mẫu mã
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
Hàm GetStateEnabled trả về có phải một Enum.HumanoidStateType được kích hoạt hay không cho một Humanoid .
Trạng thái hình người mô tả hoạt động mà hình người hiện đang thực hiện.
Khi một Enum.HumanoidStateType riêng biệt bị vô hiệu hóa, hình người không bao giờ có thể nhập vào trạng thái đó. Điều này đúng bất kể khi cố gắng thay đổi trạng thái được thực hiện bằng cách sử dụng Humanoid:ChangeState() hoặc mã người hì
Xem thêm:
- For an event that fires when a humanoid state is enabled or disabled see Humanoid.StateEnabledChanged
- Để bật hoặc tắt một trạng thái Humanoid sử dụng Humanoid:SetStateEnabled()
Tham Số
The given Enum.HumanoidStateType .
Lợi Nhuận
Whether the given Enum.HumanoidStateType is enabled.
Mẫu mã
local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false
Move
Hành động này khiến cho Humanoid đi vào hướng được cho Vector3 .
Bởi mặc định, hướng đi ở dạng thế điều khoản, nhưng nếu relativeToCamera tham số là true, hướng đi là tương đối với Datatype.CFrame
humanoid:Move(Vector3.new(0, 0, -1), true)
Khi chức năng này được gọi, Humanoid sẽ di chuyển cho đến khi chức năng được gọi lại. Tuy nhiên, nếu các script điều khiển mặc định đang được sử dụng, Class.Player.Character
Hành động này có thể được gọi trên máy chủ, nhưng điều này chỉ nên được thực hiện khi máy chủ có sở hữu mạng của hình người'sAssembly.
Xem thêm Humanoid:MoveTo() which makes a Humanoid walk to a point, and Player:Move() which effectively calls this function.
Tham Số
Hướng để đi vào.
Đặt để true nếu độ moveDirection được xác định là tương đối với CurrentCamera .
Lợi Nhuận
Mẫu mã
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
Hành động này khiến cho Humanoid cố gắng đi bộ đến vị trí đã được cài đặt bằng cách thiết lập Humanoid.WalkToPoint và Humanoid.WalkToPart属性.
Các mục đích và phần của các tham số Humanoid.WalkToPoint và 1>bộ phận1> tương ứng với những gì 4>Class.Humanoid.WalkToPoint4> và 7>Class.Humanoid.WalkToPart7> sẽ được thiết lập.
Nếu tham số phần được xác định, thì Humanoid vẫn sẽ cố gắng để đi đến điểm. Tuy nhiên, nếu phần di chuyển thì
Trạng thái vượt qua mục tiêu của một hình người sẽ hết hạn sau 8 giây nếu nó không đạt được mục tiêu của nó. Điều này được thực hiện để NPC không bị mắc kẹt chờ đợi Class.Humanoid.
MoveTo() kết thúc nếu một trong những điều kiện sau đây được áp dụng:
Nhân vật đến điểm đến của nó.
Nhân vật bị mắc kẹt và thời gian thứ tám sắp hết.
Giá trị của một trong những Humanoid.WalkToPoint hoặc Humanoid.WalkToPart thay đổi.
Một script gọi Humanoid:Move() với một điều kiện mới moveDirection .
Tham Số
Vị trí để đặt Humanoid.WalkToPoint .
The BasePart để thiết lập Humanoid.WalkToPart đến.
Lợi Nhuận
Mẫu mã
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
Hành động này loại bỏ tất cả các Accessory đối tượng được mặc bởi cha của người hình người. Đối với người chơi Characters, điều này sẽ loại bỏ tất cả các mũ và các phụ kiện khác.
Hàm này xóa Accessory đối tượng bằng cách gọi Instance:Destroy() trên chúng, có nghĩa là Parent của các phụ kiện được đặt để 1> nil1> và bị khóa.
Xem thêm Humanoid:AddAccessory() để kết hợp một Accessory , và Humanoid:GetAccessories() để lấy tất cả 1> Class.Accessory1> đối tượng thuộc về một 4> Class.Humanoid4> .
Lợi Nhuận
Mẫu mã
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
Thay thế tạm thời một phần limb R15/Rthro trên một người đàn ông bằng một phần khác. Phần được thay thế tự động như bình thường.
Hành động này hữu ích cho việc chỉnh sửa nhân vật trong trò chơi hoặc xây dựng nhân vật từ một cơ sở dữ liệu. Hành động liên quan GetBodyPartR15 có thể đến hữu ích khi sử dụng hành động này.
Tên của phần đã được chấp nhận nên khớp với tên của BodyPartR15 Enum đã được chấp nhận.
Tham Số
Phần cơ thể để thay thế. Enum.BodyPartR15.Unknown sẽ thất bại.
Lợi Nhuận
SetStateEnabled
Hào chức này đặt whether a given Enum.HumanoidStateType is enabled for the Humanoid . When a particular Enum.HumanoidStateType is disabled, the 1> Class.H
Lưu ý rằng sử dụng SetStateEnabled() trên máy chủ không tạo ra thay đổi cho client, nor vice-versa.
Tham Số
The Enum.HumanoidStateType để được mở hoặc đóng.
true nếu state được bật, false nếu 0> state0> được tắt.
Lợi Nhuận
Mẫu mã
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
Hàm này thấp hơn Humanoid.Health của Class.Humanoid bằng số tiền Humanoid được đưa nếu nó không được bảo vệ bởi một Class.ForceField
Hàm này chấp nhận giá trị âm cho số lượng tham số. Điều này sẽ tăng Humanoid.Health của hình người. Tuy nhiên, điều này sẽ chỉ có hiệu quả nếu không có ForceField hiện hữu.
Làm thế nào ForceFields bảo vệ chống lại TakeDamage
Một Humanoid được xem như được bảo vệ bởi một ForceField nếu một ForceField đáp ứng một trong những tiêu chuẩn sau đây:
- Class.ForceField được kết nối với Humanoid.RootPart của Humanoid
- Class.ForceField được kết nối với một tổ tiên của Class.Humanoid khác ngoài Class.Workspace
Để làm sát thương đến một Humanoid irrespective of any ForceFields hiện tại, set Humanoid.Health directly.
Để biết thêm thông tin về cách bảo vệ Class.ForceField|ForceFields``Class.Humanoid|Humanoids see the ForceField page
Tham Số
Sát thương, hoặc số tiền được trừ khỏi Humanoid.Health .
Lợi Nhuận
Mẫu mã
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
Hành động này bỏ bỏ bất kỳ Class.Tool nào hiện đang được trang bị bởi Class.Humanoid
Các thành phần bị bỏ trang bị sẽ được gắn với Tool của Backpack của Player liên kết với 2>Class.Humanoid2> .
Nếu không có Tool được trang bị, chức năng này sẽ không làm gì.
Mặc dù Tools có thể được trang bị bởi NPC (Nhân vật không chơi), nhưng chức năng này chỉ hoạt động đối với Humanoids với một tương ứng tươ
Xem thêm:
- Để thay vào đó trang bị một Tool , hãy sử dụng Humanoid:EquipTool()
Lợi Nhuận
Mẫu mã
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
Hàm này trả kết quả làm cho nhân vật trông giống như điều đã qua trong HumanoidDescription . Một bản sao của điều đã qua trong HumanoidDescription được lưu trữ như HumanoidDescription cho Class.Human .
Hàm này được tối ưu hóa bằng cách đoán rằng chỉ hàm này được sử dụng để thay đổi ngoại hình của nhân vật, và không có thay đổi đư
Xem thêm
- Humanoid:GetAppliedDescription() which returns the HumanoidDescription currently applied to the humanoid.
- Players:GetHumanoidDescriptionFromUserId() which returns a HumanoidDescription describing the avatar for the passed in user.
- Players:GetHumanoidDescriptionFromOutfitId() which returns a HumanoidDescription whose parameters are initialized to match that of the passed in server-side outfit asset.
- Player:LoadCharacterWithHumanoidDescription() which spawns a player with the look from the passed in HumanoidDescription .
Tham Số
Instância HumanoidDescription mà bạn muốn thiết lập nhân vật để khớp tương thích.
Lợi Nhuận
ApplyDescriptionReset
Hàm này trả lại tạo ra nhân vật của nhìn giống như đó của đã qua trong HumanoidDescription, ngay cả sau những thay đổi bên ngoài. Một bản sao của đã qua HumanoidDescription được lưu kết như
Hành động này luôn đảm bảo nhân vật phản
Tham Số
Các HumanoidDescription tương thích
Lợi Nhuận
Sự Kiện
Climbing
Lửa khi tốc độ mà một Humanoid đang leo thay đổi.
Humanoids có thể leo trèo lên các cầu thang được làm từ Parts hoặc TrussParts .
Humanoids leo lên 70% của Humanoid.WalkSpeed của họ.
Sự kiện này sẽ không bao giờ kích hoạt với tốc độ 0 khi Humanoid dừng leo.
Xem thêm:
- Để bơi và chạy, xem các sự kiện Humanoid.Swimming và Humanoid.Running
- Bạn cũng có thể phát hiện ra khi một Humanoid đang leo lên bằng cách sử dụng sự kiện Humanoid.StateChanged
- Bạn có thể tắt khả năng leo trè bằng cách sử dụng hàoạt Humanoid:SetStateEnabled()
Tham Số
Mẫu mã
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
Sự kiện này bắt đầu khi Humanoid chết, thường là khi Humanoid.Health đạt đến 0. Điều này có thể do bị mất kết nối từ đầu của họ khỏi Humanoid.Torso của họ, hoặc thiết lập trực tiếp thuộc tính sứ
Sự kiện này chỉ bắt đầu nếu Humanoid là con của Workspace. Nếu Dead1> Amount.HumanoidStateType1> bị vô hiệu hóa, nó sẽ không bắt đầu.
Mẫu mã
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
Sự kiện FallingDown bắt đầu khi Humanoid vào và rời khỏi FallingDown``Enum.HumanoidStateType .
Cuộn dây Humanoid sẽ đi vào trạng thái GettingUp sau 3 giây khi trạng thái FallingDown được kích hoạt. Khi điều này xảy ra,
Tham Số
FreeFalling
Sự kiện này bắt đầu khi Humanoid vào hoặc rời khỏi Freefall Class.HumanoidStateType</Class.HumanoidStateType>.
Tham số Class.Humanoid đại diện cho việc Class.Humanoid đang vào hoặc rời trạng thái 1> Freefall1> .
Mặc dù trạng thái Freefall thường kết thúc khi Humanoid đạt đến mặt đất, nhưng sự
Tham Số
GettingUp
Sự kiện này bắt đầu khi Humanoid vào hoặc rời khỏi trạng thái Enum.HumanoidStateType.GettingUp , một trạng thái chuyển dịch được kí
Khi một Class.Humanoid thử để quay lại, sự kiện này sẽ đầu tiên bắt đầu với một biến Humanoid của active trước khi ngắn chút sau khi bắn lại với một biến true của 2>force2> trước khi ngắn chút sau khi bắn lại
Để buộc một Humanoid để rơi xuống, hãy sử dụng chức năng Humanoid:ChangeState() với Enum.HumanoidStateType.FallingDown .
Tham Số
HealthChanged
Sự kiện này bắt đầu khi Humanoid.Health thay đổi. Tuy nhiên, nó sẽ không bắt đầu nếu sức khỏe đang tăng lên từ một giá trị bằng hoặc lớn hơn Humanoid.MaxHealth .
Khi Humanoid.Health đạt đến zero, Humanoid sẽ chết và sự kiện Humanoid.Died sẽ bắt đầu. Sự kiện này sẽ bắt đầu với giá trị zero.
Tham Số
Giá trị mới của Humanoid.Health .
Mẫu mã
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
Sự kiện này bắt đầu khi Humanoid vào và rời khỏi Jumping``Enum.HumanoidStateType .
Khi một Humanoid nhảy, sự kiện này được kích hoạt với một active 参数
Bạn có thể tắt nhảy bằng cách sử dụng chức năng Humanoid:SetStateEnabled() .
Tham Số
MoveToFinished
Sự kiện này bắt đầu khi Humanoid đã hoàn thành bước đi đến một mục tiêu đã tuyên bố bởi Humanoid.WalkToPoint và Humanoid.WalkToPart속性.
Các đặt tính Humanoid.WalkToPoint và Humanoid.WalkToPart có thể được cài đặt riêng lẻ hoặc sử dụng chức năng Humanoid:MoveTo().
Nếu Humanoid đạt mục tiêu của nó trong vòng 8 giây, sự kiện này sẽ trở lại với đạt được như một cách thật. Nếu mục tiêu không đạt đượ
Tham Số
Mẫu mã
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
Sự kiện này bắt đầu khi Humanoid vào hoặc rời khỏi PlatformStanding``Enum.HumanoidStateType .
Trong khi Humanoid đang ở trong trạng thái PlatformStanding, thì Humanoid.PlatformStand tính năng sẽ được 1> true1> .
Khi Humanoid.PlatformStand được đặt để true , thì Humanoid sẽ không thể di chuyển. Để biết thêm thông tin, hãy xem trang cho 1> Class.Humanoid1> .
The PlatformStand Enum.HumanoidStateType được liên kết với phần Platform bị vô hiệu hóa. Mặc dù điều này, nó vẫn có thể được sử dụng bởi các nhà phát triển.
Tham Số
Ragdoll
Sự kiện này bắt đầu khi Humanoid đi vào hoặc rời khỏi Ragdoll``Enum.HumanoidStateType .
Tham số active sẽ có giá trị true hoặc false để cho biết có nhập hoặc rời khỏi.
Sử dụng Humanoid:SetStateEnabled() để vô hiệu hóa trạng thái Đang lấy để ở trong trạng thái Ragdoll.
Xem thêm:
- Humanoid.FallingDown cho sự kiện Humanoid kết nối với trạng thái FallingDown, hành xử tương tự như 0> Ragdoll0>
Tham Số
Running
Sự kiện này bắt đầu khi tốc độ mà một Humanoid đang thực hiện thay đổi.
Trong khi chạy Humanoids bao phủ, trên trung bình, họ Humanoid.WalkSpeed ở studs mỗi giây.
Khi Humanoid dừng chạy sự kiện này sẽ kết thúc với tốc độ 0.
Xem thêm:
- Để bơi và leo trèo xem các sự kiện Humanoid.Swimming và Humanoid.Climbing
- Bạn cũng có thể phát hiện ra khi một Humanoid đang chạy bằng cách sử dụng sự kiện Humanoid.StateChanged
Tham Số
Mẫu mã
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
Sự kiện này bắt đầu khi một Humanoid đang ngồi hoặc dậy khỏi một Seat hoặc VehicleSeat .
Khi một nhân vật tiếp xúc với một chỗ ngồi, họ được kết nối với chỗ ngồi và một hoạt họa ngồi xảy ra. Để biết thêm thông tin về điều này, xem trang Seat.
- Nếu nhân vật đang ngồi, active tham số sẽ là true và currentSeatPart sẽ là chỗ ngồi mà họ hiện đang ngồi.
- Nếu nhân vật đứng dậy từ chỗ ngồi, tham số active sẽ là false và currentSeatPart sẽ là nil.
Xem thêm:
- Humanoid.Sit , which indicates whether a Humanoid is currently sitting
- Humanoid.SeatPart , cho thấy chỗ ngồi mà một Humanoid hiện đang ngồi, nếu có.
Tham Số
Mẫu mã
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
Sự kiện này bắt đầu khi trạng thái của Humanoid được thay đổi.
Khi không có trạng thái người lớn nào, bạn nên thay vào đó sử dụng sự kiện Humanoid.Running hoặc lắng nghe Class.Humanoid.RootPart|RootPart> để làm việc khi RootPart đang đứng yên.
Xem thêm
- Humanoid:GetState() và Humanoid:ChangeState() để lấy và thiết lập trạng thái.
- Humanoid:SetStateEnabled() để bật và tắt các trạng thái cụ thể.
Tham Số
Loại người nhân vật trước đó của hình đánh máy.
đánh máyngười dùng hiện tại của hình người.
Mẫu mã
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
Sự kiện StateEnableChanged sẽ bắt đầu khi Humanoid:SetStateEnabled() được gọi trên Humanoid .
Các biến đổi bao gồm Enum.HumanoidStateType trong câu hỏi cùng với một biến đổi cho thể hiện nếu trạng thái này đã được kích hoạt.
Xem thêm:
- Để tìm kiếm có đang bật một trạng thái, hãy sử dụng Humanoid:GetStateEnabled()
- Để lắng nghe thay đổi trạng thái của Humanoid dùng Humanoid.StateChanged
Tham Số
Container.HumanoidStateType cho phù hợp với trạng thái đã được thay đổi.
Đúng nếu trạng thái bây giờ đã được kích hoạt.
Mẫu mã
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
Sự kiện này không bắt lửa khi Humanoid đang bị tấn công và không nên được sử dụng bởi các nhà phát triển
Sự kiện này được kích hoạt khi Humanoid vào hoặc rời khỏi StrafingNoPhysics Enum.HumanoidStateType .
Khi Humanoid đi vào trạng thái StrafingNoPhysics này, sự kiện này sẽ bắt đầu với một tham số động để 2>trở
Sự kiện này liên quan đến trạng thái StrafingNoPhysics``Class.Humanoid và làm không lửa khi 1> Class.Humanoid1> đang di chuyển theo hư
Tham Số
Swimming
Sự kiện này bắt đầu khi tốc độ mà một Humanoid đang bơi trong nước Terrain thay đổi.
Humanoids bơi ở 87,5% của Humanoid.WalkSpeed của họ.
Sự kiện này sẽ không bao giờ nổ tung với tốc độ 0 khi Humanoid dừng bơi.
Xem thêm:
- Để chạy và leo trèo xem Humanoid.Running và Humanoid.Climbing sự kiện
- Bạn cũng có thể phát hiện ra khi một Humanoid đang bơi bằng cách sử dụng sự kiện Humanoid.StateChanged
- Bạn có thể tắt bơi bằng cách sử dụng hàm Humanoid:SetStateEnabled()
Tham Số
Touched
Sự kiện này bắt đầu khi một trong những vị trí của hình người đến tiếp xúc với một trong những BasePart khác. The BasePart mà vị trí của hình người đang tiếp xúc, cùng với limb chính, được cho.
Sự kiện này sẽ không bắt lửa khi các chi có thuộc về Humanoid này có tiếp xúc với chính họ.
Alternatives
Mặc dù sự kiện Humanoid.Touched có ích, bạn nên xem xét có những lựa chọn nào tốt hơn cho nhu cầu của bạn.
- Trong hầu hết các trường hợp, được khuyến nghị kết nối một sự kiện BasePart.Touched cho BaseParts
- Khi cố gắng làm việc khi Humanoid đã hạ cánh trên mặt đất, sự kiện Humanoid.StateChanged thích hợp hơn. Hoặc, bạn có thể kiểm tra Humanoid.FloorMaterial để xem có phải hình người đang đứng trên bất kỳ
Ghi chú
- Kết nối với sự kiện này sẽ dẫn đến việc tạo ra một TouchTransmitter ở mọi cánh tay.
- Hiện tại không có đối tượng tương đương với BasePart.TouchEnded cho Humanoids .
Tham Số
Mẫu mã
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)