Humanoid
*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。
ヒューマノイドは、モデルにキャラクターの機能を与える特別なオブジェクトで
R6
- 6つの手足のために 6 個のパーツを使用する基本的なキャラクターリグ。
- Head パーツは、Torso という名前のパーツに取り付けられる必要があります。そうしないと、人形はすぐに死亡します。
- ボディパーツの見た目は、CharacterMesh オブジェクトを使用して適用されます。
- 特定のプロパティ、例えば Humanoid.LeftLeg や Humanoid.RightLeg は、R6 でのみ機能します。
R15 の
- R6 よりも複雑ですが、同時によりも柔軟であり、よりも強度の高いものです。
- 15個のパーツで構成されています。
- Head パーツは、UpperTorso または Humanoid という名前のパーツに取り付けられなければなりません。
- ボディパーツの外観は直接組み立てる必要があります。
- 人形の中にある特殊な NumberValue オブジェクトを使用して、サイズをダイナミックに変更できます。
- ヒューマノイドは自動的に Vector3Value オブジェクトを作成し、各リンブ内に OriginalSize という名前のオブジェクトを自動的に作成します。
- ヒューマノイドの中にある NumberValue が、フォロー中の名前の 1 つを持つ場合、スケーリング機能を制御するために使用されます:
- ボディ深度スケール
- ボディ高さスケール
- ボディワイドスケール
- ヘッドスケール
コードサンプル
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)
概要
プロパティ
モバイルデバイスのプレイヤーとして障害物にヒットすると、キャラクターが自動的にジャンプするかどうかを設定します。
自動回転は、人形が自動的に回転して移動する方向に面を向けるかどうかを設定します。
有効にすると、AutomaticScalingEnabled は、子スケールの値が変更されると、キャラクターのサイズを変更します。
人形の関節が Enum.HumanoidStateType.Dead 状態にあるときに壊れるかどうかを決定します。
カメラのサブジェクトポジションに適用されるオフセットが、このヒューマノイドに設定されたときにカメラのサブジェクトをこのオフセットで設定します。
人形の名前と健康ディスプレイの距離ビークンを制御します。
頭上の人形のテキストを設定します。
Class.Humanoid が今、Humanoid に乗っているのは、 Humanoid が今、1>Enumerate.Material1> の上に立っているかどうかです。 4>Class.Humanoid4> が今、7>Enumerate.Material7> の上に立っていない場合、このプロパティの値は Enum.Material0> になります。
距離 [0, Humanoid.MaxHealth] のヒューマノイドの現在の健康を説明します。
Class.Humanoid.DisplayDistanceType|DisplayDistanceType プロパティと組み合わせて、人形のヘルスバーの見える距離を制御します。
ヒューマノイドのヘルスバーが表示されることができるようになるコントロール。
Class.Humanoid.RootPart が置かれるべき場所の距離を決定します。
Class.Humanoid が上向きの力でジャンプする。
Class.Humanoid ジャンプの高さにコントロールを提供します。
ジャンプ時にHumanoidに適用される上向きの力を決めます。
ヒューマノイドの Health の最大値。
ヒューマノイドがスリップしないで歩ける最大スロープアングル。
Class.Humanoid が歩いている方向を説明します。
Class.Humanoid.DisplayDistanceType プロパティと組み合わせて、ヒューマノイドの名前が見える距離を制御します。
人形の名前とヘルスバーが壁や他のオブジェクトの後ろに表示されるかどうかを制御します。
Class.Humanoid が現在 Enum.HumanoidStateType.PlatformStanding 状態にあるかどうかを決定します。
開発者が Neck を Class.Motor6D 以外の場合、または一時的に離れたり切断されたりすると、プレイヤーが死亡する動作を無効にすることができます。
この Humanoid がレガシー R6 キャラクターリグを使用しているか、新しい R15 キャラクターリグを使用しているかを説明します。
ヒューマノイドの HumanoidRootPart オブジェクトに参照。
現在、Humanoid が座っている座に参照します。
現在 Humanoid が座っているかどうかを記述します。
Class.Player が Humanoid をコントロールしている 3D ポジションを説明します。Tool を使用しています。
Class.Humanoid.JumpHeight|JumpHeight (Humanoid.JumpPower) を使用するかどうかを決定します。
人形の最大移動速度をスタッドで毎秒表示します。
人形によって到達しようとしている部分の参照。
人形の位置が、Humanoid:MoveTo() の呼び出し後に試行している位置です。
方法
指定した Accessory をヒューマノイドの親に付けます。
人形のキャラクターで Motor6D の共同体を組み立てるように、Attachment オブジェクトをヒューマノイドに接続します。
Class.Humanoid を設定して、Enum.HumanoidStateType に入力されます。
Class.Humanoid を装備する Tool を作成します。
現在、ヒューマノイドの親が着用している Accessory オブジェクトのアレイを返します。
人形のキャッシュ HumanoidDescription のコピーを返します。これは、現在の外観を説明します。
この関数にボディパーツをパスします (ボディパーツはヒューマノイドの子であり、モデルの子) を通過して、 Enum.BodyPartR15 の Part を取得します。
Class.Part に関連付けられた Part 枚数を返します。
ヒューマノイドの現在の Enum.HumanoidStateType を返します。
Class.Humanoid の Humanoid を有効にするかどうかを返します。
Class.Humanoid が指定された方向に歩くようになります。
Class.Humanoid を使用して、Humanoid.WalkToPoint および Humanoid.WalkToPart プロパティを設定して、1>Class.Humanoid.WalkToPoint1> および 4>Class.Humanoid.WalkToPart4> に移動しようとします。
親によって着用されるすべての Accessory オブジェクトを削除します。
ヒューマノイドのボディ部分を別の部分にダイナミックに置き換えます。
Class.Humanoid に対して Humanoid が有効であるかどうかを設定します。
Class.Humanoid.Health の Humanoid を、Class.ForceField で保護されていない場合、1> Class.Humanoid の保護者1> による 4> Class.Humanoid4> の保護者4> による保護者4> による保護者4> による保護者4> による保護者4>
- ApplyDescription(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
キャラクターの外観を HumanoidDescription に通過したものにマッチさせます。
- ApplyDescriptionReset(humanoidDescription : HumanoidDescription,assetTypeVerification : Enum.AssetTypeVerification):void
キャラクターの外見を HumanoidDescription に合わせることができます。
エモートをプレイし、成功して実行された場合に返します。
イベント
Class.Humanoid がクライミングする速度が変わるときにファイアを起動します。
Class.Humanoid が死亡すると、ファイアを起動します。
Class.Humanoid が FallingDown を入力または離れるときに Enum.HumanoidStateType を入力します。
Class.Humanoid が Freefall を入力または離れるときに発動します。Enum.HumanoidStateType。
Class.Humanoid が GettingUp を入力または離れるときにファイアを起動します。
Class.Humanoid.Health が変更されるときにファイアーされます (または Humanoid.MaxHealth が設設定するされるとき)。
Class.Humanoid が入ると、Jumping``Enum.HumanoidStateType から退出します。
Class.Humanoid が目標を宣言した Humanoid:MoveTo() に歩行距離を記録したときに発動します。
Class.Humanoid が PlatformStanding を入力または離れるときにファイアを起動します。Enum.HumanoidStateType。
Class.Humanoid が Ragdoll を入力または離れるときにファイアを起動します。
Class.Humanoid が変更を実行する速度で Class.Humanoid が起動するとき。
Class.Humanoid が Seat または VehicleSeat に座っているか、起きたときに。
状態が変更されると Humanoid を発射します。
Class.Humanoid:SetStateEnabled() が Humanoid に呼び出されるときにファイアを起動します。
Class.Humanoid が StrafingNoPhysics に入るか Enum.HumanoidStateType に離れるときにファイアを起動します。
スピードが Humanoid が水の中で泳ぐ速度が変わると、発射されます。
人形の 1 つの手足が別の BasePart に接触すると、発射します。
プロパティ
AutoJumpEnabled
AutoJumpEnabled は、Humanoid が、歩いている障害物を自動でジャンプするかどうかを設定します。
現在、このプロパティは、次のコンディションが満たされているときにのみ機能します:
- ヒューマノイドのキャラクターモデルは、Player.Character の Class.Player の Player です。
- 問題のプレイヤーは、タッチコントロールを使用しています。
プレイヤーのキャラクターがスポーンすると、プロパティの値はプレイヤーの Player.AutoJumpEnabled プロパティに一致します - これにより、 StarterPlayer.AutoJumpEnabled プロパティと一致します。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local button = script.Parent
local function update()
-- Update button text
if player.AutoJumpEnabled then
button.Text = "Auto-Jump is ON"
else
button.Text = "Auto-Jump is OFF"
end
-- Reflect the property in the player's character, if they have one
if player.Character then
local human = player.Character:FindFirstChild("Humanoid")
if human then
human.AutoJumpEnabled = player.AutoJumpEnabled
end
end
end
local function onActivated()
-- Toggle auto-jump
player.AutoJumpEnabled = not player.AutoJumpEnabled
-- Update everything else
update()
end
button.Activated:Connect(onActivated)
update()
AutoRotate
オートローテートプロパティは、ヒューマノイド が自動的に回転して、移動する方向に面を向けるかどうかを記述します。オートローテート を「真」に設定すると、キャラクターモデルは、ヒューマノイド が周りを回転する方向に自動的に回転します。2>
キャラクターモデルがプレイヤーのキャラクターになると、ヒューマノイドの回転タイプは、UserGameSettings の RotateType プロパティによって影響されます。
オートローティングプロパティが「真」に設定されると、「人形」の回転には次の効果があります:
<tbody><tr><td>移動関数</td><td /><td /></tr><tr><td>カメラライト</td><td>キャラクターはカメラの方向に回転します。</td><td>プレイヤーのカメラは 1人称 にズームされているか、またはシフトロックモードにあります。</td></tr></tbody>
回転タイプ | 動作 | コンテキスト |
---|
コードサンプル
local button = script.Parent
local enabled = true
local ON_COLOR = BrickColor.Green()
local OFF_COLOR = BrickColor.Red()
local function touchButton(humanoid)
if enabled then
enabled = false
button.BrickColor = OFF_COLOR
if humanoid.AutoRotate then
print(humanoid:GetFullName() .. " can no longer auto-rotate!")
humanoid.AutoRotate = false
else
print(humanoid:GetFullName() .. " can now auto-rotate!")
humanoid.AutoRotate = true
end
task.wait(1)
button.BrickColor = ON_COLOR
enabled = true
end
end
local function onTouched(hit)
local char = hit:FindFirstAncestorWhichIsA("Model")
if char then
local humanoid = char:FindFirstChildOfClass("Humanoid")
if humanoid then
touchButton(humanoid)
end
end
end
button.Touched:Connect(onTouched)
button.BrickColor = ON_COLOR
AutomaticScalingEnabled
ヒューマノイドには、BodyDepthScale、BodyHeightScale、BodyProportionScale、2>BodyTypeScale2>、5>BodyWidthScale5>、8>HeadScale8>などの子スケール値が含まれていま
CameraOffset
CameraOffset プロパティは、カメラの対象ポジションにオフセットを指定します。この Camera.CameraSubject が Humanoid に設定されているとき、カメラの Camera はこのオフセットをオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセットオフセッ
オブジェクトスペースでオフセットは、ヒューマノイドの ヒューマノイドルートパーツ の向きに対して適用されます。たとえば、 Datatype.Vector3 のオフセット値は、0> (0、10、0)0> のオフセットでプレイヤーのカメラを 10 スタッド上のプ
コードサンプル
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
DisplayDistanceType
DisplayDistanceType プロパティは、ヒューマノイドの名前と体力ディスプレイの距離の動作を制御します。このプロパティは、Enum.HumanoidDisplayDistanceType 枚のエンジェンを使用して、それぞれのルールを持つ 3つの可用値を含む、 Ennum.HumanoidDisplayDistanceType 枚を使用しています:
- NameDisplayDistance と NameDisplayDistance の間の他のヒューマノイドの名前/健康を見ると、ヒューマノイドは自分の HealthDisplayDistance と 1>HealthDisplayDistance1> の範囲内の他のヒューマノイドの名前/健康を見ることができます。
- NameDisplayDistance および HealthDisplayDistance 値のセットに設定されると、ヒューマノイドは自分の名前と健康ディスプレイを通じて 完全にコントロールされます。
- En.HumanoidDisplayDistanceType|None に設定されると、ヒューマノイドの名前とヘルスバーは、どの場合にも表示されません。
キャラクター名/ヘルスディスプレイ を参照して、キャラクター名とヘルスバーの見た目をコントロールする方法について説明します。
コードサンプル
local humanoid = script.Parent
humanoid.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.Viewer
humanoid.HealthDisplayDistance = 0
humanoid.NameDisplayDistance = 100
DisplayName
DisplayName は、ヒューマノイドの名前を表示するプロパティです。デフォルトでは、新しいヒューマノイドは空のストリン文字列の値を持つことになります。如果 DisplayName が空のストリン文字列である場合、ヒューマノイドの名前は親の名前のプロパティにデフォルトします。
プレイヤーキャラクターの読み込み
プレイヤーがそのキャラクターを読み込むと、エンジンによって作成されるヒューマノイドの Class.Player:LoadCharacter()|LoadCharacter() を通じて、エンジンが作成する DisplayName プロパティがプレイヤーの DisplayName プロパティに設定されます。
スターターキャラクターとスターターヒューマノイド
Class.Humanoid という名前の StarterHumanoid が親になったり、Class.St
EvaluateStateMachine
FloorMaterial
これは、Enum.Material が現在立っている Humanoid についての読み取りのみのプロパティです。これは、Parts と 2>Class.Terrain2> の両方のボクセルで動作します。
コードサンプルは、Object:GetPropertyChangedSignal() を使用して、このプロパティが変更されるときに聞く方法を示しています。 人形の上にある素材が変更されると、新しい素材が上に印刷されるメッセージが表示されます。
local Humanoid = route.to.humanoid
Humanoid:GetPropertyChangedSignal("FloorMaterial"):Connect(function()
print("New value for FloorMaterial: " .. tostring(Humanoid.FloorMaterial))
end)
洞窟
- Class.Humanoid が床に立っていない場合、このプロパティの値は Air に設定されます。
- これは、列挙プロパティに空の値があることができないためです。
- これは、部品の材料が空気に設定されている場合、部品が実際にはその材料を最初プレース使用しないことがあります。
- Class.Humanoid のキャラクターモデルは、床と衝突する必要があります。そうしないと、Class.Humanoid は検出されません。
- Class.Humanoid がこのプロパティで泳いでいるかどうかをテストすることはできません。代わりに、Humanoid:GetState() 機能を使用してください。
Health
このプロパティは、Humanoid の現在の健康を表します。値は、MaxHealth の範囲の間に制限されています。Class.Humanoid が死亡している場合、このプロパティは常に 0 に設定されます。
Class.Humanoid:TakeDamage()|TakeDamage() 関数は、Health を直接設定する代わりに、Class.Humanoid:TakeDamage() から減算できます。
体力再生
デフォルトで、パッシブな健康再生スクリプトは自動的にヒューマノイドに挿入されます。これにより、死んでいないプレイヤーのキャラクターが、1秒ごとに MaxHealth の 1%を再生します。この再生動作を無効にするには、空の <
ヘルスバーの表示
Class.Humanoid.MaxHealth|MaxHealth が MaxHealth より小さいと、エクスペリエンス中にヘルスバーを表示します。ヘルスバーの表示動作は HealthDisplayDistance と 1>Class.Humanoid.HealthDisplayType|HealthDisplay
キャラクター名/ヘルスディスプレイ を参照して、キャラクター名とヘルスバーの見た目をコントロールする方法について説明します。
死
キャラクターの健康値が 0 に達すると、Humanoid は自動的に Enum.HumanoidStateType.Dead 状態に切り替わります。この状態では、Health は死のヒューマノイドの状態にロ
HealthDisplayDistance
このプロパティは、DisplayDistanceType プロパティと一緒に使用されて、ヒューマノイドのヘルスバーの表示可能な距離を制御します。
キャラクター名/ヘルスディスプレイ を参照して、キャラクター名とヘルスバーの見た目をコントロールする方法について説明します。
HealthDisplayType
このプロパティは、ヒューマノイドの健康バーが表示されるかどうかを制御します。デフォルトでは、このプロパティは
このプロパティは、HealthDisplayDistance プロパティによって独立して、特定の距離で健康バーをフェードアウトするために責任を負っています。 Humanoid.HealthDisplayType|HealthDisplayDistance
キャラクター名/ヘルスディスプレイ を参照して、キャラクター名とヘルスバーの見た目をコントロールする方法について説明します。
HipHeight
Class.Humanoid.RootPart|RootPart が地面から RigType に立っているときの距離 (in studs) を決定します。Class.Humanoid.RigType|RigType は、このプロパティの動作を影響させます。
R15 のリグには、RootPart の高さを保証するために、適切なヒップ高度がプリセットされています。脚の高さは使用されません。人形の高さは、次の式によって記述されることができます:
Height = (0.5 * RootPart.Size.Y) + HipHeight
R6 のリグには、HipHeight ではなく、相対オフセットを記述します。ヒューマノイドの全体高度は次の式で記述できます:
Height = LeftLeg.Size.Y + (0.5 * RootPart.Size.Y) + HipHeight
Jump
Class.Humanoid ジャンプは、 Class.Humanoid.JumpPower の値と高さに等しい上向きの力でジャンプします。 Japanese: true 、 Class.Humanoid.JumpPower または Class.Humanoid.JumpHeight 、1> Class
JumpHeight
Class.Humanoid ジャンプの高さに制御を提供します。このプロパティのスタート値は、StarterPlayer.CharacterJumpHeight の値によって決定されます。デフォルトは 7.2 です。
このプロパティを 0 に設定すると、人形がジャンプするのを効果的に防ぐことができますが、Enum.HumanoidStateType.Jumping を通じて Humanoid:SetStateEnabled() 状態を無効にすることをお勧めします。
このプロパティは、Class.Humanoid.UseJumpPower が Humanoid.UseJumpPower に設定されている場合の プロパティ ウィンドウにのみ表示されます。そうでない場合、2>Class.Humanoid.JumpPower2> が使用されています。
JumpPower
Class.Humanoid をジャンプするときに適用される上向きの力を決めます。このプロパティのスタート値は、StarterPlayer.CharacterJumpPower の値によって決まります。このプロパティは、Workspace.Gravity プロパティによ
このプロパティを 0 に設定すると、人形がジャンプするのを効果的に防ぐことができますが、Enum.HumanoidStateType.Jumping を通じて Humanoid:SetStateEnabled() 状態を無効にすることをお勧めします。
このプロパティは、Class.Humanoid.UseJumpPower が設定されている場合、Humanoid.UseJumpPower が使用されている場合、およびClass.Humanoid.JumpHeight が使用されている場合にのみ表示されます。2>Class.Humanoid.JumpHeight2> が使用されていない場合、5>Class.Humanoid.UseJ
MaxHealth
ヒューマノイドの Health の最大値。
このプロパティの値は、Health プロパティと一緒に使用されて、デフォルトのヘルスバーの表示サイズをサイズ変更します。Health が到達すると、ヘルスバーが表示されない
MaxSlopeAngle
このプロパティは、ヒューマノイドが登ることのできる最大スロープアングルを決定します。スロープの角度がヒューマノイドの最大スロープアングルより大きい場合、傾斜が下にスライドされます。
キャラクターがスポーンすると、このプロパティは StarterPlayer.CharacterMaxSlopeAngle の値に基づいて設定されます。
このプロパティの値は、0°から 89°の間の値に制限されています。デフォルトは 89°ですので、ヒューマノイドはデフォルトでほとんどの傾斜を登ることができます。
コードサンプル
local player = game.Players.LocalPlayer
local char = player.CharacterAdded:wait()
local h = char:FindFirstChild("Humanoid")
h.MaxSlopeAngle = 30
MoveDirection
MoveDirection は、Humanoid が歩いている方向を、単位ベクトルまたはゼロベクトルで表現する読み取り専用プロパティです。方向は、世界空間で説明されています。
このプロパティは読み取りのみなので、Script または LocalScript によって設定できません。
コードサンプル
local RunService = game:GetService("RunService")
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local function updateBobbleEffect()
local now = tick()
if humanoid.MoveDirection.Magnitude > 0 then -- Is the character walking?
local velocity = humanoid.RootPart.Velocity
local bobble_X = math.cos(now * 9) / 5
local bobble_Y = math.abs(math.sin(now * 12)) / 5
local bobble = Vector3.new(bobble_X, bobble_Y, 0) * math.min(1, velocity.Magnitude / humanoid.WalkSpeed)
humanoid.CameraOffset = humanoid.CameraOffset:lerp(bobble, 0.25)
else
-- Scale down the CameraOffset so that it shifts back to its regular position.
humanoid.CameraOffset = humanoid.CameraOffset * 0.75
end
end
RunService.RenderStepped:Connect(updateBobbleEffect)
NameDisplayDistance
NameDisplayDistance プロパティは、Humanoid.DisplayDistanceType プロパティと共同して使用されています。これにより、ヒューマノイドの名前が見える距離を制御できます。
キャラクター名/ヘルスディスプレイ を参照して、キャラクター名とヘルスバーの見た目をコントロールする方法について説明します。
NameOcclusion
人形の名前とヘルスバーが壁や他のオブジェクトの後ろに表示されるかどうかを制御します。これは、Enum.NameOcclusion値であり、すべての名前、敵の名前、または完全にオクルージョンを無効にすることを設定できます。
Class.Players.LocalPlayer|LocalPlayer に Humanoid が付属していない場合、このプロパティは Humanoid の対象に適用されます。
キャラクター名/ヘルスディスプレイ を参照して、キャラクター名とヘルスバーの見た目をコントロールする方法について説明します。
コードサンプル
local Players = game:GetService("Players")
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.NamOcclusion = Enum.NameOcclusion.OccludeAll
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
PlatformStand
Class.Humanoid が Enum.HumanoidStateType.PlatformStanding の状態にあるかどうかを決定します。true の場合、ヒューマノイドは自由落下し、移動できない状態にあります。この状態は、座っているように、または座っているように、ジャンプするとヒューマノイドが状態から解放されます
RequiresNeck
開発者が Neck を取り外したり、ディスコネクトしたりしたときにプレイヤーが Character|character 死亡する動作を無効にすることができます。このプロパティは、Motor6D が削除されたり、ディスコネクトされたりした瞬時にもデフォルトでは true に設定されています。
RigType
RigType は、Humanoid がレガシー R6 キャラクターリグを使用しているか、新しい R15 キャラクターリグを使用しているかを記述します。
R6 装置は、6つの可視な Parts を使用し、R15 装置は、15つの可視な Parts を使用します。R15 装置は、R6 装置よりも多くの関節を持つため、アニメーション中によりも多くの機能性を持つようになります。
このプロパティを不正に設定すると、Humanoid は正しく機能しません。たとえば、R15のヒューマノイドの RigType がR6に設定されている場合、 Class
RootPart
ヒューマノイドの HumanoidRootPart オブジェクト、ヒューマノイドの動作を 3D 世界を通じて制御する Humanoid の根ドライブ部分。この部分は通常見えません。
プレイヤーのキャラクターの場合、 ルートパート は、Model.PrimaryPart モデルの Player.Character と同じです。
SeatPart
SeatPart は、Humanoid が現在座っている座席に参照します。このプロパティの値は、Seat または VehicleSeat です。1> が座っていない場合は、4>nil4> です。
注:
- Class.Humanoid が現在座っているかどうかを記述するブールを使用するには、Humanoid.Sit を参照してください。
Sit
The Sit プロパティは、Humanoid が現在座っているかどうかを指すBooleanです。Humanoids は、このプロパティの値を true に設定することで座っている状態に強制されます。<
注:
- Class.Humanoid.SeatPart プロパティを使用すると、VehicleSeat または Humanoid の Class.Humanoid が座っていることがわかります。
- Class.Humanoid.Seated イベントに接続することで、ヒューマノイド が座るかどうかを検出することができます。
TargetPoint
使用しない このプロパティは、完全に廃止された試作モードにのみ使用できます。
このプロパティは、Player がこの Humanoid をコントロールしている 3D 位置を記述します。この Tool を装備している状態で、2>Class.Humanoid2> を最後にクリックしました。
このプロパティは、クラシックツールによって使用されることが多く、ツールを有効にすると、人形がターゲットを選択するときにターゲットポイントを決定するのに使用されます。NPC にクラシックロケットランチャーを与えると、ツールの Class.Tool:Activate() 関数を呼び出し、NPC がロケットをターゲットポ
UseJumpPower
キャラクターがスポーンすると、このプロパティは StarterPlayer.CharacterUseJumpPower の値に設定されます。デフォルトは、「はい」です。
ジャンプ時、このセットを true に設定すると、Humanoid.JumpHeight 値が使用されて、人形のジャンプがその高さに確保されます。このセットを false に設定すると、Humanoid.JumpPower 値が上昇力を適用します。
WalkSpeed
このプロパティは、Humanoid が1秒あたりのスタッドでどれくらい速く歩行できるかを記述します。デフォルトは、StarterPlayer.CharacterWalkSpeed (16) です。つまり、プレイヤーキャラクターは1秒につき16スタッドを移動できます。
注意
- モバイルデバイスまたはゲームパッドで制御されると、人形は、制御の親指が中央から傾いている場合、WalkSpeed よりも速く歩くことができます。
- Class.Humanoid.WalkSpeed|WalkSpeed を 0 に設定することで、人間形状を凍結することができます。これにより、コントロールプレイヤーがデフォルトの移動メカニズムを通じて動かすことができません。
- デフォルトのアニメーションスクリプトは、人形の移動アニメーションをデフォルトの速度の 16 スタッド/秒に基づいてスケールします。
- Class.Humanoid が現在歩いている速度は、Running イベントを使用して取得できます。
WalkToPart
WalkToPart は、Humanoid が試みている部分に対する参照です。このプロパティは通常、Humanoid の Humanoid:MoveTo() 関数の 2つ目の引数として設定されます。
WalkToPart が設定され、人形がパートに積極的に到達しようとしているとき、そのベクトル3 の目標を更新し続けることで、パーツの位置と、パーツを回転する相対のオブジェクトスペースに翻訳された Humanoid.WalkToPoint を保持します。
これは Lua で次のように記述できます:
goal = humanoid.WalkToPart.CFrame:pointToObjectSpace(humanoid.WalkToPoint)
洞窟
- WalkToPart の値を設定するだけでは、パーツの後にヒューマノイドを開始することはできません。
- ヒューマノイドは、WalkToPoint の値が変更されたときに目標に到達しようとし始めるように促されます。
- これは将来変更される可能性があります。
- ヒューマノイドの 達成目標 状態は、目標に到達しないと 8 秒後に時間切れとなります。
- NPC が Humanoid.MoveToFinished を待っている間に発射できないようにします。
- これが起こらないようにしたい場合は、MoveTo を繰り返し呼び出す必要があります。
WalkToPoint
WalkToPoint は、ヒューマノイドが人形の Humanoid:MoveTo() 機能によって要求された後、人形が到達しようとしている 3D 位置を説明します。
人形の Humanoid.WalkToPart が設定する定されている場合、目標はパーツの位置と回転に対する WalkToPoint の変換で設定されます。WalkToPoint が設定する定されていない場合は、人形は直接 WalkToPoint に指定された 3D 位置に到達しようとします。
洞窟
- WalkToPoint の値を変更すると、ヒューマノイドがそれに向かって歩き始めるようになります。
- 人形のウォークを 0,0,0 に行う場合は、人形の移動を使用する必要があります。
- これは将来変更される可能性があります。
- ヒューマノイドの 達成目標 状態は、目標に到達しないと 8 秒後に時間切れとなります。
- NPC が Humanoid.MoveToFinished を待っている間に発射できないようにします。
- これが起こらないようにしたい場合は、MoveTo を繰り返し呼び出す必要があります。
コードサンプル
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
方法
AddAccessory
このメソッドは、指定された Accessory をヒューマノイドの親に付けます。
このメソッドが呼び出されると、Accessory は、 Class.Att
必要な Attachment が見つからない場合は、Accessory は、ヒューマノイドの親に残りますが、取り付けられません。
アクセサリーの接続は、通常、サーバーで作成されますが、特定の状況下では、クライアントによる AddAccessory() の呼び出しが必ずしも望ましい動作を生成するわけではありません。これらの状況では、 Class.Human
パラメータ
戻り値
コードサンプル
local playerModel = script.Parent
local humanoid = playerModel:WaitForChild("Humanoid")
local clockworksShades = Instance.new("Accessory")
clockworksShades.Name = "ClockworksShades"
local handle = Instance.new("Part")
handle.Name = "Handle"
handle.Size = Vector3.new(1, 1.6, 1)
handle.Parent = clockworksShades
local faceFrontAttachment = Instance.new("Attachment")
faceFrontAttachment.Name = "FaceFrontAttachment"
faceFrontAttachment.Position = Vector3.new(0, -0.24, -0.45)
faceFrontAttachment.Parent = handle
local mesh = Instance.new("SpecialMesh")
mesh.Name = "Mesh"
mesh.Scale = Vector3.new(1, 1.3, 1)
mesh.MeshId = "rbxassetid://1577360"
mesh.TextureId = "rbxassetid://1577349"
mesh.Parent = handle
humanoid:AddAccessory(clockworksShades)
BuildRigFromAttachments
このメソッドは、Motor6D のツリーのジョイントの Humanoid のツリーを作成します。Motor6D のジョイントは、2>Class.Animation|Animations2> のプレイバックに必要です。
人形の RootPart から開始するこのメソッドは、現在のパーツの名前が Attachments で終了する場合、パーツの親をす
Humanoid:BuildRigFromAttachments() は、キャラクターのサイズを拡大/縮小し、ボディの色を設定します。
戻り値
コードサンプル
local function createJoint(jointName, att0, att1)
local part0, part1 = att0.Parent, att1.Parent
local newMotor = part1:FindFirstChild(jointName)
if not (newMotor and newMotor:IsA("Motor6D")) then
newMotor = Instance.new("Motor6D")
end
newMotor.Name = jointName
newMotor.Part0 = part0
newMotor.Part1 = part1
newMotor.C0 = att0.CFrame
newMotor.C1 = att1.CFrame
newMotor.Parent = part1
end
local function buildJointsFromAttachments(part, characterParts)
if not part then
return
end
-- first, loop thru all of the part's children to find attachments
for _, attachment in pairs(part:GetChildren()) do
if attachment:IsA("Attachment") then
-- only do joint build from "RigAttachments"
local attachmentName = attachment.Name
local findPos = attachmentName:find("RigAttachment")
if findPos then
-- also don't make double joints (there is the same named
-- rigattachment under two parts)
local jointName = attachmentName:sub(1, findPos - 1)
if not part:FindFirstChild(jointName) then
-- try to find other part with same rig attachment name
for _, characterPart in pairs(characterParts) do
if part ~= characterPart then
local matchingAttachment = characterPart:FindFirstChild(attachmentName)
if matchingAttachment and matchingAttachment:IsA("Attachment") then
createJoint(jointName, attachment, matchingAttachment)
buildJointsFromAttachments(characterPart, characterParts)
break
end
end
end
end
end
end
end
end
local function buildRigFromAttachments(humanoid)
local rootPart = humanoid.RootPart
assert(rootPart, "Humanoid has no HumanoidRootPart.")
local characterParts = {}
for _, descendant in ipairs(humanoid.Parent:GetDescendants()) do
if descendant:IsA("BasePart") then
table.insert(characterParts, descendant)
end
end
buildJointsFromAttachments(rootPart, characterParts)
end
local humanoid = script.Parent:WaitForChild("Humanoid")
buildRigFromAttachments(humanoid)
local AssetService = game:GetService("AssetService")
local InsertService = game:GetService("InsertService")
local MarketplaceService = game:GetService("MarketplaceService")
local PACKAGE_ASSET_ID = 193700907 -- Circuit Breaker
local function addAttachment(part, name, position, orientation)
local attachment = Instance.new("Attachment")
attachment.Name = name
attachment.Parent = part
if position then
attachment.Position = position
end
if orientation then
attachment.Orientation = orientation
end
return attachment
end
local function createBaseCharacter()
local character = Instance.new("Model")
local humanoid = Instance.new("Humanoid")
humanoid.Parent = character
local rootPart = Instance.new("Part")
rootPart.Name = "HumanoidRootPart"
rootPart.Size = Vector3.new(2, 2, 1)
rootPart.Transparency = 1
rootPart.Parent = character
addAttachment(rootPart, "RootRigAttachment")
local head = Instance.new("Part")
head.Name = "Head"
head.Size = Vector3.new(2, 1, 1)
head.Parent = character
local headMesh = Instance.new("SpecialMesh")
headMesh.Scale = Vector3.new(1.25, 1.25, 1.25)
headMesh.MeshType = Enum.MeshType.Head
headMesh.Parent = head
local face = Instance.new("Decal")
face.Name = "face"
face.Texture = "rbxasset://textures/face.png"
face.Parent = head
addAttachment(head, "FaceCenterAttachment")
addAttachment(head, "FaceFrontAttachment", Vector3.new(0, 0, -0.6))
addAttachment(head, "HairAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "HatAttachment", Vector3.new(0, 0.6, 0))
addAttachment(head, "NeckRigAttachment", Vector3.new(0, -0.5, 0))
return character, humanoid
end
local function createR15Package(packageAssetId)
local packageAssetInfo = MarketplaceService:GetProductInfo(packageAssetId)
local character, humanoid = createBaseCharacter()
character.Name = packageAssetInfo.Name
local assetIds = AssetService:GetAssetIdsForPackage(packageAssetId)
for _, assetId in pairs(assetIds) do
local limb = InsertService:LoadAsset(assetId)
local r15 = limb:FindFirstChild("R15")
if r15 then
for _, part in pairs(r15:GetChildren()) do
part.Parent = character
end
else
for _, child in pairs(limb:GetChildren()) do
child.Parent = character
end
end
end
humanoid:BuildRigFromAttachments()
return character
end
local r15Package = createR15Package(PACKAGE_ASSET_ID)
r15Package.Parent = workspace
ChangeState
この関数は、Humanoid が現在実行しているアクティビティを記述する Enum.HumanoidStateType に入るようになります。
特定の状態についての詳細は、Enum.HumanoidStateTypeページを参照してください。これは、いくつかの名前が不正確であるため、特定の状態についての情報が不明瞭です。たとえば、Enum.HumanoidStateType.Runningは、人形の脚が地上にある状態を記述しています。これには、Ennum.HumanoidStateType、<
Class.Humanoid のデフォルト動作により、一部の状態は設定する定時に自動的に変更されます。たとえば:
- 人形が水にあることなく Enum.HumanoidStateType.Swimming に状態を設定すると、自動的に Enum.HumanoidStateType.GettingUp に設定されます。
- 使用されていない状態では、Enum.HumanoidStateType.PlatformStanding に状態を設定すると、人形状態が自動的に Enum.HumanoidStateType.Running に設定されます。
また、Humanoid:SetStateEnabled() を参照して、特定の状態を有効にするか無効にするか、および Humanoid:GetState() を参照して、現在のヒューマノイド状態を取得すること。
パラメータ
Class.Humanoid が実行する Humanoid 。
戻り値
コードサンプル
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
EquipTool
この関数は、Humanoid が与えられた Tool を装備します。
下の例では、 Player が Workspace の名前のついたツールを装備します。
local Players = game:GetService("Players")local player = Players:FindFirstChildOfClass("Player")if player and player.Character thenlocal humanoid = player.Character:FindFirstChildWhichIsA("Humanoid")if humanoid thenlocal tool = workspace:FindFirstChild("Tool")if tool thenhumanoid:EquipTool(tool)endendend
この関数が呼び出されると、ヒューマノイドは自動的に装備している Tools を外します
装備されるかどうかにかかわらず、Tools のために、Tool.RequiresHandle がある場合、Class.Tool.Tool が装備されないことは、2> この機能を使用して装備するかどうかにかかわらず、5> true5> では機能しません。
参照してください:
- ツールを装備解除するには、Humanoid:UnequipTools() を使用します。
パラメータ
戻り値
GetAccessories
この関数は、Accessory オブジェクトのアレイを返し、現在、ヒューマノイドの親が着用している Accessory オブジェクトを返します。すべての such Class.Accessory オブジェクトは含まれます、付属されているかどうかにかかわらず。
Class.Humanoid には Accessory オブジェクトがありませんので、空の配列が返されます。
また、Humanoid:AddAccessory() を参照して、Accessory をヒューマノイドの親に付ける。
戻り値
Class.Accessory オブジェクト の配列は、ヒューマノイドの親にリンクされています。
コードサンプル
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
GetAppliedDescription
この関数は、HumanoidDescription のキャッシュを返し、現在の外観を説明する人形のコピーを返します。これは、キャラクターの外観を迅速に確認するために使用できます。これは、Humanoid:ApplyDescription() 機能を使用して、他のキャラクターに外観を割り当てるために、Class.Humanoid:ApplyDescription
参照してください
- Players:GetHumanoidDescriptionFromUserId() は、ユーザーに通過したアバターを記述する HumanoidDescription を返します。
- Players:GetHumanoidDescriptionFromOutfitId() は、HumanoidDescription のパラメーターをインタライズして、サーバー側のアウトフィットアセットと一致させるように初期化されます。
- Player:LoadCharacterWithHumanoidDescription() は、HumanoidDescription を通してパスされたプレイヤーをスポーンします。
戻り値
GetBodyPartR15
この関数は、Enum.BodyPartR15 が、または、Part が、または、Enum.BodyPartR15.Unknown が、1>R15 ボディパーツであるかどうかにかかわらず、ボディパーツの名前を返します。この関数は、開発者が実際のボディパーツの名前ではなく、プレイヤーのボ
Class.Humanoid:ReplaceBodyPartR15 と Class.Humanoid:ReplaceBodyPartR15 の両方を使用することができます。たとえば、プレイヤーのボディ部分が何かに触れると、この関数は get a part instance を返します。開発者は、頭や腕などのボディ部分が何であったかを参照して、ゲ
この関数は、ヒット場所が重要なゲームで便利です。たとえば、これは、プレイヤーが足を打たれたかどうかを判断するのに使用できます。それに基づいて、怪我の重度に応じて速度を遅くします。
パラメータ
指定されたパーツが R15 ボディパーツであるかどうかをチェックしています。
戻り値
指定されたパーツの R15 ボディパーツタイプまたは未指定の場合。
GetLimb
この関数は、Enum.Limb に与えられた Part 枚数を返します。R15 と R6 の両方のリグで動作します。たとえば:
-- R15 用print(humanoid:GetLimb(character.LeftUpperLeg)) -- enum.Limb.LeftLegprint(humanoid:GetLimb(character.LeftLowerLeg)) -- enum.Limb.LeftLegprint(humanoid:GetLimb(character.LeftFoot)) -- enum.Limb.LeftLeg-- R6 用print(humanoid:GetLimb(character:FindFirstChild("Left Leg"))) -- Enum.Limb.LeftLeg
注: Humanoid:GetLimb() は、パーツの親がヒューマノイドの親に設定されていない場合、エラーが発生します。
パラメータ
Class.Part の Class.Limb の Class.Limb を取得する必要があります。
戻り値
enum.Limb のパーツに対応する。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
for _, child in pairs(character:GetChildren()) do
local limb = humanoid:GetLimb(child)
if limb ~= Enum.Limb.Unknown then
print(child.Name .. " is part of limb " .. limb.Name)
end
end
GetState
この関数は、Enum.HumanoidStateType が現在実行しているアクティビティ、ジャンプやスイミングなど、を記述する humanoid の現在の Humanoid を返します。
また、Humanoid:SetStateEnabled() を参照して、特定の状態を有効にするか無効にする、およびHumanoid:ChangeState() を参照して、現在のヒューマノイド状態を変更します。
戻り値
コードサンプル
local UserInputService = game:GetService("UserInputService")
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local doubleJumpEnabled = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not doubleJumpEnabled then
task.wait(0.2)
if humanoid:GetState() == Enum.HumanoidStateType.Freefall then
doubleJumpEnabled = true
end
end
elseif newState == Enum.HumanoidStateType.Landed then
doubleJumpEnabled = false
end
end)
UserInputService.InputBegan:Connect(function(inputObject)
if inputObject.KeyCode == Enum.KeyCode.Space then
if doubleJumpEnabled then
if humanoid:GetState() ~= Enum.HumanoidStateType.Jumping then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
task.spawn(function()
doubleJumpEnabled = false
end)
end
end
end
end)
GetStateEnabled
GetStateEnabled 関数は、Enum.HumanoidStateType の Humanoid が有効であるかどうかを返します。
ヒューマノイド状態は、ヒューマノイドが現在実行しているアクティビティを説明します。
特定の Class.Humanoid:ChangeState() が無効になっているときは、人形はその状態に入ることはできません。これは、 Class.Humanoid:ChangeState() または Roblox 内部の人形コードを使用して状態を変更しようとしている場合も同様です。
参照してください:
- ヒューマノイド状態が有効化されたり無効化されたりするときのイベントは、Humanoid.StateEnabledChanged を参照してください
- Class.Humanoid:SetStateEnabled() を使用して、Humanoid:SetStateEnabled() 状態を有効化/無効化します
パラメータ
枚数.ヒューマノイド状態タイプ が与えられました。
戻り値
枚数.ヒューマノイド状態タイプ が有効化されているかどうか。
コードサンプル
local humanoid = script.Parent:WaitForChild("Humanoid")
-- Set state
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
-- Get state
print(humanoid:GetStateEnabled(Enum.HumanoidStateType.Jumping)) -- false
Move
この関数は、Humanoid が、Vector3 の指定した方向に歩くようにします。
デフォルトでは、方向は世規約の言語ですが、relativeToCamera パラメーターが true である場合、CFrame の 12>Class.Workspace.CurrentCamera|CurrentCamera2> の方向
humanoid:Move(Vector3.new(0, 0, -1), true)
この関数が呼び出されると、Humanoid は、機能が再び呼び出されるまでに移動します。ただし、デフォルトのコントロールスクリプトが使用されている場合、Characters に呼び出されると、この関数は Class.RunService:Bind
この関数はサーバーで呼び出すことができますが、これは人形のアセンブルのネットワーク所有権を持っているときにのみ行うべきです。
また、Humanoid:MoveTo() を参照して、Humanoid がポイントに歩き、Player:Move() がこの関数を実際に呼び出します。
パラメータ
歩く方向。
MoveDirection パラメーターが moveDirection に相対して取得される場合、CurrentCamera を設定します。
戻り値
コードサンプル
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
RunService:BindToRenderStep("move", Enum.RenderPriority.Character.Value + 1, function()
if player.Character then
local humanoid = player.Character:FindFirstChild("Humanoid")
if humanoid then
humanoid:Move(Vector3.new(0, 0, -1), true)
end
end
end)
MoveTo
この関数は、Humanoid が、Humanoid.WalkToPoint および Humanoid.WalkToPart プロパティを設定して、2>Class.Humanoid.WalkToPoint2> および 5>Class.Humanoid.WalkToPart5> に移動しようとします。
場所 location および part パラメータは、Humanoid.WalkToPoint および 1> Class.Humanoid.WalkToPart1> が設定される値と一致します。
Class.Humanoid パラメーターが指定されている場合、Humanoid はまだHumanoid の位置に歩きます。しかし、1>Class.Humanoid1> が移動すると、
ヒューマノイドの 達成目標状態 は、目標に到達しないと 8 秒後に時間切れとなります。これは、NPC が 2>Class.Humanoid.MoveToFinished2> を待っているのではなく、5>Class.Humanoid.MoveTo5> を呼び出すために再び呼び出されます。これを望まない場合は、
MoveTo() は、次のコンディションが適用される場合、終了します:
キャラクターは目的地に到着します。
キャラクターがステックされ、8秒のタイマーが切れます。
Class.Humanoid.WalkToPoint または Humanoid.WalkToPart の値が変更されます。
スクリプトは、新しい <a href="/reference/engine/databases">moveDirection</a> パラメーターで moveDirection を呼び出します。
パラメータ
Class.Humanoid.WalkToPoint を設定する位置。
Class.BasePart を設定して Humanoid.WalkToPart に。
戻り値
コードサンプル
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
RemoveAccessories
この関数は、Accessory オブジェクトのうちのすべてを削除します。これは、プレイヤーの Characters にとって、すべての帽子や他のアクセサリーを削除します。
この関数は、Accessory オブジェクトを呼び出して Instance:Destroy() することで、アクセサリーのParent が 2>nil2> とロックされていることを意味します。
Class.Humanoid:AddAccessory() を参照して、Accessory を付ける、および Humanoid:GetAccessories() を取得して、1>Class.Accessory1> オブジェクトのすべてを得る。
戻り値
コードサンプル
local Players = game:GetService("Players")
local function onPlayerAddedAsync(player)
local connection = player.CharacterAppearanceLoaded:Connect(function(character)
-- All accessories have loaded at this point
local humanoid = character:FindFirstChildOfClass("Humanoid")
local numAccessories = #humanoid:GetAccessories()
print(("Destroying %d accessories for %s"):format(numAccessories, player.Name))
humanoid:RemoveAccessories()
end)
-- Make sure we disconnect our connection to the player after they leave
-- to allow the player to get garbage collected
player.AncestryChanged:Wait()
connection:Disconnect()
end
for _, player in Players:GetPlayers() do
task.spawn(onPlayerAddedAsync, player)
end
Players.PlayerAdded:Connect(onPlayerAddedAsync)
ReplaceBodyPartR15
ヒューマノイドの R15/Rthro リムボーン部分を別の部分にダイナミックに交換します。部分は自動的に正常にスケールされます。
この関数は、ゲームプレイ中にキャラクターを変更したり、ベースのリグからキャラクターを構築したりするのに便利です。関連する関数 GetBodyPartR15 は、この関数を使用すると便利になります。
パーツの名前は、パーツの名前と一致する必要があります。BodyPartR15Enum の名前と一致する必要がありません。
パラメータ
交換するボディパーツ。 Enum.BodyPartR15.Unknown が失敗します。
戻り値
SetStateEnabled
この関数は、Enum.HumanoidStateType に特定の Humanoid が有効になっているかどうかを設定します。Enum.HumanoidStateType が特定の 2>Enуム.H
サーバー上で SetStateEnabled() を使用すると、変更はクライアントに再プレートされません。
パラメータ
枚数.ヒューマノイド状態タイプ を有効にするか無効にする。
true が有効になる場合、state が有効になる必要があります。false が有効になる必要があります。
戻り値
コードサンプル
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
TakeDamage
この関数は、Humanoid.Health の Class.Humanoid の Humanoid を保護しないと、Class.Humanoid の 2>Class.ForceField2> の 5>Class.Humanoid5> の下にある 8>Class.ForceField8> の 1>Class.ForceField1> の下にある 4>Class.ForceField4> の下にある Humanoid.Health
この関数は、量パラメーターのネガティブ値を受け入れます。これにより、人形の Humanoid.Health が増加します。ただし、ForceField が存在しない場合のみ、この効果は得られません。
ForceFields は TakeDamage に対してどのように保護されます
Class.Humanoid は、ForceField が次のクリテリオを満たしている場合、ForceField によって保護されます。
- Class.ForceField は、Instance.Parent と同じ Humanoid を共有します
- Class.ForceField は、Humanoid.RootPart の Humanoid の親になります
- Class.ForceField は、Humanoid 以外の祖先にまで親化されています
Class.Humanoid にダメージを与えるか、ForceFields が存在するかにかかわらず、Humanoid.Health を直接設定します。
For more information on how ForceFields protect Humanoids see the ForceField page
パラメータ
ダメージ、または Humanoid.Health から差し引く額。
戻り値
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
humanoid:TakeDamage(99)
UnequipTools
この関数は、Tool に現在装備されているすべての Humanoid を装備解除します。
装備されていない Tool は、Backpack の上位にあり、Player が 1> Class.Humanoid1> に関連付けられています。
Class.Tool が装備されていない場合、この関数は何もしません。
NPC (Non Player Characters)は、Tools を装備できますが、この機能は、Humanoids に対応する Player のみで動作します。これは、2>Class.Backpack2> オブジェクトが、装備されていない 5>
参照してください:
- 代わりに Tool を装備するには、Humanoid:EquipTool() を使用してください
戻り値
コードサンプル
local Players = game:GetService("Players")
local ContextActionService = game:GetService("ContextActionService")
local player = Players.LocalPlayer
ContextActionService:BindAction("unequipTools", function(_, userInputState)
if userInputState == Enum.UserInputState.Begin then
if player.Character then
local humanoid = player.Character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:UnequipTools()
end
end
end
end, false, Enum.KeyCode.U)
ApplyDescription
この関数は、キャラクターがパスされた HumanoidDescription に一致するように見えます。パスされた HumanoidDescription のコピーは、HumanoidDescription のための 1>Class.HumanoidDescription1> としてキャッシュされます。
この関数は、この関数だけがキャラクターの外観を変更するために使用されるという仮定に基づいて最適化されています。変更は、コールの間に他のメソッドを通じてキャラクターを更新する
参照してください
- Humanoid:GetAppliedDescription() は、人形に適用されている HumanoidDescription を返します。
- Players:GetHumanoidDescriptionFromUserId() は、ユーザーに通過したアバターを記述する HumanoidDescription を返します。
- Players:GetHumanoidDescriptionFromOutfitId() は、HumanoidDescription のパラメーターをインタライズして、サーバー側のアウトフィットアセットと一致させるように初期化されます。
- Player:LoadCharacterWithHumanoidDescription() は、HumanoidDescription を通してパスされたプレイヤーをスポーンします。
パラメータ
キャラクターをマッチする HumanoidDescription インスタンス。
戻り値
ApplyDescriptionReset
この関数は、キャラクターがパスされた HumanoidDescription に一致するように見えるように、パスしたキャラクターの外観を HumanoidDescription に変更します。パスした HumanoidDescription のコピーは、1>Class.Humanoid1> のための 4>Class.HumanoidDescription</
この関数は、変更がキャラクターに適用されることを常に確認し
パラメータ
キャラクターをマッチするように設定したい HumanoidDescription インスタン一致。
戻り値
イベント
Climbing
Class.Humanoid がクライミングする速度が変わるときにファイアを起動します。
Humanoids は、Parts またはTrussParts でできた梯子を登ることができます。
Humanoids は、Humanoid.WalkSpeed の 70% でクライムします。
このイベントは、Humanoid がクライミングを停止するときには、常に速度 0 では発動しません。
参照してください:
- For swimming and running see the Humanoid.Swimming and Humanoid.Running events
- Class.Humanoid.StateChanged イベントを使用して、Humanoid.StateChanged がクライミングしているかどうかを検出することもできます
- Class.Humanoid:SetStateEnabled() 関数を使用して、登山を無効にできます
パラメータ
Class.Humanoid が現在クライミングする速度。
コードサンプル
local Players = game:GetService("Players")
local function onCharacterClimbing(character, speed)
print(character.Name, "is climbing at a speed of", speed, "studs / second.")
end
local function onCharacterAdded(character)
character.Humanoid.Climbing:Connect(function(speed)
onCharacterClimbing(character, speed)
end)
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(onCharacterAdded)
end
Players.PlayerAdded:Connect(onPlayerAdded)
Died
このイベントは、Humanoid が死亡するときに発生します。通常、Humanoid.Health が 0 に達するときに発生します。これは、Humanoid.Torso から頭を離れるか、直接2>Class.Humanoid.Health2> を設定することにより、5>Class.Humanoid5> が死亡するときに
このイベントは、Humanoid が Workspace の子孫である場合にのみ発動します。Dead2>枚数.HumanoidStateType2> が無効になっている場合は、5>枚数.HumanoidStateType5> が無効になっています。
コードサンプル
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
フォールダウンイベントは、Humanoid が FallingDown に入ると、Enum.HumanoidStateType を離れるときに発生します。
The Humanoid は、GettingUp 状態が有効になる 3 秒後に、FallingDown 状態に入ります。このイベントが発生すると、1> アクティブな1>
パラメータ
Class.Humanoid が FallingDown Enum.HumanoidStateType に入るかどうかを記述します。
FreeFalling
このイベントは、Humanoid が Freefall に入るか、Enum.HumanoidStateType を離れるときに発生します。
パラメーター active は、Humanoid が Freefall 状態に入るかどうかを表示します。
Class.Humanoid が地面に到達すると、一般的に Humanoid 状態が終了しますが、このイベントは、 1> Class.Humanoid
パラメータ
Class.Humanoid が Freefall の Enum.HumanoidStateType に入るかどうか。
GettingUp
このイベントは、Humanoid が Enum.HumanoidStateType.GettingUp 状態に入るまたは離れるときに発生します。Humanoid が 2>Ennum.HumanoidStateType.FallingDown|
Class.Humanoid が再び起動しようとすると、このイベントは、active パラメータの true 以前に再び発動すると、1> 4>active4> パラメータの 7>7> 以前に発生する前に最初に発生します。
Class.Humanoid を強制的に落下させるには、Humanoid:ChangeState() 機能を使用し、Enum.HumanoidStateType.FallingDown で 1>Class.Humanoid1> を強制します。
パラメータ
Class.Humanoid が GettingUp から入ったり、Enum.HumanoidStateType から去ったりしますか。
HealthChanged
このイベントは、Humanoid.Health が変更されると発動します。ただし、Humanoid.MaxHealth の健康が増加すると、このイベントは発動しません。
Class.Humanoid.Health がゼロに達すると、Humanoid は死んで、Humanoid.Died イベントが発生します。このイベントは、ゼロの値で発動します。
パラメータ
新しい値の Humanoid.Health 。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local function onCharacterAdded(character)
local humanoid = character:WaitForChild("Humanoid")
local currentHealth = humanoid.Health
local function onHealthChanged(health)
local change = math.abs(currentHealth - health)
print("The humanoid's health", (currentHealth > health and "decreased by" or "increased by"), change)
currentHealth = health
end
humanoid.HealthChanged:Connect(onHealthChanged)
end
player.CharacterAdded:Connect(onCharacterAdded)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
-- Paste script into a LocalScript that is
-- parented to a Frame within a Frame
local frame = script.Parent
local container = frame.Parent
container.BackgroundColor3 = Color3.new(0, 0, 0) -- black
-- This function is called when the humanoid's health changes
local function onHealthChanged()
local human = player.Character.Humanoid
local percent = human.Health / human.MaxHealth
-- Change the size of the inner bar
frame.Size = UDim2.new(percent, 0, 1, 0)
-- Change the color of the health bar
if percent < 0.1 then
frame.BackgroundColor3 = Color3.new(1, 0, 0) -- black
elseif percent < 0.4 then
frame.BackgroundColor3 = Color3.new(1, 1, 0) -- yellow
else
frame.BackgroundColor3 = Color3.new(0, 1, 0) -- green
end
end
-- This function runs is called the player spawns in
local function onCharacterAdded(character)
local human = character:WaitForChild("Humanoid")
-- Pattern: update once now, then any time the health changes
human.HealthChanged:Connect(onHealthChanged)
onHealthChanged()
end
-- Connect our spawn listener; call it if already spawned
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
Jumping
このイベントは、Humanoid が Jumping``Enum.HumanoidStateType に入ると発生し、2>Container.Humanoid2> の状態を取得する。
Class.Humanoid がジャンプすると、このイベントは active パラメータの true が再び発射さ
Class.Humanoid:SetStateEnabled() 関数を使用して、ジャンプを無効にできます。
パラメータ
Class.Humanoid が Jumping Enum.HumanoidStateType に入るか、それとも去るか。
MoveToFinished
このイベントは、Humanoid が、Humanoid.WalkToPoint および Humanoid.WalkToPart プロパティの歩行を終了したときに発生します。
Class.Humanoid.WalkToPoint と Humanoid.WalkToPart プロパティは個々に設定できます。または、Humanoid:MoveTo() 機能を使用してください。
Class.Humanoid が 8 秒以内に目標に到達すると、このイベントは 目標に到達した として戻ります。目標が 8 秒以内に到達されないと、Humanoid は歩きを停止し、1> 到達し
パラメータ
コードサンプル
local function moveTo(humanoid, targetPoint, andThen)
local targetReached = false
-- listen for the humanoid reaching its target
local connection
connection = humanoid.MoveToFinished:Connect(function(reached)
targetReached = true
connection:Disconnect()
connection = nil
if andThen then
andThen(reached)
end
end)
-- start walking
humanoid:MoveTo(targetPoint)
-- execute on a new thread so as to not yield function
task.spawn(function()
while not targetReached do
-- does the humanoid still exist?
if not (humanoid and humanoid.Parent) then
break
end
-- has the target changed?
if humanoid.WalkToPoint ~= targetPoint then
break
end
-- refresh the timeout
humanoid:MoveTo(targetPoint)
task.wait(6)
end
-- disconnect the connection if it is still connected
if connection then
connection:Disconnect()
connection = nil
end
end)
end
local function andThen(reached)
print((reached and "Destination reached!") or "Failed to reach destination!")
end
moveTo(script.Parent:WaitForChild("Humanoid"), Vector3.new(50, 0, 50), andThen)
PlatformStanding
このイベントは、Humanoid が PlatformStanding に入るか Enum.HumanoidStateType に離れるときに発生します。
Class.Humanoid は PlatformStanding 状態の間、Humanoid.PlatformStand プロパティは 1> 真です1>。
Class.Humanoid.PlatformStand が true に設定されている間、Humanoid は移動できません。詳細は、1> Class.Humanoid.PlatformStand1> のページを参照してください。
PlatformStand Enum.HumanoidStateType は、今は使用できない Platform 部分と関連付けられています。ただし、開発者はまだ使用できます。
パラメータ
Class.Humanoid が PlatformStanding から入ったり、出たりしていますか。
Ragdoll
このイベントは、Humanoid が Ragdoll を入力または離れるときに発生します。Enum.HumanoidStateType 。
パラメータ active は、true または false を持つことで、入力または退出を表示します。
Class.Humanoid:SetStateEnabled() を使用して、GettingUp 状態を無効にして、ラグドール状態を保持します。
参照してください:
- Humanoid.FallingDown for the Humanoid イベント連結の FallingDown 状態、 which behaves similarly to 0> Ragdoll0>
パラメータ
Class.Humanoid が Ragdoll を入力したか、または Enum.HumanoidStateType を離れます。
Running
このイベントは、Humanoid が変更を実行する速度に応じて発生します。
Class.Humanoid|Humanoids のコバーを実行している間、平均して Humanoid.WalkSpeed は、/秒のスタッドで Class.Humanoid の速度を表します。
Class.Humanoid がこのイベントを実行していないときは、速度 0 で発動します。
参照してください:
- For swimming and climbing see the Humanoid.Swimming and Humanoid.Climbing events
- Class.Humanoid.StateChanged イベントを使用して、Humanoid.StateChanged が実行されているかどうかを検出することもできます
パラメータ
Class.Humanoid が実行される速度。
コードサンプル
local Players = game:GetService("Players")
local localPlayer = Players.LocalPlayer
local character = localPlayer.Character or localPlayer.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onRunning(speed: number)
if speed > 0 then
print(`{localPlayer.Name} is running`)
else
print(`{localPlayer.Name} has stopped`)
end
end
humanoid.Running:Connect(function(speed: number)
onRunning(speed)
end)
Seated
このイベントは、Humanoid が座っているか、Seat または VehicleSeat から立ち上がると発生します。
キャラクターが座席に接触すると、座席に接触し、座席に座るアニメーションがプレイされます。このテーマについての詳細は、Seatページを参照してください。
- キャラクターが座っている場合、 active パラメーターは true であり、currentSeatPart は現在座っている座席です。
- キャラクターが座から起きた場合、 active パラメーターは false であり、 currentSeatPart は nil です。
参照してください:
- Humanoid.Sit 、これは現在ヒューマノイドが座っているかどうかを示します
- Humanoid.SeatPart 、これは、座席が現在座っているヒューマノイドです。
パラメータ
Class.Humanoid が座っている場合、True。
コードサンプル
local character = script.Parent
local humanoid = character:WaitForChild("Humanoid")
local function onSeated(isSeated, seat)
if isSeated then
print("I'm now sitting on: " .. seat.Name .. "!")
else
print("I'm not sitting on anything")
end
end
humanoid.Seated:Connect(onSeated)
StateChanged
このイベントは、Humanoid の状態が変更されると発動します。
人間形態の状態が「待機」ないので、Humanoid.Running イベントを使用するか、RootPart 部分のVelocity を聞くことで、2> Class.Humanoid2> が動作します。
参照してください
- Humanoid:GetState() と Humanoid:ChangeState() を呼び出して、状態を取得して設定します。
- Humanoid:SetStateEnabled() を有効にして無効にして、特定の状態を有効化/無効化します。
パラメータ
ヒューマノイドの前の状入力タイプ。
ヒューマノイドの現在の状入力タイプ。
コードサンプル
local character = script.Parent
local primaryPart = character.PrimaryPart
-- create particles
local particles = Instance.new("ParticleEmitter")
particles.Size = NumberSequence.new(1)
particles.Transparency = NumberSequence.new(0, 1)
particles.Acceleration = Vector3.new(0, -10, 0)
particles.Lifetime = NumberRange.new(1)
particles.Rate = 20
particles.EmissionDirection = Enum.NormalId.Back
particles.Enabled = false
particles.Parent = primaryPart
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
-- listen to humanoid state
local function onStateChanged(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
particles.Enabled = true
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
particles.Enabled = false
end
end
end
humanoid.StateChanged:Connect(onStateChanged)
local character = script.Parent
local JUMP_DEBOUNCE = 1
local humanoid = character:WaitForChild("Humanoid")
local isJumping = false
humanoid.StateChanged:Connect(function(_oldState, newState)
if newState == Enum.HumanoidStateType.Jumping then
if not isJumping then
isJumping = true
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end
elseif newState == Enum.HumanoidStateType.Landed then
if isJumping then
isJumping = false
task.wait(JUMP_DEBOUNCE)
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
end
end
end)
StateEnabledChanged
StateEnableChanged イベントは、 Humanoid:SetStateEnabled() が Humanoid に呼び出されるときに発動します。
パラメータには、Enum.HumanoidStateType 以外の値が含まれており、この状態が有効になっているかどうかを示すブールが含まれています。
参照してください:
- 現在、状態が有効であるかどうかを確認するには、Humanoid:GetStateEnabled() を使用します
- Class.Humanoid の状態変更を聞くには、Humanoid.StateChanged を使用します
パラメータ
有効化された状態の Enum.HumanoidStateType に変更された。
状態が有効になっている場合は、True です。
コードサンプル
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local function onStateEnabledChanged(state, enabled)
if enabled then
print(state.Name .. " has been enabled")
else
print(state.Name .. " has been disabled")
end
end
humanoid.StateEnabledChanged:Connect(onStateEnabledChanged)
Strafing
このイベントは Humanoid がストラフしているときは発動しませんが、開発者には使用しないでください
このイベントは、Humanoid が StrafingNoPhysics に入るか、Enum.HumanoidStateType に離れるときに発生します。
Class.Humanoid が StrafingNoPhysics 状態に入ると、このイベントは アクティブ パラメータの 1> true1> で発動します。イベントは 4> active4> で発
このイベントは、<a href="https://developer.microsoft.com/en-us/microsoft-edge/microsoft-edge-common- InterestingLinks">Class.Humanoid</a> 状態と<a href="https://developer.microsoft.com/en-us/microsoft-edge/microsoft-edge-common- InterestingLinks">Class.Humanoid</
パラメータ
Class.Humanoid が StrafingNoPhysics の Enum.HumanoidStateType に入るか、または去るか。
Swimming
このイベントは、Humanoid が水の中でTerrain でスイミングする速度が変わると発生します。
Humanoids は、Humanoid.WalkSpeed の 87.5%で泳ぐ。
このイベントは、Humanoidが泳ぐのをやめるときに必ず 0 のスピードで発動しません。
参照してください:
- 実行と登山のためには、Humanoid.Running と Humanoid.Climbing イベントを参照してください
- Class.Humanoid.StateChanged イベントを使用して、Humanoid.StateChanged が泳いでいるかどうかを検出することもできます
- Class.Humanoid:SetStateEnabled() 関数を使用して、水泳を無効にできます
パラメータ
Touched
このイベントは、ヒューマノイドの 1つの limbs が別の BasePart に接触すると発生します。ヒューマノイドの limbs に触れている、リンクされた limbs 自体が与えられます。
このイベントは、Humanoid のリンクに接触すると発動しません。
代替
Class.Humanoid.Touched イベントは便利ですが、あなたのニーズに最適な代替があるかどうかを検討する必要があります。
- ほとんどの場合、BasePart.Touched イベントをBasePartsの代わりに接続することをお勧めします。たとえば、ド
- Class.Humanoid が地面に着陸したとき、Humanoid.StateChanged イベントが適しています。また、Humanoid.FloorMaterial をチェックして、人形が空気以外の素材に立っているかどうかを確認することもできます。
注意
- このイベントに接続すると、すべてのリムブで TouchTransmitter を作成します。
- 現在、 BasePart.TouchEnded の代わりに使用できるのはありません。
パラメータ
Class.Humanoid のリングが触れたリング。
コードサンプル
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)