BasePart

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

作成できません
閲覧できません

BasePart は、

For information on how BaseParts are grouped into simulated rigid bodies, see アセンブル .

Class.BasePart ( Terrain を除く) にインタラクトする多くの異なるオブジェクトがあります。

  • 複数の BaseParts は、Model 内にグループ化され、PVInstance:PivotTo() を使用して同時に移動されます。2>モデル2> を参照してください。
  • Class.Decal は、BasePart の顔にストレッチング画像テクスチャを適用しますが、Texture は、顔にタイル画像テクスチャを適用します。1>テクスチャとデカール1> を参照してください。
  • A SurfaceGui は、部品の顔に GuiObjects をレンダリングします。In-Experience UI Containers を参照してください。
  • Class.Attach|Attachments は、BasePart に追加されて、CFrames をパーツに関連付けるようにします。これらは、0>Mechanical Constraints0> および Attachments3> で説明さ
  • ParticleEmitter オブジェクトは、親になっている BasePart のボリュームでパーティクルを一貫して放出します。パーティクルエミッター を参照してください。
  • ライトオブジェクトのように PointLight は、BasePart の中心から光を発しています。Light Sources で示されているように。
  • Class.Tool に親を付け、 ハンドル という名前を与えると、BasePart はキャラクターで持つことができます。1>インエクスペリエンスツール1> を参照してください。

概要

プロパティ

  • 並列読み取り

    物理的に移動不可能なパーツを決定します。

  • 複製されていません
    並列読み取り

    パーツの組み立ての角度速度。

  • 読み取り専用
    複製されていません
    並列読み取り

    世界スペースのパーツアセンブリの中心。

  • 複製されていません
    並列読み取り

    部品の組み立ての直線速度。

  • 読み取り専用
    複製されていません
    並列読み取り

    パーツのアセンブリの合計質量。

  • 読み取り専用
    複製されていません
    並列読み取り

    アセンブリのルート部分に関する参照。

  • 並列読み取り

    パーツの背面の表面タイプを決定します (+Z 方向)。

  • 部品の下面の表面のタイプを決定します (-Y 方向)。

  • 複製されていません
    並列読み取り

    パーツの色を決める。

  • 並列読み取り

    世界中の BasePart の位置と向きを決める。

  • 並列読み取り

    パーツが他のパーツと衝突するかどうかを決定します。

  • 並列読み取り

    空間クエリ操作中にパーツが検討されるかどうかを決定します。

  • 並列読み取り

    パーツで TouchedTouchEnded イベントが発動するかどうかを決定します。

  • 並列読み取り

    パーツがシャドウをキャストするかどうかを決定します。

  • 読み取り専用
    複製されていません
    並列読み取り

    パーツの中心マスが位置する世界の位置を説明します。

  • 複製されていません
    並列読み取り

    部品の衝突グループの名前を説明します。

  • 複製されていません
    並列読み取り

    パーツの色を決める。

  • 読み取り専用
    複製されていません
    並列読み取り

    パーツの現在の物理プロパティを示します。

  • パーツの複数の物理プロパティを決定します。

  • 並列読み取り

    パーツやアセンブリで空気力を有効にまたは無効にする。

  • 読み取り専用
    複製されていません
    並列読み取り

    Class.BasePart の物理的エクセンツの BasePart

  • 読み取り専用
    複製されていません
    並列読み取り

    Class.BasePart の実際の物理サイズは、物理エンジンによって見られる。

  • 並列読み取り

    パーツのフロント面のタイプ(-Z 方向)を決定します。

  • 並列読み取り

    パーツの左側の表面のタイプを決定します (-X 方向)。

  • 非表示
    複製されていません
    並列読み取り

    ローカルクライアントに表示されるのは、BasePart.Transparency のマルチプライヤーを決定します。

  • 並列読み取り

    スタジオでパーツを選択できるかどうかを決定します。

  • 読み取り専用
    複製されていません
    並列読み取り

    部品の質量、密度、ボリュームの製品を説明します。

  • 並列読み取り

    パーツが硬ボディの総質量または惰性に貢献しているかどうかを決定します。

  • 並列読み取り

    パーツのテクスチャとデフォルトの物理プロパティを決定します。

  • 複製されていません
    並列読み取り

    Class.Material の名前。

  • 非表示
    複製されていません
    並列読み取り

    世界のパーツの回転を説明します。

  • 並列読み取り

    パーツのピボットのオフセットを CFrame から指定します。

  • 非表示
    複製されていません
    並列読み取り

    部品の世界の位置を説明します。

  • 非表示
    読み取り専用
    複製されていません
    並列読み取り

    最後に記アップデートされた物理の更新からの時間。

  • 並列読み取り

    パーツがスカイボックスを反射する量を決めます。

  • 読み取り専用
    複製されていません
    並列読み取り

    サイズ変更メソッドによって許可される最小の変更を説明します。

  • 読み取り専用
    複製されていません
    並列読み取り

    パーツのサイズ変更が可能な顔を説明します。

  • 並列読み取り

    パーツの右側面の表面の種類を決定します (+X 方向)。

  • 並列読み取り

    アセンブリのルート部分を決定するための主要ルール。

  • 複製されていません
    並列読み取り

    3軸のパーツの回転

  • 複製されていません
    並列読み取り

    パーツのサイズ (長さ、幅、高さ) を決定します。

  • 並列読み取り

    パーツのトップフェイスの表面の種類を決定します (+Y 方向)。

  • 並列読み取り

    パーツの不透明度の逆にあるパーツの見える量を決めます。

PVInstance から継承した プロパティ
  • 複製されていません
    スクリプト作成できません
    並列読み取り
  • 複製されていません
    スクリプト作成できません
    並列読み取り

方法

PVInstance から継承した 方法
  • 並列書き込み

    Class.PVInstance のピボットを取得します。

  • PivotTo(targetCFrame : CFrame):void

    Class.PVInstance とそのすべての子孫 PVInstances は、ピボットが指定の CFrame に移動します。

イベント

プロパティ

Anchored

並列読み取り

固定 プロパティは、パーツが物理的に移動不可能であるかどうかを決定します。有効にすると、パーツは重力、他のパーツの衝突、他のパーツの重複、またはその他の物理関連の原因により、位置が変更されることはありません。結果として、BasePart.Touched

アンカー部品は、CFrame または Position を変更することで、まだ非零 Class.BasePart.AssemblyLinearVelocity|AssemblyLinearVelocity および1> Class.BasePart.AssemblyAngularVelocity1> を持つ可能性があります。

最後に、Weld のようなオブジェクトを介して、アンカーされていないパーツがアンカーされたパーツに接続されると、それもアンカーされます。如果その接続が切断されると、パーツは物理によって再び影響を受ける可能性があります。アセンブル については、参照してください。

ネットワークの所有者は、錠付けられたパーツに設定できません。パーツの錠付けられた状態がサーバーで変更されると、そのパーツのネットワーク所有権が影響を受けます。

コードサンプル

Part Anchored Toggle

local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)

AssemblyAngularVelocity

複製されていません
並列読み取り

この部品の組み立ての角度ベクトル。これは、1秒あたりのオリエント方向の変更の速度です。

アングラー速度は、アセンブリのすべてのポイントで同じです。

直接速度を設定すると、現実的でない動作が発生する可能性があります。 Torque または AngularVelocity 制限を使用するか、BasePart:ApplyAngularImpulse() を使用すると、速度の変更を即座に行うことができます。

パーツがサーバーによって所有されている場合、このプロパティは、 Class.Script サーバー (not from a Class

AssemblyCenterOfMass

読み取り専用
複製されていません
並列読み取り

アセンブリ内のすべてのパーツの massposition を計算して、Class.BasePart.TrayTable のトレイに配置します。

アセンダーパーツがある場合、そのパーツの中心はアセンダーパーツの中心であり、アセンダーパーツは無限のマスを持つことになります。

中央の安定性を知ることは、アセンブリの安定性を維持する助けになります。中央に適用される力は、角度の加速を引き起こすことはありませんが、単に直線です。中央の安定性の低いアセンブリは、重力の効果で立ち上がるのが難しくなります。

AssemblyLinearVelocity

複製されていません
並列読み取り

このパーツの組み立ての直線速度ベクトル。スタッド per second でアセンブリの center of mass の位置の変更率。

アセンブリの中心以外の場所の速度を知りたい場合は、BasePart:GetVelocityAtPosition() を使用します。

直接速度を設定すると、現実的でない動作に結果します。VectorForce 制限を使用するか、BasePart:ApplyImpulse() を使用すると、速度の即座の変更が可能です。

パーツがサーバーによって所有されている場合、このプロパティは、 Class.Script サーバー (not from a Class

AssemblyMass

読み取り専用
複製されていません
並列読み取り

このパーツのアセンブルです。parts のすべての Massless のマスを合計すると、アセンブルマスに貢献しません。Class.BasePart.Massless であり、アセンブルのルートパーツではありません。

アセンダー部分がある場合、アセンダーの大きさは無限と見なされます。アンカーされていないアセンダーと大きな差があるアセンダーの間のコントリンクトと他の物理的なインタラクションは、不安定性を引き起こす可能性があります。

AssemblyRootPart

読み取り専用
複製されていません
並列読み取り

このプロパティは、BasePart がアセンブリのルートパーツを代表するように自動的に選択されていることを示します。これは、開発者が GetRootPart() を呼び出すときに返される同じパーツです。

Class.BasePart.RootPriority|RootPriority を変更することで、Class.BasePart.RootPriority|RootPriority のパーツのインストーリーを変更できます。

すべてのアセンブリールートパーツを共有するパーツは、同じアセンブリーにあります。

ルートパーツに関する詳細は、アセンブリ を参照してください。

BackSurface

並列読み取り

BackSurface プロパティは、パーツの +Z 方向のために使用される表面の種類を決定します。2つのパーツの顔が互いに隣接すると、接続が作成されます。Motor に設定されると、BasePart.BackSurfaceInput は、モーターの接続がどのように動作するかを決定します。

ほとんどの表面タイプは、BasePart.Material がプラスチックに設定されている場合、パーツの顔面にテクスチャをレンダリングします。一部の表面タイプ - ヒンジ、モーター、ステッピングモーター - は、代わりに 3D 装飾をレンダリングします。このプロパティ

コードサンプル

Show All SurfaceTypes

local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end

BottomSurface

並列読み取り

底面積プロパティは、パーツの-Y方向のために使用される表面の種類を決定します。2つのパーツの顔が互いに隣接すると、接続を作成できます。モーターに設定されている場合、BasePart.BottomSurfaceInput は、モーターの接続がどのように動作するかを決定します。

ほとんどの表面タイプは、BasePart.Material がプラスチックに設定されている場合、パーツの顔面にテクスチャをレンダリングします。一部の表面タイプ - ヒンジ、モーター、ステッピングモーター - は、代わりに 3D 装飾をレンダリングします。このプロパティ

コードサンプル

Show All SurfaceTypes

local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end

BrickColor

複製されていません
並列読み取り

BrickColor プロパティは、パーツの色を決定します。パーツに BasePart.Material がある場合、これは素材のテクスチャをレンダリングするときに使用される色を決定します。For more control over the color, the BasePart.Color プロパティ can be used (it is a Color3 variant of this property). If Color set, this property will use the closest

パーツの他のビジュアルプロパティは BasePart.TransparencyBasePart.Reflectance によって決定されています。

コードサンプル

Part Anchored Toggle

local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)

CFrame

並列読み取り

CFrame プロパティは、世界の Class.BasePart の位置と方向を決定します。彼らはジオメトリの任意の参照場所を指しますが、 BasePart は、実際の ExtentsCFrame の中心の位置を表します。

パーツに CFrame を設定すると、他のパーツもパーツに相対して移動しますが、モデル全体を移動するためには PVInstance:PivotTo() を使用することをお勧めします。たとえば、プレイヤーのキャラクターをテレポートする場合などです。

Class.BasePart.Position を設定すると、BasePart.CFrame は常に正確に指定された CFrame にパーツを移動します。つまり、1>並行チェックは行われない1> 、そして物理解析ソルバーは、パーツが <

位置相対を追跡するために、CFrame を使用すると、Attachment の位置に対するClass.附ment が便利になります。

コードサンプル

Setting Part CFrame

local part = script.Parent:WaitForChild("Part")
local otherPart = script.Parent:WaitForChild("OtherPart")
-- Reset the part's CFrame to (0, 0, 0) with no rotation.
-- This is sometimes called the "identity" CFrame
part.CFrame = CFrame.new()
-- Set to a specific position (X, Y, Z)
part.CFrame = CFrame.new(0, 25, 10)
-- Same as above, but use a Vector3 instead
local point = Vector3.new(0, 25, 10)
part.CFrame = CFrame.new(point)
-- Set the part's CFrame to be at one point, looking at another
local lookAtPoint = Vector3.new(0, 20, 15)
part.CFrame = CFrame.lookAt(point, lookAtPoint)
-- Rotate the part's CFrame by pi/2 radians on local X axis
part.CFrame = part.CFrame * CFrame.Angles(math.pi / 2, 0, 0)
-- Rotate the part's CFrame by 45 degrees on local Y axis
part.CFrame = part.CFrame * CFrame.Angles(0, math.rad(45), 0)
-- Rotate the part's CFrame by 180 degrees on global Z axis (note the order!)
part.CFrame = CFrame.Angles(0, 0, math.pi) * part.CFrame -- Pi radians is equal to 180 degrees
-- Composing two CFrames is done using * (the multiplication operator)
part.CFrame = CFrame.new(2, 3, 4) * CFrame.new(4, 5, 6) --> equal to CFrame.new(6, 8, 10)
-- Unlike algebraic multiplication, CFrame composition is NOT communitative: a * b is not necessarily b * a!
-- Imagine * as an ORDERED series of actions. For example, the following lines produce different CFrames:
-- 1) Slide the part 5 units on X.
-- 2) Rotate the part 45 degrees around its Y axis.
part.CFrame = CFrame.new(5, 0, 0) * CFrame.Angles(0, math.rad(45), 0)
-- 1) Rotate the part 45 degrees around its Y axis.
-- 2) Slide the part 5 units on X.
part.CFrame = CFrame.Angles(0, math.rad(45), 0) * CFrame.new(5, 0, 0)
-- There is no "CFrame division", but instead simply "doing the inverse operation".
part.CFrame = CFrame.new(4, 5, 6) * CFrame.new(4, 5, 6):Inverse() --> is equal to CFrame.new(0, 0, 0)
part.CFrame = CFrame.Angles(0, 0, math.pi) * CFrame.Angles(0, 0, math.pi):Inverse() --> equal to CFrame.Angles(0, 0, 0)
-- Position a part relative to another (in this case, put our part on top of otherPart)
part.CFrame = otherPart.CFrame * CFrame.new(0, part.Size.Y / 2 + otherPart.Size.Y / 2, 0)

CanCollide

並列読み取り

CanCollide は、パーツが他のパーツと物理的に交流するかどうかを決定します。無効にすると、他のパーツはブリックの影響を受けなくなります。「 装飾 」用のパーツは通常、Physics エンジンによって考慮されないため、CanCollide が無効になっています。

パーツが BasePart.Anchored でない、および CanCollide を無効にしている場合、世界の終わりに Workspace.FallenPartsDestroyHeight によって最終的に破壊される可能性があります。

当該を無効にすると、パーツはまだ BasePart.Touched イベント (およびその他のパーツも) を発動させる可能性があります。これを無効にするには BasePart.CanTouch です。

衝突に関する詳細は、「衝突」を参照してください。

コードサンプル

Fade Door

-- Paste into a Script inside a tall part
local part = script.Parent
local OPEN_TIME = 1
-- Can the door be opened at the moment?
local debounce = false
local function open()
part.CanCollide = false
part.Transparency = 0.7
part.BrickColor = BrickColor.new("Black")
end
local function close()
part.CanCollide = true
part.Transparency = 0
part.BrickColor = BrickColor.new("Bright blue")
end
local function onTouch(otherPart)
-- If the door was already open, do nothing
if debounce then
print("D")
return
end
-- Check if touched by a Humanoid
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if not human then
print("not human")
return
end
-- Perform the door opening sequence
debounce = true
open()
task.wait(OPEN_TIME)
close()
debounce = false
end
part.Touched:Connect(onTouch)
close()

CanQuery

並列読み取り

CanQuery は、GetPartBoundsInBox または Raycast などの空間クエリーオペレーション中にパーツが検討されるかどうかを決定します。これらの関数は、CanCollide

このプロパティの以上、<a href="/reference/engine/datatype.overlapparams.md">データ型オーバーラップパラメーター</a> または <a href="/reference/engine/datatype.raycastparams.md">データ型レイキャストパラメーター</a> オブジェクトを使用して、空間クエリー関数を呼び出す際に、OverlapParams または RaycastParams オブジェクトを除外することもできます

CanTouch

並列読み取り

このプロパティは、Class.BasePart.Touched|Touched</

この衝突ロジックは、衝突グループ を通じて Workspace.TouchesUseCollisionGroups プロパティに設定できます。true では、非接触グループのパーツは、2>と2> のタッチイベントを両方無視します。このプロパティは無効になります。

パフォーマンス

Class.BasePart.CanTouch|CanTouch と CanCollide が設定されているパーツは、false および 1>Datatype.OverlapParams1> のクエリーに

CastShadow

並列読み取り

パーツがシャドウをキャストするかどうかを決定します。

この機能は、パフォーマンスの向上のためではありません。シャドウを隠す必要があるパーツでは、 機能を無効にする ことができます。このプロパティを特定のパーツで無効にすると、シャドウによるビジュアルアーティファクトが castされる可能性があります。このプロパティを無効にするために、このパーツのディスアバリティを無効にする

CenterOfMass

読み取り専用
複製されていません
並列読み取り

マスセンターオブマスのプロパティは、ローカル 位置のパーツの中心のマスのセンターを記述します。AssemblyCenterOfMass では、これは世界スペースからローカルに変換された AssemblyCenterOf

CollisionGroup

複製されていません
並列読み取り

Class.BasePart.CollisionGroup|CollisionGroup プロパティは、パーツの衝突グループの名前を説明します (最大 100 文字)。パーツはデフォルトのグループの名前が "Default" で始まります。この値は空であることができません。

このプロパティ自体は非レプリケートですが、エンジンは内部的に他のプライベートプロパティを通じて値をレプリケートして、バックコンバージョンの問題を解決します。

コードサンプル

PhysicsService:RegisterCollisionGroup

local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false

Color

複製されていません
並列読み取り

色プロパティは、パーツの色を決定します。如果パーツに BasePart.Material がある場合、これは、素材のテクスチャをレンダリングするときに使用される色と同じ色を決定します。このプロパティを設定すると、 BasePart.BrickColor は、色3の値に最も近い色を使用します。

パーツの他のビジュアルプロパティは BasePart.TransparencyBasePart.Reflectance によって決定されています。

コードサンプル

Character Health Body Color

-- Paste into a Script within StarterCharacterScripts
-- Then play the game, and fiddle with your character's health
local char = script.Parent
local human = char.Humanoid
local colorHealthy = Color3.new(0.4, 1, 0.2)
local colorUnhealthy = Color3.new(1, 0.4, 0.2)
local function setColor(color)
for _, child in pairs(char:GetChildren()) do
if child:IsA("BasePart") then
child.Color = color
while child:FindFirstChildOfClass("Decal") do
child:FindFirstChildOfClass("Decal"):Destroy()
end
elseif child:IsA("Accessory") then
child.Handle.Color = color
local mesh = child.Handle:FindFirstChildOfClass("SpecialMesh")
if mesh then
mesh.TextureId = ""
end
elseif child:IsA("Shirt") or child:IsA("Pants") then
child:Destroy()
end
end
end
local function update()
local percentage = human.Health / human.MaxHealth
-- Create a color by tweening based on the percentage of your health
-- The color goes from colorHealthy (100%) ----- > colorUnhealthy (0%)
local color = Color3.new(
colorHealthy.R * percentage + colorUnhealthy.r * (1 - percentage),
colorHealthy.G * percentage + colorUnhealthy.g * (1 - percentage),
colorHealthy.B * percentage + colorUnhealthy.b * (1 - percentage)
)
setColor(color)
end
update()
human.HealthChanged:Connect(update)

CurrentPhysicalProperties

読み取り専用
複製されていません
並列読み取り

現在の物理プロパティは、パーツの現在の物理プロパティを示します。パーツごとにカスタム値を設定できます。物理プロパティのパーツごとに、 カスタムマテリアル 、およびマテリアルオーバーライド 。エンジンは、パーツの効果的な物理プロパティを決定するときに、最高優先度の値を優先します。次のリストの値は、最高優先

  • パーツのカスタム物理プロパティ
  • パーツのカスタムマテリアルのカスタム物理プロパティ
  • 部品の物理プロパティは、部品の材料の物理プロパティを上書きします
  • 部品の材料のデフォルトの物理プロパティ

CustomPhysicalProperties

並列読み取り

カスタムフィジカルプロパティは、Part のさまざまな物理的要素をカスタマイズできます、例えば、その密度、摩擦、および弾性。

有効にすると、このプロパティを通じてこれらの物理プロパティを構成できます。無効にすると、これらの物理プロパティは BasePart.Material のパーツによって決定されます。Enum.Material のページには、さまざまなパーツ素材のリストが含まれています。

コードサンプル

Set CustomPhysicalProperties

local part = script.Parent
-- This will make the part light and bouncy!
local DENSITY = 0.3
local FRICTION = 0.1
local ELASTICITY = 1
local FRICTION_WEIGHT = 1
local ELASTICITY_WEIGHT = 1
local physProperties = PhysicalProperties.new(DENSITY, FRICTION, ELASTICITY, FRICTION_WEIGHT, ELASTICITY_WEIGHT)
part.CustomPhysicalProperties = physProperties

EnableFluidForces

並列読み取り

Class.Workspace.FluidForces が有効になっているとき、および BasePart がこの Class.Workspace.FluidForces に含まれると、物理エンジンはこの 1> Class.BasePart1> で空気力学的な力を計算します。

ExtentsCFrame

読み取り専用
複製されていません
並列読み取り

Class.BasePart の物理的なエクセットの BasePart 、その物理的な中心を表示しています。

ExtentsSize

読み取り専用
複製されていません
並列読み取り

Class.BasePart の実際の物理サイズは、例えば 衝突検知 で見られるように、物理エンジンによって見られるサイズです。

FrontSurface

並列読み取り

フロントサーフェスプロパティは、パーツの-Z方向のために使用される表面の種類を決定します。2つのパーツの顔が互いに隣接すると、ジョイントが作成される可能性があります。Motor に設定されている場合、BasePart.FrontSurfaceInput は、モーターのジョイントがどのように動作するかを決定します。

ほとんどの表面タイプは、BasePart.Material がプラスチックに設定されている場合、パーツの顔面にテクスチャをレンダリングします。一部の表面タイプ、例えば、SurfaceSelection は、ゲームワールドのプラスチックの装飾を示します。このプロパティを Property

コードサンプル

Show All SurfaceTypes

local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end

LeftSurface

並列読み取り

LeftSurface プロパティは、パーツの -X 方向のために使用される表面の種類を決定します。2つのパーツの顔が互いに隣接すると、接続が作成されます。Motor に設定されると、BasePart.LeftSurfaceInput は、モーターの接続がどのように動作するかを決定します。

ほとんどの表面タイプは、BasePart.Material がプラスチックに設定されている場合、パーツの顔面にテクスチャをレンダリングします。一部の表面タイプ、例えば、SurfaceSelection は、ゲームワールドのプラスチックの装飾を示します。このプロパティを Property

コードサンプル

Show All SurfaceTypes

local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end

LocalTransparencyModifier

非表示
複製されていません
並列読み取り

Class.BasePart.LocalTransparency プロパティは、BasePart.Transparency の乗数で、ローカルクライアントにのみ表示されます。クライアントからサーバーにレプリケートされず、ローカルクライアントにのみ表示されるため、特定のクライアントにレンダリングしない必

このプロパティは、次のフォーミュラを通じてローカル部分の透明度を変更します。結果は 0 から 1 の間にクランプされます。


clientTransparency = 1 - ((1 - part.Transparency) * (1 - part.LocalTransparencyModifier))

<tbody>
<tr>
<td>0.5</td>
<td>0</td>
<td>0.5</td>
<td>0.5</td>
</tr>
<tr>
<td>0.5</td>
<td>0.25</td>
<td>0.5</td>
<td>0.625</td>
</tr>
<tr>
<td>0.5</td>
<td>0.5</td>
<td>0.5</td>
<td>0.75</td>
</tr>
<tr>
<td>0.5</td>
<td>0.75</td>
<td>0.5</td>
<td>0.875</td>
</tr>
<tr>
<td>0.5</td>
<td>1</td>
<td>0.5</td>
<td>1</td>
</tr>
</tbody>
透明度ローカルの透明度変更器サーバー側の透明度クライアント側の透明度

Locked

並列読み取り

ロックされたプロパティは、part (または model 内に含まれている) を Roblox Studio でクリックすると、Class.BasePart|part (または 2>Class.Model|model2> 内に含まれている) が選択されるかどうかを判

コードサンプル

Recursive Unlock

-- Paste into a Script within a Model you want to unlock
local model = script.Parent
-- This function recurses through a model's heirarchy and unlocks
-- every part that it encounters.
local function recursiveUnlock(object)
if object:IsA("BasePart") then
object.Locked = false
end
-- Call the same function on the children of the object
-- The recursive process stops if an object has no children
for _, child in pairs(object:GetChildren()) do
recursiveUnlock(child)
end
end
recursiveUnlock(model)

Mass

読み取り専用
複製されていません
並列読み取り

マス は、部品のボリュームと密度の製品を説明する読み取り専用プロパティです。GetMass 関数によって返されます。

  • パーツのボリュームは、SizeShape のサイズ、および WedgePart の形状、例えば 2>Class.WedgePart2> など、使用されているベースパーツの種類によって変わります。
  • パーツの密度は、指定されている場合は Material または CustomPhysicalProperties によって決定されます。

Massless

並列読み取り

このプロパティが有効になっている場合、BasePart は、Class.BasePart|BasePart に接続されている他の部品のマスまたは惰性に貢献しなくなります。

パーツが AssemblyRootPart の根である場合、このパーツはそのパーツのために無視され、まだマスと惰性をアセンブリに貢献します。マスがないパーツは、アセンブリのルートパーツである必要がありません。

これは、車両のハンドリングに影響を与えたくないオプションのアクセサリーなどに便利かもしれません。また、単純なコリジョンメッシュに接続された無重量レンダリングメッシュも便利かもしれません。

また、アセンブル 、ルートパーツの種類と使用方法を記述した記事を参照してください。

並列読み取り

素材プロパティは、ビルダーがパーツのテクスチャとデフォルトの物理プロパティを設定することができます (素材が未設定の場合は BasePart.CustomPhysicalProperties があります)。デフォルトのプラスチック素材は、非常に軽いテクスチャを持ち、スムースプラスチック素材にはテ

このプロパティを設定すると、 BasePart.CustomPhysicalProperties を有効にすると、素材のデフォルトの物理プロパティを使用します。たとえば、DiamondPlate は非常に密度の高い素材ですが、Wood は非常に軽い素材です。パーツの密度は地形水に浮くかどうかを決定します。

ガラス素材は、中程度のグラフィック設定でレンダリング動作を変更します。ガラスの反射 (BasePart.Reflectance に似ている) と視野歪みを適用します。この効果は、球形のパーツ (BasePart.Shape にボールを設置する) に特に顕著です。半透明オブジェクトと

コードサンプル

Part Anchored Toggle

local part = script.Parent
-- Create a ClickDetector so we can tell when the part is clicked
local cd = Instance.new("ClickDetector", part)
-- This function updates how the part looks based on its Anchored state
local function updateVisuals()
if part.Anchored then
-- When the part is anchored...
part.BrickColor = BrickColor.new("Bright red")
part.Material = Enum.Material.DiamondPlate
else
-- When the part is unanchored...
part.BrickColor = BrickColor.new("Bright yellow")
part.Material = Enum.Material.Wood
end
end
local function onToggle()
-- Toggle the anchored property
part.Anchored = not part.Anchored
-- Update visual state of the brick
updateVisuals()
end
-- Update, then start listening for clicks
updateVisuals()
cd.MouseClick:Connect(onToggle)

MaterialVariant

複製されていません
並列読み取り

システムは、指定された MaterialVariant 名とタイプの BasePart.Material インスタンスを検索します。如果、マッチする Materialrant インスタンスが見つかりました、システムはこの Materialrant インスタンスを使用してデフォルトのマテリアルを置き換えます。デフォルトのマテリアルは、MaterialService

Orientation

非表示
複製されていません
並列読み取り

オリエントエイションプロパティは、ベクトル3を使用して X、Y、Z 軸の回転量を度数で表現します。回�

このプロパティを設定すると、Welds または Motor6Ds に接続されたすべての部品に、一致する C0 または 2>Class.JointInstance.C1|C12>

WeldSeconds は、移動中に一時的に無効になり、再度有効になります。

コードサンプル

Part Spinner

local part = script.Parent
local INCREMENT = 360 / 20
-- Rotate the part continually
while true do
for degrees = 0, 360, INCREMENT do
-- Set only the Y axis rotation
part.Rotation = Vector3.new(0, degrees, 0)
-- A better way to do this would be setting CFrame
--part.CFrame = CFrame.new(part.Position) * CFrame.Angles(0, math.rad(degrees), 0)
task.wait()
end
end

PivotOffset

並列読み取り

このプロパティは、CFrame のパーツのピボットのオフセットを指定します。part:GetPivot() は、part.CFrame * part.PivotOffset と同じです。

これは、ピボットを ローカル スペースに設定するのに便利ですが、パーツのピボットを 世界 スペースに設定することは次のようにできます:


local part = workspace.BluePart
local desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)
part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)

コードサンプル

Reset Pivot

local function resetPivot(model)
local boundsCFrame = model:GetBoundingBox()
if model.PrimaryPart then
model.PrimaryPart.PivotOffset = model.PrimaryPart.CFrame:ToObjectSpace(boundsCFrame)
else
model.WorldPivot = boundsCFrame
end
end
resetPivot(script.Parent)
Clock Hands

local function createHand(length, width, yOffset)
local part = Instance.new("Part")
part.Size = Vector3.new(width, 0.1, length)
part.Material = Enum.Material.Neon
part.PivotOffset = CFrame.new(0, -(yOffset + 0.1), length / 2)
part.Anchored = true
part.Parent = workspace
return part
end
local function positionHand(hand, fraction)
hand:PivotTo(CFrame.fromEulerAnglesXYZ(0, -fraction * 2 * math.pi, 0))
end
-- Create dial
for i = 0, 11 do
local dialPart = Instance.new("Part")
dialPart.Size = Vector3.new(0.2, 0.2, 1)
dialPart.TopSurface = Enum.SurfaceType.Smooth
if i == 0 then
dialPart.Size = Vector3.new(0.2, 0.2, 2)
dialPart.Color = Color3.new(1, 0, 0)
end
dialPart.PivotOffset = CFrame.new(0, -0.1, 10.5)
dialPart.Anchored = true
dialPart:PivotTo(CFrame.fromEulerAnglesXYZ(0, (i / 12) * 2 * math.pi, 0))
dialPart.Parent = workspace
end
-- Create hands
local hourHand = createHand(7, 1, 0)
local minuteHand = createHand(10, 0.6, 0.1)
local secondHand = createHand(11, 0.2, 0.2)
-- Run clock
while true do
local components = os.date("*t")
positionHand(hourHand, (components.hour + components.min / 60) / 12)
positionHand(minuteHand, (components.min + components.sec / 60) / 60)
positionHand(secondHand, components.sec / 60)
task.wait()
end

Position

非表示
複製されていません
並列読み取り

位置プロパティは、part を使用している Datatype.Vector3 を使用して、Vector3 の位置を記述します。しかし、位置を設定することもできます。

このプロパティを設定すると、Welds または Motor6Ds に接続されたすべての部品に、一致する C0 または 2>Class.JointInstance.C1|C12>

WeldSeconds は、移動中に一時的に無効になり、再度有効になります。

ReceiveAge

非表示
読み取り専用
複製されていません
並列読み取り

これは、部品の物理がローカルクライアント (またはサーバー) で最後に更新されたときに戻ります。物理がない場合は、0を返します (固定)

Reflectance

並列読み取り

反射率プロパティは、part がスカイボックスを反射する量を決めます。0 の値は、部品が反射しないことをすべてし、1 の値は、部品が完全に反射することを示します。

反射率は、BasePart.Transparency がパーツが完全に透明でない場合を除きますべて。反射率は、パーツの BasePart.Material が完全に透明でない場合にはレンダリングされません。

コードサンプル

Touch Blink

local part = script.Parent
local pointLight = Instance.new("PointLight")
pointLight.Brightness = 0
pointLight.Range = 12
pointLight.Parent = part
local touchNo = 0
local function blink()
-- Advance touchNo to tell other blink() calls to stop early
touchNo = touchNo + 1
-- Save touchNo locally so we can tell when it changes globally
local myTouchNo = touchNo
for i = 1, 0, -0.1 do
-- Stop early if another blink started
if touchNo ~= myTouchNo then
break
end
-- Update the blink animation
part.Reflectance = i
pointLight.Brightness = i * 2
task.wait(0.05)
end
end
part.Touched:Connect(blink)

ResizeIncrement

読み取り専用
複製されていません
並列読み取り

サイズ変更量Increment プロパティは、BasePart:Resize() メソッドによって許可された最小サイズ変更量を記述する読み取り専用プロパティです。BasePart 抽象クラスのインスタンスには、Class.

コードサンプル

Resize Handles

-- Put this Script in several kinds of BasePart, like
-- Part, TrussPart, WedgePart, CornerWedgePart, etc.
local part = script.Parent
-- Create a handles object for this part
local handles = Instance.new("Handles")
handles.Adornee = part
handles.Parent = part
-- Manually specify the faces applicable for this handle
handles.Faces = Faces.new(Enum.NormalId.Top, Enum.NormalId.Front, Enum.NormalId.Left)
-- Alternatively, use the faces on which the part can be resized.
-- If part is a TrussPart with only two Size dimensions
-- of length 2, then ResizeableFaces will only have two
-- enabled faces. For other parts, all faces will be enabled.
handles.Faces = part.ResizeableFaces

ResizeableFaces

読み取り専用
複製されていません
並列読み取り

サイズ変更可能な顔のプロパティ (with an e ではなく ResizableFaces) は、パーツのサイズ変更に使用する

コードサンプル

Resize Handles

-- Put this Script in several kinds of BasePart, like
-- Part, TrussPart, WedgePart, CornerWedgePart, etc.
local part = script.Parent
-- Create a handles object for this part
local handles = Instance.new("Handles")
handles.Adornee = part
handles.Parent = part
-- Manually specify the faces applicable for this handle
handles.Faces = Faces.new(Enum.NormalId.Top, Enum.NormalId.Front, Enum.NormalId.Left)
-- Alternatively, use the faces on which the part can be resized.
-- If part is a TrussPart with only two Size dimensions
-- of length 2, then ResizeableFaces will only have two
-- enabled faces. For other parts, all faces will be enabled.
handles.Faces = part.ResizeableFaces

RightSurface

並列読み取り

RightSurface プロパティは、パーツの +X 方向のために使用される表面の種類を決定します。2つのパーツの顔が互いに隣接すると、接続が作成されます。Motor に設定されている場合、BasePart.RightSurfaceInput は、モーターの接続がどのように動作するかを決定します。

ほとんどの表面タイプは、BasePart.Material がプラスチックに設定されている場合、パーツの顔面にテクスチャをレンダリングします。一部の表面タイプ、例えば、SurfaceSelection 、Hinge、および 1>Motor1> は、3D 装飾を代わりに

コードサンプル

Show All SurfaceTypes

local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end

RootPriority

並列読み取り

このプロパティは、 から 8> のすべてのルールに優先して、9> ルートパーツのソート9> に関しては、0> ルートパーツのマップ0> を参照してください。1> ルートパーツのマッ

このプロパティを使用して、アセンブリのどの部分がルート部分であるかを制御し、サイズが変更されると、ルート部分を安定させることができます。

また、アセンブル 、ルートパーツの種類と使用方法を記述した記事を参照してください。

Rotation

複製されていません
並列読み取り

3軸のパーツの回転

このプロパティを設定すると、Welds または Motor6Ds に接続されたすべての部品に、一致する C0 または 2>Class.JointInstance.C1|C12>

WeldSeconds は、移動中に一時的に無効になり、再度有効になります。

複製されていません
並列読み取り

部品の Size プロパティは、視覚の次元を決定し、ExtentsSize は、物理エンジンの実際のサイズ

パーツのサイズは、BasePart:GetMass() によって与えられる質量を決定します。パーツの Size は、さまざまなオブジェクトによって使用されます:

  • ParticleEmitter パーティクルがスポーンするエリアを決定します。
  • BlockMesh を使用して、レンダリングされた正方形のプリズムを一部決めます。
  • SpecialMesh は、特定の MeshTypes のメッシュのサイズを決定するために使用されます。
  • SurfaceLight を使用して、イルミネーションするスペースを決定します。

コードサンプル

Pyramid Builder

local TOWER_BASE_SIZE = 30
local position = Vector3.new(50, 50, 50)
local hue = math.random()
local color0 = Color3.fromHSV(hue, 1, 1)
local color1 = Color3.fromHSV((hue + 0.35) % 1, 1, 1)
local model = Instance.new("Model")
model.Name = "Tower"
for i = TOWER_BASE_SIZE, 1, -2 do
local part = Instance.new("Part")
part.Size = Vector3.new(i, 2, i)
part.Position = position
part.Anchored = true
part.Parent = model
-- Tween from color0 and color1
local perc = i / TOWER_BASE_SIZE
part.Color = Color3.new(
color0.R * perc + color1.R * (1 - perc),
color0.G * perc + color1.G * (1 - perc),
color0.B * perc + color1.B * (1 - perc)
)
position = position + Vector3.new(0, part.Size.Y, 0)
end
model.Parent = workspace
並列読み取り

トップ表面プロパティは、パーツの +Y 方向のために使用される表面の種類を決定します。2つのパーツの顔が互いに隣接すると、接続が作成される可能性があります。モーターに設定されている場合、BasePart.TopSurfaceInput は、モーターの接続がどのように動作するかを決定します。

ほとんどの表面タイプは、BasePart.Material がプラスチックに設定されている場合、パーツの顔面にテクスチャをレンダリングします。一部の表面タイプ - ヒンジ、モーター、ステッピングモーター - は、代わりに 3D 装飾をレンダリングします。このプロパティ

コードサンプル

Show All SurfaceTypes

local demoPart = script.Parent
-- Create a billboard gui to display what the current surface type is
local billboard = Instance.new("BillboardGui")
billboard.AlwaysOnTop = true
billboard.Size = UDim2.new(0, 200, 0, 50)
billboard.Adornee = demoPart
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0, 200, 0, 50)
textLabel.BackgroundTransparency = 1
textLabel.TextStrokeTransparency = 0
textLabel.TextColor3 = Color3.new(1, 1, 1) -- White
textLabel.Parent = billboard
billboard.Parent = demoPart
local function setAllSurfaces(part, surfaceType)
part.TopSurface = surfaceType
part.BottomSurface = surfaceType
part.LeftSurface = surfaceType
part.RightSurface = surfaceType
part.FrontSurface = surfaceType
part.BackSurface = surfaceType
end
while true do
-- Iterate through the different SurfaceTypes
for _, enum in pairs(Enum.SurfaceType:GetEnumItems()) do
textLabel.Text = enum.Name
setAllSurfaces(demoPart, enum)
task.wait(1)
end
end

Transparency

並列読み取り

透明度 プロパティは、0から1のスケールで部品の透明度を制御し、0は完全に見える (オペーク) 、1は完全に見えない (レンダリングされなすべて) 値を制御します。

BasePart.Reflectance は、1以下の値に設定されている場合、レンガの全体的な透明度を減少させることができます。

完全に透明なパーツはレンダリングされませんが、部分的に透明なオブジェクトはレンダリングコストがかかります。多くの透明なパーツを持つと、ゲームのパフォーマンスが低下する可能性があります。

透明なパーツが重複すると、レンダリングオーダーは予測不可能になります - これを避けるために、半透明なパーツを重複させないでください。

Class.BasePart.LocalTransparency は、ローカルクライアントにのみ表示される透明度の乗数です。

コードサンプル

Fade Door

-- Paste into a Script inside a tall part
local part = script.Parent
local OPEN_TIME = 1
-- Can the door be opened at the moment?
local debounce = false
local function open()
part.CanCollide = false
part.Transparency = 0.7
part.BrickColor = BrickColor.new("Black")
end
local function close()
part.CanCollide = true
part.Transparency = 0
part.BrickColor = BrickColor.new("Bright blue")
end
local function onTouch(otherPart)
-- If the door was already open, do nothing
if debounce then
print("D")
return
end
-- Check if touched by a Humanoid
local human = otherPart.Parent:FindFirstChildOfClass("Humanoid")
if not human then
print("not human")
return
end
-- Perform the door opening sequence
debounce = true
open()
task.wait(OPEN_TIME)
close()
debounce = false
end
part.Touched:Connect(onTouch)
close()
X-Ray Vision

local function makeXRayPart(part)
-- LocalTransparencyModifier will make parts see-through but only for the local
-- client, and it won't replicate to the server
part.LocalTransparencyModifier = 0.5
end
-- This function uses recursion to search for parts in the game
local function recurseForParts(object)
if object:IsA("BasePart") then
makeXRayPart(object)
end
-- Stop if this object has a Humanoid - we don't want to see-through players!
if object:FindFirstChildOfClass("Humanoid") then
return
end
-- Check the object's children for more parts
for _, child in pairs(object:GetChildren()) do
recurseForParts(child)
end
end
recurseForParts(workspace)

方法

AngularAccelerationToTorque

パラメータ

angAcceleration: Vector3
angVelocity: Vector3
既定値: "0, 0, 0"

戻り値

ApplyAngularImpulse

void

このパーツの組み立てに即座に角度フォースインスパルスを適用し、組み立てを回転させます。

導力の結果は、mass を含むアセンブルの Class.BasePart.AssemblyMass によります。つまり、より大きなアセンブルを移動するには、より高い導力が必要になります。導力は、爆発や衝突など、強制を即座に適用したい場合に便利です。

パーツがサーバーによって所有されている場合、この関数は Class.Script のスクリプトをサーバーから

パラメータ

impulse: Vector3

アセンダリーベクトルをアセンダリーベクトルとしてアセンダリーベクトルに適用する。


戻り値

void

ApplyImpulse

void

この関数は、この部品のアセンブリに即座に力のインスタントフォースインパルスを適用します。

フォースはアセンブリの center of mass に適用されるため、結果としての移動は直線です。

導力の結果は、mass によります。つまり、より大きなアセンダンスを移動するには、より高い導力が必要になります。導力は、爆発や衝突など、すぐに力を適用したい場合に便利です。

パーツがサーバーによって所有されている場合、この関数は Class.Script のスクリプトをサーバーから

パラメータ

impulse: Vector3

アセンダリーベクトルをアセンダリーベクトルとしてアセンダリーベクトルに適用する。


戻り値

void

ApplyImpulseAtPosition

void

この関数は、この部品のアセンブリに即座に力のインスタントフォースインパルスを適用します。

位置がアセンブリの center of mass にありませんので、インパルスは位置と回転の両方に影響を与えます。

導力の結果は、mass によります。つまり、より大きなアセンダンスを移動するには、より高い導力が必要になります。導力は、エクスプロージョンや衝突など、開発者が即座に力を適用したい場合に便利です。

パーツがサーバーによって所有されている場合、この関数は Class.Script のスクリプトをサーバーから

パラメータ

impulse: Vector3

アセンダリーベクトルをアセンダリーベクトルとしてアセンダリーベクトルに適用する。

position: Vector3

ワールドスペースの位置で、インパルスを適用する。


戻り値

void

CanCollideWith

並列書き込み

パーツが互いに衝突するかどうかを返します。この機能は、2つのパーツの衝突グループを考慮します。この機能は、指定されたパーツがベースパーツでない場合にエラーが発生します。

パラメータ

part: BasePart

指定されたパーツが衝突可能性をチェックされています。


戻り値

パーツが互いに衝突できるかどうか。

CanSetNetworkOwnership

CanSetNetworkOwnership 機能は、パーツのネットワーク所有権を設定できるかどうかをチェックします。

機能の戻り値は、BasePart:SetNetworkOwner() またはBasePart:SetNetworkOwnershipAuto() を呼び出すことができるかどうかを確認します。エラーなしにClass.BasePart:SetNetworkOwnershipAuto() を変更/読み取ることができる場合、1> true1>が返されます。ネットワーク所有を変更/読み


戻り値

ネットワークの所有権を変更または読み取ることができるかどうか。

コードサンプル

Check if a Part's Network Ownership Can Be Set

local part = workspace:FindFirstChild("Part")
if part and part:IsA("BasePart") then
local canSet, errorReason = part:CanSetNetworkOwnership()
if canSet then
print(part:GetFullName() .. "'s Network Ownership can be changed!")
else
warn("Cannot change the Network Ownership of " .. part:GetFullName() .. " because: " .. errorReason)
end
end

GetClosestPointOnSurface

パラメータ

position: Vector3

戻り値

GetConnectedParts

Instances
並列書き込み

オブジェクトに接続されたパーツのテーブルを任意の剛性関節で返します。

recursive が true の場合、この関数はベースパーツに徹底的に接続されたアセンブリのすべてのパーツを返します。

剛性のある関節

共同が 2つのパーツを結合するとき (Part0 → Part1) 、共同は 剛性 、 if the physics of Part1 が完全に 1> Part01> によってロックされている場合は。これは次の共同タイプにのみ適用されます:

パラメータ

recursive: bool

オブジェクトに接続されているパーツのテーブル。 joint

既定値: false

戻り値

Instances

GetJoints

Instances
並列書き込み

このパーツに接続されているすべての共同または制限を返します。


戻り値

Instances

パーツに接続されているすべての共同体または制限のアレイ。

GetMass

並列書き込み

GetMass() は、Mass のみを読み取ります。

この関数は、Mass プロパティの先にあります。バックコンバージョンのためにサポートされていますが、Mass プロパティを直接使用する必要はありません。


戻り値

部品のマス。

コードサンプル

Finding a Part's Mass

local myPart = Instance.new("Part")
myPart.Size = Vector3.new(4, 6, 4)
myPart.Anchored = true
myPart.Parent = workspace
local myMass = myPart:GetMass()
print("My part's mass is " .. myMass)

GetNetworkOwner

並列書き込み

このパートのネットワーク所有者が現在のプレイヤーであるか、サーバーの場合、nilです。


戻り値

この部分のネットワーク所有者である現在のプレイヤー、またはサーバーの場合は nulo。

GetNetworkOwnershipAuto

並列書き込み

ゲームエンジンがこのパーツのネットワーク所有者を自動的に決定する場合、 true が返されます。


戻り値

ゲームエンジンがこの部分のネットワーク所有者を自動的に決定するかどうか。

GetNoCollisionConstraints

Instances

戻り値

Instances

GetRootPart

並列書き込み

アセンブルの基本部分を返します。CFrame を使用してアセンブルのパーツを移動するときは、この基本部分を移動する必要があります (これは、他のパーツに対しても同様です)。詳細は、アセンブルズ アーティクルで説明されています。

この関数は AssemblyRootPart プロパティの先に来ます。バックコンバージョンのサポートは続けられますが、AssemblyRootPart を直接使用することは推奨されません。


戻り値

アセンブリのベース部分 (パーツを接続したコレクション)。

GetTouchingParts

Instances

このパーツと物理的に関連するすべてのパーツのテーブルを返します。パーツ自体に CanCollide が設定されている場合、この


戻り値

Instances

この部品とインターセクトし、衝突できるすべてのパーツのテーブル。

GetVelocityAtPosition

並列書き込み

このパーツに関連する位置のリニア速度を返します。これは、このパーツのアセンブリに対するリニア速度です。根パーツ以外のアセンブリの場合、リニア速度は常にこのパーツの位置に対する直線速度です。アセンブリに角度速度がない場合、リニア速度は常にこのパーツの位置に対する直線速度です。

パラメータ

position: Vector3

戻り値

IsGrounded

並列書き込み

オブジェクトが配置される場所に接続されると、Anchored パーツなど、その場合には、Anchored が含まれます。在庫にあるパーツの場合、Class.BasePart.Anchored|Anchored パーツ はすべてグラウンドされます。


戻り値

オブジェクトが場所を保持する部品に接続されているかどうか。

Resize

Studio サイズ変更ツールを使用すると、オブジェクトのサイズが変更されます。

パラメータ

normalId: Enum.NormalId

サイズ変更する側。

deltaAmount: number

指定された側面で成長/縮小する。


戻り値

パーツのサイズ変更。

SetNetworkOwner

void

これとすべての接続されたパーツのネットワーク所有者として指定されたプレイヤーを設定します。playerInstance が n であると、サーバーはプレイヤーではなくてもオーナーになります。

パラメータ

playerInstance: Player

プレイヤーに部品のネットワーク所有権が与えられています。

既定値: "nil"

戻り値

void

SetNetworkOwnershipAuto

void

ゲームエンジンは、パーツの物理を処理するプロセスをクライアントまたはサーバーの 1 つで処理するかをダイナミックに決定します。


戻り値

void

TorqueToAngularAcceleration

パラメータ

torque: Vector3
angVelocity: Vector3
既定値: "0, 0, 0"

戻り値

IntersectAsync

イールド

パーツと他のパーツの交差点のジオメトリから、新しい IntersectOperation を作成します。Parts だけがサポートされ、Terrain または 1>

コールする部分の次のプロパティは、結果となる IntersectOperation に適用されます:

次のイメージ比較では、 IntersectAsync() は、青いブロックを含むテーブルを使用して、パープルのブロックを呼び出します。結果として、 IntersectOperation は、両方のパーツの交差点形状に変換されます。

Two block parts overlapping

<figcaption>パーツを別々にする</figcaption>
Parts intersected into a new solid model

<figcaption>結果 <code>Class.IntersectOperation</code></figcaption>

注意

  • 原始部品は、成功したインターセクトオペレーションの後に完全に残ります。ほとんどの場合、Destroy() すべての原始部品を返し、IntersectOperation をコールするのと同じ場所に親を置きます。BasePart
  • デフォルトで、結果の交差点の顔の色は、元のパーツの Color プロパティから借りられます。全体の交差点を特定の色に変更するには、 UsePartColor プロパティを true に設定します。
  • 交差オペレーションが 20,000 以上の三角形を含む場合、それは 20,000 に単純化されます。

パラメータ

parts: Instances

交差点に参加するオブジェクト。

collisionfidelity: Enum.CollisionFidelity

結果の Class.IntersectOperation の値で Enum.CollisionFidelity

既定値: "Default"
renderFidelity: Enum.RenderFidelity

結果の Class.PartOperation の値の Enum.RenderFidelity

既定値: "Automatic"

戻り値

結果 IntersectOperation の名前 Intersect でデフォルトの名前です。

SubtractAsync

イールド

パーツの位置に対応する UnionOperation を作成します。パーツの位置には、Parts 以外のパーツのジオメトリは含まれません。Terrain または

結果としてのユニオンは、控除を減算するために空であることに注意してください。操作が完全に空のジオメトリを返すと、失敗します。

次のイメージ比較では、 SubtractAsync() は、パープルブロックを含むテーブルを使用して、青いシリンダーを呼び出します。結果として、 UnionOperation は、シリンダーのジオメトリからブロックのジオメトリを削除する形式に変換されます。

Longer block overlapping a cylinder

<figcaption>パーツを別々にする</figcaption>
Block part subtracted from cylinder

<figcaption>結果 <code>Class.UnionOperation</code> ></figcaption>

パラメータ

parts: Instances

控除に参加するオブジェクト。

collisionfidelity: Enum.CollisionFidelity

結果の Class.UnionOperation の値で Enum.CollisionFidelity

既定値: "Default"
renderFidelity: Enum.RenderFidelity

結果の Class.PartOperation の値の Enum.RenderFidelity

既定値: "Automatic"

戻り値

デフォルトの名前 UnionOperation で結果として Class.UnionOperation 。

コードサンプル

BasePart:SubtractAsync()

local Workspace = game:GetService("Workspace")
local mainPart = script.Parent.PartA
local otherParts = { script.Parent.PartB, script.Parent.PartC }
-- Perform subtract operation
local success, newSubtract = pcall(function()
return mainPart:SubtractAsync(otherParts)
end)
-- If operation succeeds, position it at the same location and parent it to the workspace
if success and newSubtract then
newSubtract.Position = mainPart.Position
newSubtract.Parent = Workspace
end
-- Destroy original parts which remain intact after operation
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end

UnionAsync

イールド

パーツとUnionOperation の新しい Parts を作成します。Terrain または1> Class.MeshPart|パーツ1> のパーツが占有されているアレイ

コールする部分の次のプロパティは、結果となる UnionOperation に適用されます:

次のイメージ比較では、 UnionAsync() は、紫のシリンダーを含むテーブルを使用して、青のブロックを呼び出します。結果として、 UnionOperation は、両方のパーツの組み合わせの形状に解決されます。

Block and cylinder parts overlapping

<figcaption>パーツを別々にする</figcaption>
Parts joined together into a single solid union

<figcaption>結果 <code>Class.UnionOperation</code> ></figcaption>

注意

  • ユニオンオペレーションに成功した後、オリジナルのパーツは完全に残ります。ほとんどの場合、Destroy() すべてのオリジナルのパーツをUnionOperation に親して、BasePart を同じ場所に2> Class.Operation2> します。
  • デフォルトで、結果のユニオンはそれぞれのパーツの Color プロパティを尊重します。ユニオン全体を特定の色に変更するには、UsePartColor プロパティを true に設定します。
  • ユニオンオペレーションが 20,000 以上の三角形を含むパーツを結果として返す場合、それは 20,000 に単純化されます。

パラメータ

parts: Instances

呼び出し部分とユニオンに参加するオブジェクト。

collisionfidelity: Enum.CollisionFidelity

結果の Class.UnionOperation の値で Enum.CollisionFidelity

既定値: "Default"
renderFidelity: Enum.RenderFidelity

結果の Class.PartOperation の値の Enum.RenderFidelity

既定値: "Automatic"

戻り値

デフォルトの名前 UnionOperation で結果として Class.UnionOperation 。

コードサンプル

BasePart:UnionAsync()

local Workspace = game:GetService("Workspace")
local mainPart = script.Parent.PartA
local otherParts = { script.Parent.PartB, script.Parent.PartC }
-- Perform union operation
local success, newUnion = pcall(function()
return mainPart:UnionAsync(otherParts)
end)
-- If operation succeeds, position it at the same location and parent it to the workspace
if success and newUnion then
newUnion.Position = mainPart.Position
newUnion.Parent = Workspace
end
-- Destroy original parts which remain intact after operation
mainPart:Destroy()
for _, part in otherParts do
part:Destroy()
end

イベント

TouchEnded

同様の状況下で、BasePart.Touched の下にある別の部分に触れるときに発動します。

このイベントは、Workspace.TouchesUseCollisionGroups と共同で機能して、衝突グループ が検出されるかどうかを指定します。

パラメータ

otherPart: BasePart

コードサンプル

Touching Parts Count

local part = script.Parent
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(0, 200, 0, 50)
billboardGui.Adornee = part
billboardGui.AlwaysOnTop = true
billboardGui.Parent = part
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, 0, 1, 0)
tl.BackgroundTransparency = 1
tl.Parent = billboardGui
local numTouchingParts = 0
local function onTouch(otherPart)
print("Touch started: " .. otherPart.Name)
numTouchingParts = numTouchingParts + 1
tl.Text = numTouchingParts
end
local function onTouchEnded(otherPart)
print("Touch ended: " .. otherPart.Name)
numTouchingParts = numTouchingParts - 1
tl.Text = numTouchingParts
end
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)

Touched

タッチされたイベントは、パーツが他のパーツと接触すると発動します。たとえば、PartAがPartBにつつかるときは、2>5>Class.BasePart.Touched|8>PartA.T

このイベントは、物理的な移動の結果にのみ発生するので、CFrame プロパティが変更されて、部分が別の部分に重複することがあるため、このイベントは発動しません。これは、Class.BasePart.Anchored|Anchored が衝突の時に最低 1

このイベントは、Workspace.TouchesUseCollisionGroups と共同で機能して、衝突グループ が検出されるかどうかを指定します。

パラメータ

otherPart: BasePart

与えられた部分と接触した他の部分。


コードサンプル

Touching Parts Count

local part = script.Parent
local billboardGui = Instance.new("BillboardGui")
billboardGui.Size = UDim2.new(0, 200, 0, 50)
billboardGui.Adornee = part
billboardGui.AlwaysOnTop = true
billboardGui.Parent = part
local tl = Instance.new("TextLabel")
tl.Size = UDim2.new(1, 0, 1, 0)
tl.BackgroundTransparency = 1
tl.Parent = billboardGui
local numTouchingParts = 0
local function onTouch(otherPart)
print("Touch started: " .. otherPart.Name)
numTouchingParts = numTouchingParts + 1
tl.Text = numTouchingParts
end
local function onTouchEnded(otherPart)
print("Touch ended: " .. otherPart.Name)
numTouchingParts = numTouchingParts - 1
tl.Text = numTouchingParts
end
part.Touched:Connect(onTouch)
part.TouchEnded:Connect(onTouchEnded)
Model Touched

local model = script.Parent
local function onTouched(otherPart)
-- Ignore instances of the model coming in contact with itself
if otherPart:IsDescendantOf(model) then return end
print(model.Name .. " collided with " .. otherPart.Name)
end
for _, child in pairs(model:GetChildren()) do
if child:IsA("BasePart") then
child.Touched:Connect(onTouched)
end
end