BasePart

사용되지 않는 항목 표시

*이 콘텐츠는 AI(베타)를 사용해 번역되었으며, 오류가 있을 수 있습니다. 이 페이지를 영어로 보려면 여기를 클릭하세요.

만들 수 없음
찾아볼 수 없음

BasePart 는 세계 어

Class.BasePart|BaseParts가 시뮬레이션된 유연한 바디로 그룹화되는 방법에 대한 자세한 내용은 조립 을 참조하십시오.

다음과 같은 개체가 BasePart (Terrain 제외)와 상호 작용합니다.

  • 여러 개의 BasePartsModel 내에 그룹화되고 동시에 이동되는 경우 PVInstance:PivotTo() 를 사용하여 이동됩니다. 참조 2>Model2>.
  • Class.Decal는 클래스 BasePart의 얼굴에 스트레칭 이미지 텍스처를 적용하고, Texture는 타일 이미지 텍스처를 얼굴에 적용합니다. 참조 1>텍스처 및 데칼1> .
  • Class.SurfaceGui 는 부품의 얼굴에서 GuiObjects 을 렌더링합니다. 참조 경험 내 인터페이스 컨테이너.
  • Class.Attach|Attachments 를 BasePart 에 추가하여 부품에 대해 CFrames 을 지정합니다. 이는 종종 물리적 0> Class.Limit0> 개체에 대해 지정된 부품의 상대 3> Class
  • ParticleEmitter 개체는 부모인 BasePart의 볼륨에서 입자를 일관되게 방출합니다. 참조 입자 방출기.
  • Light 개체, PointLight 는 라이트를 중심으로 한 BasePart 에서 발생시킵니다. 이 개체는 Light Sources 에 설명된 대로 발생합니다.
  • Class.Tool 에 부모로 지정되고 이름 Handle 을 지정하면 BasePart 을 캐릭터로 둘 수 있습니다. 참조 1>경험 도구1> .

요약

속성

  • 병렬 읽기

    물리적으로 부품이 움직일 수 없는지 여부를 결정합니다.

  • 복제되지 않음
    병렬 읽기

    부품 조립의 각도 속도.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    부품 조립의 중심 공간.

  • 복제되지 않음
    병렬 읽기

    부품 조립의 직선 속도.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    부품 조립의 총 질량.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    조립의 루트 부분에 대한 참조.

  • 부품의 뒷면 표면 유형을 결정합니다 (+Z 방향).

  • 부품의 하단 면에 대한 표면 유형을 결정합니다(Y 방향).

  • 복제되지 않음
    병렬 읽기

    부품의 색을 결정합니다.

  • 병렬 읽기

    세계에서 BasePart의 위치 및 방향을 결정합니다.

  • 병렬 읽기

    부품이 다른 부품과 충돌할 수 있는지 여부를 결정합니다.

  • 병렬 읽기

    공간 쿼리 작업 중에 부품이 고려되는지 여부를 결정합니다.

  • 병렬 읽기

    부품에 화재가 발생하는지 여부를 결정합니다. TouchedTouchEnded 이벤트가 부품에서 발생하는지 여부를 결정합니다.

  • 병렬 읽기

    부품이 그림자를 캐스트하는지 여부를 결정합니다.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    부품의 중심 마사가 위치한 세계 위치를 설명합니다.

  • 복제되지 않음
    병렬 읽기

    부품 충돌 그룹의 이름을 설명합니다.

  • 복제되지 않음
    병렬 읽기

    부품의 색을 결정합니다.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    부품의 현재 물리적 속성을 나타냅니다.

  • 부품의 여러 물리적 속성을 결정합니다.

  • 병렬 읽기

    부품 및 조립에 대한 공기 동력 힘을 활성화하거나 비활성화합니다.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    물리적 엔터티의 CFrame 의 물리적 부분입니다.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    물리적 엔진에 의해 보는 BasePart의 실제 크기.

  • 부품의 앞면에 대한 표면 유형을 결정합니다(Z 방향).

  • 부품의 왼쪽 표면 유형을 결정합니다(ـX 방향).

  • 숨김
    복제되지 않음
    병렬 읽기

    로컬 클라이언트에만 표시되는 BasePart.Transparency 의 배수를 결정합니다.

  • 병렬 읽기

    Studio에서 부품을 선택할 수 있는지 여부를 결정합니다.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    부품의 질량, 밀도 및 볼륨의 제품을 설명합니다.

  • 병렬 읽기

    부품이 유연 신체총 질량이나 비활성에 기여하는지 여부를 결정합니다.

  • 병렬 읽기

    부품의 텍스처 및 기본 물리 속성을 결정합니다.

  • 복제되지 않음
    병렬 읽기

    Class.MaterialVariant 의 이름.

  • 숨김
    복제되지 않음
    병렬 읽기

    부품의 회전을 설명합니다.

  • 병렬 읽기

    부품의 피벗 오프셋을 지정합니다. CFrame 에서.

  • 숨김
    복제되지 않음
    병렬 읽기

    세계의 부품 위치를 설명합니다.

  • 숨김
    읽기 전용
    복제되지 않음
    병렬 읽기

    마지막으로 기록된 물리 업데이트 이후의 시간.

  • 병렬 읽기

    부품이 하늘 상자를 얼마나 반영하는지 결정합니다.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    크기 조정 메서드에 의해 허용되는 가장 작은 변경 내용을 설명합니다.

  • 읽기 전용
    복제되지 않음
    병렬 읽기

    부품의 크기를 조정할 수 있는 얼굴을 설명합니다.

  • 부품의 오른쪽 면에 대한 표면 유형을 결정합니다 (+X 방향).

  • 병렬 읽기

    조립의 뿌리 부분을 결정하는 주요 규칙입니다.

  • 복제되지 않음
    병렬 읽기

    부품의 회전은 세 축에 대한 도 단위입니다.

  • 복제되지 않음
    병렬 읽기

    부품의 크기 (길이, 너비, 높이)를 결정합니다.

  • 부품의 상단 면에 대한 표면 유형을 결정합니다 (+Y 방향).

  • 병렬 읽기

    부품의 불투명도(부품 불투명도의 부품 반대)를 결정하는 방법을 결정합니다.

속성PVInstance에서 상속되었습니다

메서드

메서드PVInstance에서 상속되었습니다

이벤트

속성

Anchored

병렬 읽기

고정된 속성은 부품이 물리적으로 고정되는지 여부를 결정합니다. 활성화되면 중력, 다른 부품 충돌, 서로 맞닿는 다른 부품 또는 기타 물리 관련 충돌로 인해 부품의 위치가 변경되지 않습니다. 결과적으로 고정된 부품은 서로 다른 고정된 부

고정된 부품은 여전히 CFrame 또는 Position 를 변경하여 이동할 수 있으며, 여전히 유효한 AssemblyLinearVelocity 및 1> Class.BasePart.RotationAngularVelocity|RotationAngularVelocity

마지막으로, 앵커가 없는 부품이 앵커가 있는 부품과 개체를 통해 연결되면 앵커가 작동하게 됩니다. 이런 경우 부품이 물리학에 의해 다시 영향을 받을 수 있습니다. 자세한 내용은 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

복제되지 않음
병렬 읽기

이 부품의 조립의 각도 속도 벡터입니다. 이것은 초당 방향 변경의 속도입니다.

각 조립 요소의 모든 지점에서 각도 속도가 동일합니다.

직접 속도를 설정하면 현실적이지 않은 운동을 초래할 수 있습니다. Torque 또는 AngularVelocity 제약을 사용하는 것이 좋지만, 즉각적인 속도 변경을 원하는 경우 BasePart:ApplyAngularImpulse() 를 사용하거나 2>Class.BasePart:ApplyAngularImpulse2> 를 사용하면 됩니

서버가 소유한 경우, 이 속성은 서버 Script (서버 소유 스크립트 아님) 에서

AssemblyCenterOfMass

읽기 전용
복제되지 않음
병렬 읽기

모든 부품의 배치에 대해 massposition를 사용하여 위치를 계산합니다.

조립은 고정된 부품을 가지고 있으면 해당 부품의 중심 마스는 조립의 중심 마스이며 조립은 무한 마스를 가질 수 있습니다.If theAssembly has an attached part, that part's center of mass will be theAssembly's center of mass, and theAssembly will have infinite mass.

중심 마사를 알면 조립 안정성을 유지할 수 있습니다. 마사 중심에 적용된 힘은 각도 가속을 일으키지 않지만 직선만 가능합니다. 중심 마사가 낮은 조립은 중력 효과로 서 있는 시간이 더 나은 시간을 가질 수 있습니다.

AssemblyLinearVelocity

복제되지 않음
병렬 읽기

이 부품의 조립 속도. 이 부품의 center of mass 는 초당 스터드 기준으로 마사의 위치를 변경하는 속도입니다.

조립의 중심 마이크로 부품이 아닌 위치의 속도를 알고 싶다면 BasePart:GetVelocityAtPosition() 를 사용합니다.

직접 속도를 설정하면 현실적이지 않은 운동을 초래할 수 있습니다. VectorForce 제약을 사용하는 것이 좋지만, 즉시 속도를 변경하려면 BasePart:ApplyImpulse()를 사용하는 것이 좋습니다.

서버가 소유한 경우, 이 속성은 서버 Script (서버 소유 스크립트 아님) 에서

AssemblyMass

읽기 전용
복제되지 않음
병렬 읽기

이 부분의 조립에는 모든 parts의 마스를 더한 값이 기여합니다. 마스가 더한 값이 Massless인 부품은 조립 마스에 기여하지 않습니다.

조립은 고정된 부품을 가지고 있으면 조립의 대량이 무한으로 간주됩니다. 대량이 큰 고정되지 않은 조립과 다른 물리적 상호 작용 사이의 제약 사항 및 기타 부품이 손상될 수 있습니다.

AssemblyRootPart

읽기 전용
복제되지 않음
병렬 읽기

이 속성은 BasePart 가 자동으로 조립의 뿌리 부분을 나타내는 것을 나타냅니다. 이는 개발자가 GetRootPart() 를 호출할 때 반환되는 부분입니다.

Class.BasePart.RootPriority|RootPriority 의 부품을 변경하여 루트 부분을 변경할 수 있습니다.

모든 공유 하는 동일한 조립 부품은 동일한 조립 부품입니다.

루트 부품에 대한 자세한 내용은 조립 을 참조하십시오.

BackSurface

병렬 읽기

BackSurface 속성은 부품의 +Z 방향에 사용할 표면 유형을 결정합니다. 두 부품의 얼굴이 서로 맞닿으면 공간 간의 연결을 만들 수 있습니다. 모터로 설정되면 BasePart.BackSurfaceInput 이 모터 연결을 동작하는 방법을 결정합니다.

대부분의 표면 유형은 플라스틱으로 부품 얼굴에 텍스처를 렌더링하지만, 일부 표면 유형 - 윙, 모터 및 스텝 모터 -는 대신 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 방향에 사용할 표면 유형을 결정합니다. 두 부품의 얼굴이 서로 옆에 배치되면 공간 간의 연결을 만들 수 있습니다. 모터로 설정되면 BasePart.BottomSurfaceInput 모터 관절의 동작을 결정합니다.

대부분의 표면 유형은 플라스틱으로 부품 얼굴에 텍스처를 렌더링하지만, 일부 표면 유형 - 윙, 모터 및 스텝 모터 -는 대신 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

복제되지 않음
병렬 읽기

벽돌 색상 속성은 부품의 색상을 결정합니다. 부품에 벽돌 Class.BasePart.Material 이 있으면 이것도 재료 텍스처를 렌더링할 때 사용되는 색상을 결정합니다. 색상에 대한 자세한 내용은 색상 Class.BasePart.Color 속성을 사용할 수 있습니다(이

부품의 다른 시각적 속성은 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 이 유용할 수 있습니다.

코드 샘플

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

병렬 읽기

충돌 여부를 결정하여 부품이 다른 부품과 물리적으로 상호 작용하는지 여부를 결정합니다. 비활성화되면 다른 부품은 벽돌 무결성을 통과할 수 없습니다. 장식용 부품은 일반적으로 장식 에 사용되므로 충돌이 비활성화되면 물리 엔진에서 고려되지 않습니다.

부품이 BasePart.Anchored이 아니고 Workspace.FallenPartsDestroyHeight로 비활성화되어 있으면 세계에서 떨어져 결국 Class.Workspace.FallenPartsDestroyHeight로 파괴될 수 있습니다.

CanCollide가 비활성화된 경우 부품이 여전히 BasePart.CanTouch 이벤트(부품을 만지는 다른 부품도 포함)를 발생시킬 수 있습니다. 이를 Class.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 와 같은 부품에 대한 공간 쿼리 작업이 활성화되어 있지

이 속성 이상으로, 부품 목록의 하위인 부품을 제외하는 것도 가능합니다. OverlapParams 또는 RaycastParams 개체를 호출하여 부품 쿼리 함수를 호출할 때.

CanTouch

병렬 읽기

이 속성은 Touched

이 충돌 로직은 충돌 그룹을 통해 Workspace.TouchesUseCollisionGroups에 대해 존중하도록 설정할 수 있습니다. 만약 true 속성을 통해 충돌하지 않는 그룹의 부품은 충돌 이벤트를 모두 무시하므로 이 속성이

성능

두 가지 이상의 CanTouchCanCollide 설정을 false 으로 변경하면 이러한 부품이 부품 충돌을 계산할 필요 없습니다.

CastShadow

병렬 읽기

부품이 그림자를 캐스트하는지 여부를 결정합니다.

이 기능은 성능 향상을 위한 것이 아니므로 성능 향상을 위한 것 이 아닙니다. 이 속성을 해당 부품에 대해 비활성화하면 캐스트된 부품의 그림자에 대해 시각적 예술 유물이 생성될 수 있습니다. 이 속성을 해당 부품에 대해 비활성화하면 해당 부품에 대한 시각적 예술 유물이 생성될 수 있습

CenterOfMass

읽기 전용
복제되지 않음
병렬 읽기

중심 마사 속성은 부품의 중심 마사 위치를 설명합니다. 이 부품 조립은 단일 부품 조립인 경우 AssemblyCenterOfMass 이 세계 공간에서 변환된 로컬 위치입니다. 단순한 AssemblyCenterOfMass

CollisionGroup

복제되지 않음
병렬 읽기

이 속성은 부품의 충돌 그룹(최대 100자) 이름을 설명합니다. 부품은 기본 그룹의 이름인 CollisionGroup 으로 시작합니다. 이 값을 비워둘 수 없습니다.

이 속성 자체는 복제되지 않지만, 엔진은 백업 호환성 문제를 해결하기 위해 다른 개인 속성을 통해 값을 내부적으로 복제합니다.

코드 샘플

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 는 Color3 값에 가장 가까운 벽돌 색을 사용합니다.

부품의 다른 시각적 속성은 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에 공기 역학 힘을 계산하기 위해 물리 엔진이 계산하는 공기 역학 힘을 계산합니다.

ExtentsCFrame

읽기 전용
복제되지 않음
병렬 읽기

Class.BasePart의 물리적 센터를 나타내는 물리 익스텐트의 BasePart입니다.

ExtentsSize

읽기 전용
복제되지 않음
병렬 읽기

물리적 크기는 예를 들어 충돌 감지에 대한 물리 엔진의 실제 크기입니다. BasePart 의 물리적 크기는 다음과 같습니다.

FrontSurface

병렬 읽기

FrontSurface 속성은 부품의 -Z 방향에 사용할 표면 유형을 결정합니다. 두 부품의 얼굴이 서로 맞닿으면 공간 간의 연결을 만들 수 있습니다. 모터로 설정되면 BasePart.FrontSurfaceInput 이 모터 연결을 동작하는 방법을 결정합니다.

대부분의 표면 유형은 플라스틱으로 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

LeftSurface

병렬 읽기

LeftSurface 속성은 부품의 -X 방향을 위해 사용할 수 있는 표면 유형을 결정합니다. 두 부품의 얼굴이 서로 옆에 배치되면 공간 충돌이 생성될 수 있습니다. 모터로 설정하면 BasePart.LeftSurfaceInput 이 모터 충돌 동작을 결정합니다.

대부분의 표면 유형은 플라스틱으로 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

LocalTransparencyModifier

숨김
복제되지 않음
병렬 읽기

Class.BasePart.LocalTransparency 속성은 로컬 클라이언트에만 표시되는 BasePart.Transparency의 배수이며, 서버에서 복제되지 않고 로컬 클라이언트에만 표시되는 경우 Class.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에서 선택하는지 여부를 결정합니다. 이 속성은 현재 편집되지 않은 환경 모델 내의 부품에 대해 로ック/잠금 해제 모

코드 샘플

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

읽기 전용
복제되지 않음
병렬 읽기

Mass 는 부품의 볼륨 및 밀도에 대한 제품을 설명하는 읽기 전용 속성입니다. GetMass 함수에 의해 반환됩니다.

  • 부품의 볼륨은 그 크기 Size 및 그 모양 Shape 에 따라 결정됩니다. 이는 사용된 기본 부품 유형에 따라 WedgePart 과 같은 경우가 있습니다.
  • 부품의 밀도는 지정된 경우 Material 또는 CustomPhysicalProperties 에 따라 결정됩니다.

Massless

병렬 읽기

이 속성이 활성화되면 BasePart 는 그 조립의 총 질량이나 비활성 상태에 기여하지 않습니다.

파트가 AssemblyRootPart 의 자체 루트 부품인 경우, 이 부품에 대해 모든 다른 부품이 모두 무시되므로 이 부품에 대해 마찬가지로 중량 및 비활성을 기여하지 않습니다. 비량량 부품은 모두 조립 루트 부품이 되지 않습니다.

이 기능은 차량에 옵션 액세서리가 없는 경우 자동차 핸들링에 영향을 주지 않는 메쉬 렌더링 메쉬와 간단한 충돌 메쉬를 얻는 데 유용할 수 있습니다.

또한 참조하십시오 조립형식, 루트 부품이 무엇인지 및 사용하는 방법에 대한 문서.

병렬 읽기

재료 속성은 빌더가 부품의 텍스처 및 기본 물리 속성(BasePart.CustomPhysicalProperties가 설정되지 않은 경우)을 설정할 수 있습니다. 기본 플라스틱 재료는 매우 가벼운 텍스처를 가지고 있으며, 부드러운 플라스틱 재료는

이 속성을 설정하고 BasePart.CustomPhysicalProperties를 활성화하면 재료의 기본 물리 속성을 사용합니다. 예를 인스턴스, 다이아몬드 플레이트는 매우 밀밀한 재료이고 나무는 매우 가벼웁니다. 부품의 밀도는 지형 물에 부동 하는지 여부를 결정합니다.

유리 재료는 중간 그래픽 설정에서 렌더링 행동을 변경합니다. 반사 효과(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 이름과 MaterialVariant 입력일치하는 인스턴스를 검색합니다. 일치하는 MaterialVariant 인스턴스를 찾으면 기본 재료를 대체하기 위해 이 재료를 사용합니다. 기본 재료는 내장 재료 또는 BasePart.Material 에 지정된 대체 재

Orientation

숨김
복제되지 않음
병렬 읽기

지향성 속성은 벡터3를 사용하여 X, Y 및 Z축 주위의 부품의 회전을 설명합니다. 회전은 Y → X

이 속성을 설정할 때 Welds 또는 Motor6Ds 이 부품에 연결된 어떤 속성이든지 일치하는 Class.JointInstance.C0|C0 또는 Class.JointInstance.C1|C1

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

숨김
복제되지 않음
병렬 읽기

위치 속성은 데이터 타입 Datatype.Vector3 를 사용하여 부품의 좌표를 설명합니다. 부품의 <a href="/reference/engine/datatypes">Class.BasePart</a> 를 참조하지만, 설정할 수도 있습니다.

이 속성을 설정할 때 Welds 또는 Motor6Ds 이 부품에 연결된 어떤 속성이든지 일치하는 Class.JointInstance.C0|C0 또는 Class.JointInstance.C1|C1

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

읽기 전용
복제되지 않음
병렬 읽기

Class.BasePart:Resize() 메서드에 대한 가장 작은 크기 변경을 설명하는 읽기 전용 속성입니다. 이 메서드는 Class.Part 개체의 구현에 따라 다릅니다. 예를 인스턴스, Class.Part는

코드 샘플

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

읽기 전용
복제되지 않음
병렬 읽기

Class.BasePart Class.Part Class.WedgePart 1> 4> Class.TrussPart4> 등의 부품을

코드 샘플

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 방향을 위해 사용할 표면 유형을 결정합니다. 두 부품의 얼굴이 서로 옆에 배치되면 공간 간의 연결을 만들 수 있습니다. 모터로 설정되면 BasePart.RightSurfaceInput 이 모터 연결을 동작하는 방법을 결정합니다.

대부분의 표면 유형은 플라스틱으로 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

RootPriority

병렬 읽기

이 속성은 모든 다른 규칙을 우선적으로 적용하는 127 부터 -127 사이의 정수입니다. 여러 개의 부품이 Anchored 이고 동일한 Massless 값을 공

이 속성을 사용하여 조립의 어느 부분이 루트 부분인지 제어하고 크기가 변경되면 루트 부분을 안정적으로 유지할 수 있습니다.

또한 참조하십시오 조립형식, 루트 부품이 무엇인지 및 사용하는 방법에 대한 문서.

Rotation

복제되지 않음
병렬 읽기

부품의 회전은 세 축에 대한 도 단위입니다.

이 속성을 설정할 때 Welds 또는 Motor6Ds 이 부품에 연결된 어떤 속성이든지 일치하는 Class.JointInstance.C0|C0 또는 Class.JointInstance.C1|C1

WeldSeconds는 이동 중에 일시적으로 비활성화되고 다시 활성화됩니다.

복제되지 않음
병렬 읽기

부품의 크기 Size 속성은 시각적 크기 차원을 결정하며, Class.BasePart.ExtentsSize|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
병렬 읽기

TopSurface 속성은 부품의 Y 방향에 사용할 표면 유형을 결정합니다. 두 부품의 얼굴이 서로 맞닿으면 공간 충돌이 생성될 수 있습니다. 모터로 설정되면 BasePart.TopSurfaceInput 이 모터 충돌 동작을 결정합니다.

대부분의 표면 유형은 플라스틱으로 부품 얼굴에 텍스처를 렌더링하지만, 일부 표면 유형 - 윙, 모터 및 스텝 모터 -는 대신 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에 의존합니다. 즉, 더 큰 충격은 더 많은 대형 조립을 이동하는 데 필요합니다. 충격은 폭발이나 충돌과 같은 경우에 즉시 적용할 수 있는 힘을 위해 유용합니다.

서버가 소유한 경우, 이 함수는 서버 Script (LocalScript 또는 1>Class.Script

매개 변수

impulse: Vector3

순간 펄스로 조립에 적용할 힘 벡터.


반환

void

ApplyImpulse

void

이 함수는 이 부품의 조립에 즉시 힘 충격을 적용합니다.

힘은 조립의 중심에 적용되므로 결과 이동은 직선적입니다.The force is applied at theAssembly's center of mass , so the resulting movement will only be linear.

충격 부품의 결과 속도는 조립의 mass에 의존합니다. 따라서 더 큰 마사를 이동하려면 더 높은 충격이 필요합니다. 충격은 폭발이나 충돌과 같은 경우에 즉시 적용할 수 있는 힘을 위해 유용합니다.

서버가 소유한 경우, 이 함수는 서버 Script (LocalScript 또는 1>Class.Script

매개 변수

impulse: Vector3

순간 펄스로 조립에 적용할 힘 벡터.


반환

void

ApplyImpulseAtPosition

void

이 함수는 세계 공간의 지정된 위치에 대해 즉시 힘 충격을 적용합니다.

위치가 조립의 중심에 있지 않으면 center of mass 에 대한 충격이 위치 및 회전 움직임을 일으킵니다.

충격 부품의 결과 속도는 조립의 mass에 의존합니다. 따라서 더 큰 마사를 이동하려면 더 높은 충격이 필요합니다. 충격은 폭발이나 충돌과 같은 경우에 즉시 적용되는 힘을 위한 경우에 유용합니다.

서버가 소유한 경우, 이 함수는 서버 Script (LocalScript 또는 1>Class.Script

매개 변수

impulse: Vector3

순간 펄스로 조립에 적용할 힘 벡터.

position: Vector3

충격을 적용할 세계 공간의 위치.


반환

void

CanCollideWith

병렬 쓰기

부품이 서로 충돌할 수 있는지 여부를 반환합니다. 이 함수는 두 부품의 충돌 그룹을 고려합니다. 지정된 부품이 기본 부품이 아닌 경우 이 함수에 오류가 발생합니다.

매개 변수

part: BasePart

충돌 가능성을 검사하는 지정된 부품.


반환

부품이 서로 충돌할 수 있는지 여부.

CanSetNetworkOwnership

CanSetNetworkOwnership 함수는 부품의 네트워크 소유자를 설정할 수 있는지 여부를 확인합니다.

함수의 반환 값은 오류가 발생하지 않고 BasePart:SetNetworkOwner() 또는 BasePart:SetNetworkOwnershipAuto()를 호출할 수 있는지 확인합니다. 네트워크 소유권을 수정하거나 읽을 수 있으면 반환 값이 참이 되고, 그렇지 않으면 문자열발생했음을 반환 합니다.


반환

네트워크 소유자 및 이유를 수정하거나 읽을 수 있는지 여부.

코드 샘플

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
병렬 쓰기

모든 종류의 고정 관절을 통해 개체에 연결된 부품 테이블을 반환합니다.Returns a table of parts connected to the object by any kind of rigid joint.

recursive 이 함수가 트리거되면 배치된 모든 부품이 기본 부품에 고정되어 반환됩니다.

유연한 관절

두 부품이 함께 연결될 때 (Part0 → Part1) , 연결은 잠겨 있습니다 만약 물리학이 Part1 이 완전히 잠겨 있다면. 이 경우는 다음과 같은 연결 유형에만 적용됩니다:

매개 변수

recursive: bool

어떤 종류의 joint 로 연결된 개체에 대한 테이블.

기본값: false

반환

Instances

GetJoints

Instances
병렬 쓰기

이 부분에 연결된 모든 관절 또는 제한을 반환합니다.


반환

Instances

부품에 연결된 모든 공동체 또는 제한 요소의 배열.

GetMass

병렬 쓰기

GetMass() 는 읽기 전용 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

병렬 쓰기

이 부분의 네트워크 소유자인 현재 플레이어를 반환하거나 서버의 경우 일반 0을 반환합니다.


반환

이 부분의 네트워크 소유자이거나 서버의 경우 일반 0인 현재 플레이어.

GetNetworkOwnershipAuto

병렬 쓰기

이 부분에 대한 네트워크 소유자를 게임 엔진이 자동으로 결정하면 true를 반환합니다.


반환

이 부분에 대해 게임 엔진이 네트워크 소유자를 자동으로 결정하는지 여부.

GetNoCollisionConstraints

Instances

반환

Instances

GetRootPart

병렬 쓰기

조립의 기본 부분을 반환합니다. CFrame 를 사용하여 조립을 이동할 때 이 기본 부분을 이동하는 것이 중요합니다(이는 다른 모든 부품을 해당 위치에 연결시킵니다). 자세한 내용은 조립 아티클을 참조하십시오.

이 함수는 AssemblyRootPart 속성을 사용하지 않습니다. 이 속성은 오래된 버전에서 지원되지만, 백업 및 호환성을 위해 AssemblyRootPart 를 직접 사용하는 것이 좋습니다.


반환

조립의 기본 부분(부품 간에 연결된 부분).

GetTouchingParts

Instances

물리적으로 이 부품과 상호 작용하는 모든 부품의 테이블을 반환합니다. 부품 자체에 CanCollide 설정을 false로


반환

Instances

이 부품과 충돌할 수 있는 모든 부품의 테이블.

GetVelocityAtPosition

병렬 쓰기

이 부품의 조립에 대한 부품의 직선 속도를 반환합니다. 이 부품의 조립에 대한 직선 속도를 식별하는 데 사용할 수 있습니다. 만약 조립이 루트 부품이 아닌 경우, 이 부품의 조립에 대한 직선 속도는 모든 위치에서 항상 동일합니다.

매개 변수

position: Vector3

반환

IsGrounded

병렬 쓰기

부품에 연결하는 개체가 있으면 참조하는 부품(예: Anchored 부품)에 연결하면 참조가 되므로 참조가 되지 않습니다. 조립에 있는 다른 부품은 모두 지상에 있습니다.


반환

개체를 부품에 연결하여 부품을 고정합니다.

Resize

Studio 크기 조정 도구를 사용하는 것과 같이 개체의 크기를 변경합니다.

매개 변수

normalId: Enum.NormalId

크기를 조정할 수 있는 측면.

deltaAmount: number

지정된 측면에서 얼마나 성장/축소하십시오.


반환

부품이 재설정되는지 여부.

SetNetworkOwner

void

이 모든 연결된 부품에 대해 네트워크 소유자로 지정된 플레이어를 설정합니다. playerInstance가 없으면 서버가 플레이어가 아닌 대신 소유자가 됩니다.

매개 변수

playerInstance: Player

플레이어에게 부품의 네트워크 소유권이 부여됩니다.

기본값: "nil"

반환

void

SetNetworkOwnershipAuto

void

게임 엔진이 물리적 시뮬레이션을 처리할 클라이언트 또는 서버를 결정하도록 동적으로 결정합니다.


반환

void

TorqueToAngularAcceleration

매개 변수

torque: Vector3
angVelocity: Vector3
기본값: "0, 0, 0"

반환

IntersectAsync

생성

부품과 다른 부품 간의 교차 기하구조에서 새로운 IntersectOperation 을 만듭니다. 지원되는 유일한 옵션은 Parts 이며, Class.Terrain 또는

호출 부분의 다음 속성이 결과 IntersectOperation에 적용됩니다.

다음 이미지 비교에서 IntersectAsync() 은 테이블에 있는 파란색 블록을 사용하여 퍼플 블록을 호출합니다. 결과적으로 IntersectOperation 는 두 부품의 상호 작용 기하학 모양으로 해결됩니다.

Two block parts overlapping

<figcaption>별도 부품</figcaption>
Parts intersected into a new solid model

<figcaption>Class.IntersectOperation 결과</figcaption>

노트

  • 성공적인 교차 작업 후 원래 부품이 유지됩니다. 대부분의 경우 모든 원래 부품을 Destroy() 하고 반환된 IntersectOperation 에 부모를 지정하여 동일한 위치에 모든 부품을 유지해야 합니다. BasePart 입니다.
  • 기본적으로 결과 교차의 얼굴 색상은 원래 부품의 Color 속성에서 대출됩니다. 전체 교차를 특정 색으로 변경하려면 원래 부품의 UsePartColor 속성을 true로 설정합니다.
  • 교차 작업으로 20,000개 이상의 삼각형이 나타나면 20,000개의 삼각형으로 간단화됩니다.

매개 변수

parts: Instances

교차점에 참여하는 개체.

collisionfidelity: Enum.CollisionFidelity
기본값: "Default"
renderFidelity: Enum.RenderFidelity
기본값: "Automatic"

반환

기본 이름 Intersect 로 결과되는 IntersectOperation 입니다.

SubtractAsync

생성

기하구조를 사용하여 부품을 클래스 유니언 연산으로 UnionOperation 생성합니다. 지정된 배열의 부품에 대한 기하구조만 지원됩니다. Parts 이나 Class.

결과 연합은 하위 뺄셈을 사용하여 비어 있을 수 없습니다. 결과 연합이 완전히 비어 있는 기하구조를 반환하면 실패합니다.

다음 이미지 비교에서, SubtractAsync() 은 보라색 실린더에서 테이블을 사용하여 호출됩니다. 결과적인 UnionOperation 는 실린더의 기하구조를 이 실린더의 기하구조와 결합하지 않는 형태로 해결합니다.

Longer block overlapping a cylinder

<figcaption>별도 부품</figcaption>
Block part subtracted from cylinder

<figcaption>Class.UnionOperation 결과</figcaption>

매개 변수

parts: Instances

제거에 참여하는 개체.

collisionfidelity: Enum.CollisionFidelity

결과 Enum.CollisionFidelity 에 대한 UnionOperation 값.

기본값: "Default"
renderFidelity: Enum.RenderFidelity
기본값: "Automatic"

반환

기본 이름 유니온 으로 결과되는 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

호출된 부분의 다음 속성이 결과 UnionOperation에 적용됩니다.

다음 이미지 비교에서, UnionAsync() 은 보라색 실린더가 있는 테이블을 사용하여 파란색 블록에서 호출됩니다. 결과적인 UnionOperation 은 두 부품의 결합된 기하구조를 나타내는 형태로 해결됩니다.

Block and cylinder parts overlapping

<figcaption>별도 부품</figcaption>
Parts joined together into a single solid union

<figcaption>Class.UnionOperation 결과</figcaption>

노트

  • 성공적인 유니언 작업 후에도 원래 부품이 손상되지 않습니다. 대부분의 경우 원래 부품을 모두 Destroy() 하고 반환된 UnionOperation 에 부모를 지정해야 합니다. BasePart 에서 호출하는 모든 부품에 대해 동일한 위치로 부모를 지정해야 합니다.
  • 기본적으로 결과 유니온은 각 부분의 속성 Color 을 존중합니다. 전체 유니온을 특정 색으로 변경하려면 UsePartColor``true 설정합니다.
  • 유니온 연산이 20,000개 이상의 삼각형을 포함하는 부품을 생성하면 20,000개의 삼각형으로 간단화됩니다.

매개 변수

parts: Instances

호출 부품과 유니온에 참여하는 개체.

collisionfidelity: Enum.CollisionFidelity

결과 Enum.CollisionFidelity 에 대한 UnionOperation 값.

기본값: "Default"
renderFidelity: Enum.RenderFidelity
기본값: "Automatic"

반환

기본 이름 유니온 으로 결과되는 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

터치된 이벤트는 부품이 다른 부품과 접촉하면 발생합니다. 예를 인스턴스, 부품A가 부품B에 부딪혀면1> Class.BasePart.Touched|PartA.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)
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