Humanoid

Hiển Thị Bản Đã Lỗi Thời

*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.LeftLegHumanoid.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ã

Walking Camera Bobble Effect

local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)

Tóm Tắt

Thuộc Tính

Phương Pháp

Sự Kiện

Thuộc Tính

AutoJumpEnabled

Đọc Song Song

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ã

Auto-Jump Toggle

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()

AutoRotate

Đọc Song Song

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 độngHành viKiến ​​thức

Mẫu mã

AutoRotate Button

local button = script.Parent
local enabled = true
local ON_COLOR = BrickColor.Green()
local OFF_COLOR = BrickColor.Red()
local function touchButton(humanoid)
if enabled then
enabled = false
button.BrickColor = OFF_COLOR
if humanoid.AutoRotate then
print(humanoid:GetFullName() .. " can no longer auto-rotate!")
humanoid.AutoRotate = false
else
print(humanoid:GetFullName() .. " can now auto-rotate!")
humanoid.AutoRotate = true
end
task.wait(1)
button.BrickColor = ON_COLOR
enabled = true
end
end
local function onTouched(hit)
local char = hit:FindFirstAncestorWhichIsA("Model")
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
touchButton(humanoid)
end
end
end
button.Touched:Connect(onTouched)
button.BrickColor = ON_COLOR

AutomaticScalingEnabled

Đọc Song Song

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

Đọc Song Song

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

Đọc Song Song

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ã

Walking Camera Bobble Effect

local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
Đọc Song Song

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ó NameDisplayDistanceHealthDisplayDistance .
  • 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ã

Displaying a Humanoid's Health and Name

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

DisplayName

Đọc Song Song

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

Đọc Song Song

FloorMaterial

Chỉ Đọc
Không Sao Chép
Đọc Song Song

Đâ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 HumanoidParts.

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

Không Sao Chép
Đọc Song Song

Đặ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

Đọc Song Song

Đâ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.

Đọc Song Song

Đặ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

Đọc Song Song

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

Không Sao Chép
Đọc Song Song

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

Đọc Song Song

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

Đọc Song Song

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

Đọc Song Song

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

Đọc Song Song

Đặ性 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ã

Limiting The Slope a Humanoid Can Walk Up

local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30

MoveDirection

Chỉ Đọc
Không Sao Chép
Đọc Song Song

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ã

Walking Camera Bobble Effect

local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)

NameDisplayDistance

Đọc Song Song

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

Đọc Song Song

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ã

Occlude Player Names

local Players = game:GetService("Players")
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.NamOcclusion = Enum.NameOcclusion.OccludeAll
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

PlatformStand

Đọc Song Song

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

Đọc Song Song

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.

Đọc Song Song

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

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

Chỉ Đọc
Không Sao Chép
Đọc Song Song

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

Đọc Song Song

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

Đọc Song Song

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

Đọc Song Song

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 Song Song

Đặ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.
  • Tốc độ mà Humanoid đang di chuyển hiện tại có thể được nhận bằng cách sử dụng sự kiện Running.

WalkToPart

Đọc Song Song

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

Đọc Song Song

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ã

Humanoid MoveTo Without Time out

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

Phương Pháp

AddAccessory

void

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ố

accessory: Instance

Class.Accessory để được kết dính.


Lợi Nhuận

void

Mẫu mã

[Humanoid] AddAccessory Example

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

BuildRigFromAttachments

void

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

void

Mẫu mã

Lua Port of BuildRigFromAttachments

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

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

ChangeState

void

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ụ:

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.

Giá Trị Mặc Định: "None"

Lợi Nhuận

void

Mẫu mã

Double Jump

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

EquipTool

void

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 then
local humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")
if humanoid then
local tool = workspace:FindFirstChild("Tool")
if tool then
humanoid:EquipTool(tool)
end
end
end

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:

Tham Số

tool: Instance

The Tool to equip.


Lợi Nhuận

void

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ột dàn Accessory đối tượng được gắn với cha của người hình người.

Mẫu mã

Remove Accessories After Loading

local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)

GetAppliedDescription

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


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ố

part: Instance

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 R15
print(humanoid:GetLimb(character.LeftUpperLeg)) -- enum.Limb.LeftLeg
print(humanoid:GetLimb(character.LeftLowerLeg)) -- enum.Limb.LeftLeg
print(humanoid:GetLimb(character.LeftFoot)) -- enum.Limb.LeftLeg
-- Đối với R6
print(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ố

part: Instance

Class.Part cho đó Enum.Limb để được lấy.


Lợi Nhuận

Menu.Limb phù hợp với phần.

Mẫu mã

Getting a Humanoid's Limbs

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end

GetMoveVelocity


Lợi Nhuận

Ghi Song Song

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ã

Double Jump

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

GetStateEnabled

Ghi Song Song

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:

Tham Số


Lợi Nhuận

Whether the given Enum.HumanoidStateType is enabled.

Mẫu mã

Setting and Getting Humanoid States

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

Move

void

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ố

moveDirection: Vector3

Hướng để đi vào.

relativeToCamera: bool

Đặt để true nếu độ moveDirection được xác định là tương đối với CurrentCamera .

Giá Trị Mặc Định: false

Lợi Nhuận

void

Mẫu mã

Moving a Humanoid Forwards

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

MoveTo

void

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.WalkToPointHumanoid.WalkToPart属性.

Các mục đíchphầ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 .

  • Một script thay đổi CFrame tính năng của RootPart .

Tham Số

location: Vector3

Vị trí để đặt Humanoid.WalkToPoint .

part: Instance

The BasePart để thiết lập Humanoid.WalkToPart đến.

Giá Trị Mặc Định: "nil"

Lợi Nhuận

void

Mẫu mã

Humanoid MoveTo Without Time out

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

RemoveAccessories

void

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

void

Mẫu mã

Remove Accessories After Loading

local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)

ReplaceBodyPartR15

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.

part: BasePart

Class.PartInstance sẽ được gắn với nhân vật.


Lợi Nhuận

SetStateEnabled

void

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.

enabled: bool

true nếu state được bật, false nếu 0> state0> được tắt.


Lợi Nhuận

void

Mẫu mã

Jump Cooldown

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

TakeDamage

void

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:

Để 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ố

amount: number

Sát thương, hoặc số tiền được trừ khỏi Humanoid.Health .


Lợi Nhuận

void

Mẫu mã

Damaging a Humanoid

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

UnequipTools

void

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:


Lợi Nhuận

void

Mẫu mã

Unequip Tool Keybind

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

ApplyDescription

void
Sinh Lợi

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

Tham Số

humanoidDescription: HumanoidDescription

Instância HumanoidDescription mà bạn muốn thiết lập nhân vật để khớp tương thích.

assetTypeVerification: Enum.AssetTypeVerification
Giá Trị Mặc Định: "Default"

Lợi Nhuận

void

ApplyDescriptionReset

void
Sinh Lợi

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ố

humanoidDescription: HumanoidDescription

Các HumanoidDescription tương thích

assetTypeVerification: Enum.AssetTypeVerification
Giá Trị Mặc Định: "Default"

Lợi Nhuận

void

PlayEmote

Sinh Lợi

Nếu biểu cảm không thể được chơi vì tên biểu cảm không được tìm thấy trong HumanoidDescription, API này sẽ cho một lỗi. API sẽ trả lại true để cho biết rằng biểu cảm đã được chơi thành công.

Tham Số

emoteName: string

tên của biểu tượng để chơi.


Lợi Nhuận

chơi thành công.

Sự Kiện

ApplyDescriptionFinished

Tham Số

description: HumanoidDescription

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:

Tham Số

speed: number

Tốc độ mà Humanoid đang leo trèo.


Mẫu mã

Humanoid.Climbing

local Players = game:GetService("Players")
local function onCharacterClimbing(character, speed)
print(character.Name, "is climbing at a speed of", speed, "studs / second.")
end
local function onCharacterAdded(character)
character.Humanoid.Climbing:Connect(function(speed)
onCharacterClimbing(character, speed)
end)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

Died

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ã

Humanoid.Died

local Players = game:GetService("Players")
local function onPlayerAdded(player)
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local function onDied()
print(player.Name, "has died!")
end
humanoid.Died:Connect(onDied)
end
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)

FallingDown

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ố

active: bool

Mô tả liệu Humanoid đang vào hoặc rời khỏi FallingDown``Enum.HumanoidStateType.


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ố

active: bool

Humanoid đang vào hoặc rời khỏi Freefall``Enum.HumanoidStateType .


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ố

active: bool

Humanoid đang vào hoặc rời khỏi GettingUp``Enum.HumanoidStateType .


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ố

health: number

Giá trị mới của Humanoid.Health .


Mẫu mã

Humanoid.HealthChanged

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

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

Jumping

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ố

active: bool

Humanoid đang vào hoặc rời khỏi Jumping``Enum.HumanoidStateType .


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.WalkToPointHumanoid.WalkToPart속性.

Các đặt tính Humanoid.WalkToPointHumanoid.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ố

reached: bool

Một biểu tượng boolean cho biết có phải Humanoid đạt được mục tiêu không. True nếu Humanoid đạt được mục tiêu của nó, 1> false1> nếu lượng bước đã hết hạn trước khi có thể đạt được mục tiêu.


Mẫu mã

Humanoid MoveTo Without Time out

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

PlatformStanding

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ố

active: bool

Humanoid đang vào hoặc rời khỏi PlatformStanding``Enum.HumanoidStateType .


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:

Tham Số

active: bool

Humanoid đang vào hoặc rời khỏi Ragdoll``Enum.HumanoidStateType .


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:

Tham Số

speed: number

Tốc độ mà Humanoid đang chạy.


Mẫu mã

Humanoid Running

local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onRunning(speed: number)
if speed > 0 then
print(`{localPlayer.Name} is running`)
else
print(`{localPlayer.Name} has stopped`)
end
end
humanoid.Running:Connect(function(speed: number)
onRunning(speed)
end)

Seated

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à falsecurrentSeatPart 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ố

active: bool

Đúng nếu Humanoid đang ngồi xuống.

currentSeatPart: BasePart

Chỗ ngồi mà Humanoid đang ngồi sẽ được ngồi nếu nó đang ngồi xuống.


Mẫu mã

Finding a Player's Seat

local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local function onSeated(isSeated, seat)
if isSeated then
print("I'm now sitting on: " .. seat.Name .. "!")
else
print("I'm not sitting on anything")
end
end
humanoid.Seated:Connect(onSeated)

StateChanged

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

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ã

Jumping Particles

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

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

StateEnabledChanged

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:

Tham Số

Container.HumanoidStateType cho phù hợp với trạng thái đã được thay đổi.

isEnabled: bool

Đúng nếu trạng thái bây giờ đã được kích hoạt.


Mẫu mã

Humanoid State Change Detector

local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onStateEnabledChanged(state, enabled)
if enabled then
print(state.Name .. " has been enabled")
else
print(state.Name .. " has been disabled")
end
end
humanoid.StateEnabledChanged:Connect(onStateEnabledChanged)

Strafing

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ố

active: bool

Humanoid đang vào hoặc rời khỏi StrafingNoPhysics``Enum.HumanoidStateType .


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:

Tham Số

speed: number

Tốc độ mà Humanoid đang bơi hiện tại.


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ú

Tham Số

touchingPart: BasePart

Các BasePart của Humanoid đã đến trong khi liên hệ.

humanoidPart: BasePart

Phần của Humanoid đã được chạm.


Mẫu mã

Midas Touch

local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local partInfo = {}
local debounce = false
local function onHumanoidTouched(hit, _limb)
if debounce then
return
end
if not hit.CanCollide or hit.Transparency ~= 0 then
return
end
if not partInfo[hit] then
partInfo[hit] = {
BrickColor = hit.BrickColor,
Material = hit.Material,
}
hit.BrickColor = BrickColor.new("Gold")
hit.Material = Enum.Material.Ice
debounce = true
task.wait(0.2)
debounce = false
end
end
local touchedConnection = humanoid.Touched:Connect(onHumanoidTouched)
local function onHumanoidDied()
if touchedConnection then
touchedConnection:Disconnect()
end
-- undo all of the gold
for part, info in pairs(partInfo) do
if part and part.Parent then
part.BrickColor = info.BrickColor
part.Material = info.Material
end
end
end
humanoid.Died:Connect(onHumanoidDied)