BasePart

사용되지 않는 항목 표시

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

만들 수 없음
찾아볼 수 없음

BasePart 는 세계 내 개체를 렌더링하고 물리적으로 시뮬레이션하는 동안 추상 기본 클래스입니다. Workspace 에 있습니다.가장 일반적인 구현은 BasePartPartMeshPart 입니다.다른 사람들에는 WedgePart , SpawnLocation 및 단일тон 객체 Terrain 가 포함됩니다.일반적으로 문서가 "부분"을 언급할 때, 대부분의 BasePart 구현은 작동하고 단순히 Part 만 작동하지 않습니다.

시뮬레이션된 단단한 몸으로 그룹화되는 방법에 대한 자세한 정보는 조립을 참조하십시오.

다음을 포함하여 다양한 개체가 BasePart (Terrain)와 상호작용합니다:

  • 여러 개의 BaseParts 는 그룹화되어 Model 내에 배치되고 PVInstance:PivotTo() 를 사용하여 동시에 이동될 수 있습니다. 참조하십시오 모델 .
  • A Decal 는 스트레칭된 이미지 텍스처를 BasePart 의 얼굴에 적용하고, A Texture 는 타일링된 이미지 텍스처를 의 얼굴에 적용합니다.참조 텍스처 및 데칼.
  • A 는 부품의 표면에 렌더링됩니다. 참조하십시오 경험 내 UI 컨테이너.
  • Attachments 는 부품과 관련하여 BasePart 에 추가될 수 있으며, CFrames 을 지정합니다.이는 종종 메커니컬 제약조건 및 이동 제약조건에 설명된 물리적 개체에 의해 사용됩니다.
  • ParticleEmitter 개체는 부모인 BasePart 의 볼륨에서 균일하게 입자를 방출합니다. 참조하십시오 입자 방출기 .
  • 와 같은 경량 개체는 조명 원천에서 중앙에서 조명을 방출합니다. 에 나와 있는 것처럼 조명 소스에서.
  • 부모가 에 지정되고 이름 핸들 이 지정되면 캐릭터가 를 보유할 수 있습니다. 경험 도구 참조 경험 도구 참조 .

요약

속성

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

메서드

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

이벤트

속성

Anchored

병렬 읽기

Anchored 속성은 부품이 물리적으로 이동할 수 없는지 여부를 결정합니다.활성화되면 부품은 중력, 다른 부품 충돌, 다른 부품 겹치기 또는 기타 물리 관련 원인으로 인해 위치가 결코 변경되지 않습니다.결과적으로 고정된 부품 두 개는 서로에게 결코 Touched 이벤트를 발사하지 않습니다.

고정된 부품은 여전히 CFrame 또는 Position 를 변경하여 이동될 수 있으며, 여전히 0보다 큰 AssemblyLinearVelocityAssemblyAngularVelocity 을 가질 수 있습니다.

마지막으로, 고정되지 않은 부품이 고정된 부품과 함께 연결되는 개체(예: Weld)를 통해 연결되면 고정된 것으로 작동합니다.이러한 공동이 깨지면 부품이 다시 물리학의 영향을 받을 수 있습니다.자세한 내용은 조립을 참조하십시오.

고정된 부품에서는 네트워크 소유권을 설정할 수 없습니다.부품의 고정된 상태가 서버에서 변경되면 해당 부품의 네트워크 소유권이 영향을 받습니다.

코드 샘플

This code sample will allow a part to be clicked to toggle its anchored property. When toggled, the visual appearance of the part is updated (red means anchored, yellow means free).

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 제약 조건을 사용하는 것이 좋으며, 속도를 즉시 변경하려면 ApplyAngularImpulse() 을 사용합니다.

부품이 서버에 의해 소유되는 경우, 이 속성은 서버에서 (서버에서 아니면 또는 또는 에 설정된 것으로) 변경해야 합니다.부품이 자동 소유권을 통해 클라이언트에 소유되는 경우, 이 속성은 클라이언트 스크립트 또는 서버 스크립트에서 변경될 수 있습니다; 서버 소유 부품에 대한 클라이언트 스크립트 변경은 영향을 주지 않습니다.

AssemblyCenterOfMass

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

조립의 모든 부품의 MassPosition를 통해 계산된 위치.

어셈블리에 고정된 부품이 있는 경우 해당 부품의 중심 질량이 어셈블리의 중심 질량이 되고 어셈블리는 무한한 질량을 갖게 됩니다.

질량의 중심을 알면 조립의 안정성을 유지하는 데 도움이 됩니다.질량 중심에 적용된 힘은 각속 가속을 일으키지 않고 오직 선형입니다.중심 질량이 낮은 어셈블리는 중력의 영향으로 일어서는 시간이 향상됩니다.

AssemblyLinearVelocity

복제되지 않음
병렬 읽기

이 부품의 조립에 대한 선형 속도 벡터. 스터드당 위치 변화율입니다. AssemblyCenterOfMass 초당.

조립의 중심 질량이 아닌 지점의 속도를 알고 싶다면 GetVelocityAtPosition()를 사용하십시오.

직접 속도를 설정하면 비현실적인 움직임이 발생할 수 있습니다.VectorForce 제약 조건을 사용하는 것이 좋으며, 속도를 즉시 변경하려면 ApplyImpulse()를 사용합니다.

부품이 서버에 의해 소유되는 경우, 이 속성은 서버에서 (서버에서 아니면 또는 또는 에 설정된 것으로) 변경해야 합니다.부품이 자동 소유권을 통해 클라이언트에 소유되는 경우, 이 속성은 클라이언트 스크립트 또는 서버 스크립트에서 변경될 수 있습니다; 서버 소유 부품에 대한 클라이언트 스크립트 변경은 영향을 주지 않습니다.

AssemblyMass

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

이 부분의 조립에 있는 모든 BaseParts의 질량의 합계.부품이 Massless 이고 조립의 루트 부품이 아닌 부품은 AssemblyMass 에 기여하지 않습니다.

어셈블리에 고정된 부품이 있는 경우 어셈블리의 질량이 무한으로 간주됩니다.매스가 큰 고정되지 않은 어셈블리 간의 제약 조건과 다른 물리적 상호 작용은 불안정을 일으킬 수 있습니다.

AssemblyRootPart

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

이 속성은 조립의 루트 부분을 나타내기 위해 자동으로 선택된 BasePart를 나타냅니다.개발자가 GetRootPart()

루트 부분은 조립의 부품 RootPriority를 변경하여 변경할 수 있습니다.

모두 동일한 AssemblyRootPart를 공유하는 부품은 동일한 어셈블리에 있습니다.

루트 부품에 대한 자세한 정보는 어셈블리를 참조하십시오.

AudioCanCollide

병렬 읽기

AudioCanCollide 부품이 조명에 대해 CastShadow와 유사하게 물리적으로 오디오 시뮬레이션과 상호작용할지 결정합니다.

비활성화되면 오디오가 부품을 통과하여 전달되며 차단되거나 반사되지 않습니다.

BackSurface

병렬 읽기

BackSurface 속성은 부품의 양의 Z 방향에 사용되는 표면 유형을 결정합니다.두 부품의 표면이 서로 옆에 배치되면 그 사이에 공동을 생성할 수 있습니다.

BottomSurface

병렬 읽기

BottomSurface 속성은 부품의 음의 Y 방향에 사용되는 표면 유형을 결정합니다.두 부품의 표면이 서로 옆에 배치되면 그 사이에 공동을 생성할 수 있습니다.

BrickColor

복제되지 않음
병렬 읽기

이 속성은 부품의 색상을 결정합니다.부품에 Material 가 있으면 재료 텍스처를 렌더링할 때 사용되는 색상도 결정됩니다.색상에 대한 더 많은 제어를 위해 Color 속성을 사용할 수 있으며, 이 속성은 가장 가까운 BrickColor를 사용합니다.

부품의 다른 시각적 속성은 TransparencyReflectance에 의해 결정됩니다.

CFrame

병렬 읽기

CFrame 속성은 세계에서 위치와 방향을 모두 결정합니다 BasePart .그것은 기하학에서 임의의 참조 위치로 작동하지만 ExtentsCFrame 는 실제 물리 중심의 CFrame을 나타냅니다.

부품에 CFrame를 설정할 때, 다른 연결된 부품도 부품에 대해 이동되지만, 플레이어의 캐릭터를 순간이동할 때와 같이 전체 모델을 이동하려면 PVInstance:PivotTo()를 사용하는 것이 좋습니다.

설정 과는 달리, 설정 는 항상 부품을 정확히 지정된 로 이동합니다; 즉, 서로 겹치는 부품이 없으면 물리 해결기가 겹치는 것을 해결하려고 시도하고 두 부품이 겹치지 않으면 됩니다.

부품의 위치에 관해 추적하기 위해 CFrame , Attachment 가 유용할 수 있습니다.

코드 샘플

This code sample demonstrates setting a part's CFrame in many different ways. It showcases how to create and compose CFrame values. It references a sibling part called "OtherPart" for demonstrating relative positioning.

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 부품이 다른 부품과 물리적으로 상호작용할지 여부를 결정합니다.비활성화되면 다른 부품이 중단되지 않고 부품을 통과할 수 있습니다.장식에 사용되는 부품은 일반적으로 물리 엔진에서 고려할 필요가 없기 때문에 CanCollide.

부품이 Anchored 이고 비활성화된 CanCollide 가 있으면, 결국 Workspace.FallenPartsDestroyHeight 에 의해 세계에서 떨어져 파괴될 수 있습니다.

CanCollide가 비활성화되면 부품이 여전히 Touched 이벤트(그리고 다른 부품에 닿는 다른 부품도)를 발사할 수 있습니다.CanTouch로 이를 비활성화할 수 있습니다.

충돌에 대한 자세한 정보는 충돌을 참조하십시오.

코드 샘플

This code sample shows how a part can fade away when touched by a Humanoid then reappear a moment after to create a passable door.

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

병렬 읽기

이 속성은 부품이 GetPartBoundsInBox 또는 Raycast와 같은 공간 쿼리 작업에서 고려되는지 여부를 결정합니다.효과가 있으려면 가 비활성화되어야 하고 공간 쿼리 함수에는 의 부품이 포함되지 않습니다.

이 속성 이상으로, 공간 쿼리 함수를 호출할 때 OverlapParams 또는 RaycastParams 개체를 사용하여 지정된 부품의 하위 부품을 제외할 수도 있습니다.

CanTouch

병렬 읽기

이 속성은 부품에서 TouchedTouchEnded 이벤트가 발생하는지 여부를 결정합니다. 이면, 다른 터치 부품도 터치 이벤트가 발생하도록 설정해야 합니다.false 경우 부품에 대한 터치 이벤트를 설정할 수 없으며 이를 시도하면 오류가 발생합니다.마찬가지로, 터치 이벤트가 연결된 후에 속성이 false로 설정되면 이벤트가 연결 해제되고 TouchTransmitter가 제거됩니다.

이 충돌 논리는 충돌 그룹을 존중하도록 설정할 수 있으며 Workspace.TouchesUseCollisionGroups을 통해 설정할 수 있습니다.만약 true , 충돌하지 않는 그룹의 부품은 충돌 터치 이벤트를 모두 무시하여 이 속성을 무효로 만듭니다.

성능

이러한 부품은 부품 간 충돌을 계산할 필요가 없으므로 및 를 모두 설정한 부품에 약간의 성능 향상이 있습니다.그러나 여전히 RaycastsOverlapParams 쿼리에 의해 타격을 받을 수 있습니다.

CastShadow

병렬 읽기

부품이 그림자를 던지는지 여부를 결정합니다.이 속성을 지정된 부품에 대해 비활성화하면 해당 부품에 캐스트된 그림자에 시각적 결함이 발생할 수 있습니다.

이 속성은 성능 향상을 위해 설계되지 않았지만 복잡한 장면에서 특정 부분에서 전략적으로 비활성화하면 이행향상될 수 있습니다.시각적 아티팩트의 가능성으로 인해 대부분의 상황에서 모든 부품에 활성화된 상태로 유지하는 것이 좋습니다.

CenterOfMass

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

속성은 부품의 중량 중심의 로컬 위치를 설명합니다.이것이 단일 부품 조립이면, 이것은 세계 공간에서 로컬로 변환된 AssemblyCenterOfMass입니다.간단한 Parts 에서 질량의 중심은 항상 (0, 0, 0) 이지만, WedgePart 또는 MeshPart 에 따라 다를 수 있습니다.

CollisionGroup

복제되지 않음
병렬 읽기

CollisionGroup 속성은 부품의 충돌 그룹 이름(최대 100자)을 설명합니다.부품은 기본 그룹인 이름이 "Default" 인 그룹에서 시작됩니다.이 값은 비어있을 수 없습니다.

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

코드 샘플

This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().

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

복제되지 않음
병렬 읽기

Color 속성은 부품의 색상을 결정합니다.부품에 Material 가 있으면 재료 텍스처를 렌더링할 때 사용되는 색상도 결정됩니다.

이 속성이 설정되면 BrickColor 는 이 Color 값에 가장 가까운 일치 항목을 사용합니다.

부품의 다른 시각적 속성은 TransparencyReflectance에 의해 결정됩니다.

코드 샘플

This code sample colors a player's entire character based on how much health they have. It generates a color based on their max health, then sets the color properties of objects within their character, removing any extra objects.

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

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

CurrentPhysicalProperties는 부품의 현재 물리적 속성을 나타냅니다.부품당 물리적 속성에 대한 사용자 지정 값, 사용자 지정 재료 및 재료 재정의를 설정할 수 있습니다.Roblox 엔진은 부품의 유효한 물리적 속성을 결정할 때 더 세분화된 정의를 우선시합니다.다음 목록의 값은 가장 높은 우선순위에서 가장 낮은 우선순위까지 순서가 지정됩니다:

  • 부품의 사용자 지정 물리적 속성
  • 부품의 사용자 지정 물질의 특정 물리적 속성
  • 부품의 재료 재정의의 사용자 지정 물리적 속성
  • 부품의 물질 기본 물리적 속성

CustomPhysicalProperties

병렬 읽기

CustomPhysicalProperties 부품의 다양한 물리적 특성, 예를 들어 밀도, 마찰 및 엘라스틱을 사용자 정의할 수 있습니다.

활성화되면 이 속성을 사용하여 이러한 물리적 속성을 구성할 수 있습니다.비활성화되면 이러한 물리적 속성은 부품의 Material에 의해 결정됩니다.

코드 샘플

This code sample demonstrates how to set the CustomPhysicalProperties property of a part.

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

병렬 읽기

When true , and when Workspace.FluidForces 가 활성화되면 물리 엔진이 이 BasePart 에서 공기역학 힘을 계산하게 합니다.

ExtentsCFrame

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

물리적 확장의 CFrame 의 물리적 중심을 나타내는 BasePart 의 물리적 확장.

ExtentsSize

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

물리 엔진에서 예를 들어 충돌 감지에서 보는 BasePart의 실제 물리적 크기, 예를 들어 충돌 감지에서 보는 물리 엔진에서 예를 들어 충돌 감지에서 보는 실제 물리적 크기, 예를 들어 충돌 감지에서 보는

FrontSurface

병렬 읽기

FrontSurface 속성은 부품의 음의 Z 방향에 사용되는 표면 유형을 결정합니다.두 부품의 표면이 서로 옆에 배치되면 그 사이에 공동을 생성할 수 있습니다.

LeftSurface

병렬 읽기

LeftSurface 속성은 부품의 음의 X 방향에 사용되는 표면 유형을 결정합니다.두 부품의 표면이 서로 옆에 배치되면 그 사이에 공동을 생성할 수 있습니다.

LocalTransparencyModifier

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

LocalTransparencyModifier 속성은 로컬 클라이언트에만 표시되는 배수인 Transparency입니다.클라이언트에서 서버로 복제되지 않으며 플레이어가 첫 인싸 모드로 확대할 때 특정 클라이언트에서 캐릭터의 신체 부분을 볼 수 없는 경우와 같이 부품이 특정 클라이언트에서 렌더링되지 않아야 할 때 유용합니다.

이 속성은 다음 수식을 통해 로컬 부분의 투명도를 01 사이의 결과 값으로 수정합니다.

1 - (( 1 - Transparency ) × ( 1 - LocalTransparencyModifier ))


<th><code>로컬 투명도 수정자</code></th>
<th>서버 측</th>
<th>클라이언트 측</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>0.5</code></td>
<td><code>0</code></td>
<td><code>0.5</code></td>
<td><code>0.5</code></td>
</tr>
<tr>
<td><code>0.5</code></td>
<td><code>0.25</code></td>
<td><code>0.5</code></td>
<td><code>0.625</code></td>
</tr>
<tr>
<td><code>0.5</code></td>
<td><code>0.5</code></td>
<td><code>0.5</code></td>
<td><code>0.75</code></td>
</tr>
<tr>
<td><code>0.5</code></td>
<td><code>0.75</code></td>
<td><code>0.5</code></td>
<td><code>0.875</code></td>
</tr>
<tr>
<td><code>0.5</code></td>
<td><code>1</code></td>
<td><code>0.5</code></td>
<td><code>1</code></td>
</tr>
</tbody>
클래스.BasePart.Transparency|Transparency

Locked

병렬 읽기

속성은 부품(또는 부품이 포함된 경우)이 Studio에서 클릭하여 선택될 수 있는지 여부를 결정합니다. 이 속성은 현재 편집되지 않는 환경 모델 내의 부품에서 가장 자주 활성화됩니다.

코드 샘플

This code sample uses the concept of recursion to unlock all parts that are a descendant of a model.

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

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

는 부품의 용량과 밀도의 산물을 설명하는 읽기 전용 속성입니다. 이 함수에 의해 반환됩니다.

  • 부품의 용량은 사용된 종류에 따라 다르지만 및 , 예를 들어 에 따라 결정됩니다.
  • 부품의 밀도는 지정된 경우 Material 또는 CustomPhysicalProperties에 의해 결정됩니다.

Massless

병렬 읽기

이 속성이 활성화되면 부품은 질량이나 관성이 있는 다른 부품에 접합되는 한 조립의 총 질량이나 관성에 기여하지 않습니다.

부품이 AssemblyRootPart에 따라 자체 루트 부품인 경우, 이 부품은 무시되며 여전히 정상적인 부품처럼 조립에 질량과 중력을 기여합니다.질량이 없는 부품은 조립의 모든 부품이 질량이 없는 경우가 아니면 조립 루트 부품이 되어서는 안됩니다.

이것은 자동차의 핸들링이나 간단한 충돌 메시에 영향을 주지 않으면서 선택적 액세서리나 마스레스 렌더 메시가 접합된 간단한 충돌 메시에 접합된 것과 같은 것에 유용할 수 있습니다.

또한 참조하십시오 어셈블리 , 루트 부품이 무엇이고 어떻게 사용하는지 설명하는 기사.

병렬 읽기

Material 속성을 사용하면 부품의 텍스처와 기본 물리적 속성(CustomPhysicalProperties 가 설정되지 않은 경우)을 설정할 수 있습니다.기본 재료 Plastic 는 매우 가벼운 텍스처를 가지고 있으며, 재료 SmoothPlastic 는 전체텍스처가 없습니다.일부 재료 텍스처, DiamondPlateGranite 는 매우 눈에 띄는 텍스처를 가지고 있습니다.각 재료의 텍스처는 특히 Foil 태양광을 다르게 반사합니다.

이 속성을 설정한 다음 CustomPhysicalProperties를 활성화하면 재료의 기본 물리적 속성이 사용됩니다.예를 인스턴스, DiamondPlate 는 매우 밀도가 높은 재료이고, Wood 는 매우 가볍습니다.부품의 밀도는 지형 물에 떠있을지 여부를 결정합니다.

반사율(Reflectance와 유사)과 시점 왜곡을 적용하여 중간 그래픽 설정에서 재료 변경 렌더링 행동을 조정하고 Glass 적당한 그래픽 설정에서 재료 변경 렌더링 행동을 조정합니다.효과는 구형 모양의 부품에서 특히 두드러집니다.Glass 부품 뒤에 있는 반투명 부품은 표시되지 않습니다.

MaterialVariant

복제되지 않음
병렬 읽기

시스템은 지정된 이름과 유형의 MaterialVariant 인스턴스를 검색하여 검색합니다.The system searches the instance with the specified MaterialVariant name and Material 입력.일치하는 MaterialVariant 인스턴스를 성공적으로 찾으면 해당 인스턴스를 사용하여 기본 재료를 대체합니다.기본 재료는 내장 재료 또는 에 지정된 재정의 재료일 수 있습니다.

Orientation

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

속성은 X, Y 및 Z축을 사용하여 부품의 회전을 도 단위로 설명합니다.회전은 Y 에서 X 에 적용되고, Z 에서는 순서대로 적용됩니다.이는 적절한 유클리드 각도와 달리 대신 타이트-브라이언 각도를 사용하여 회전 , 피치 을 설명합니다.

이 속성이 다른 순서로 회전을 적용하는 CFrame.Angles() 생성자와 어떻게 다른지 알아보는 것도 가치가 있습니다 ( Z > Y > X ).부품의 회전을 더 잘 제어하려면 CFrame 대신 설정하는 것이 좋습니다.

이 속성을 설정할 때, 이 부분에 연결된 모든 Welds 또는 Motor6Ds 가 일치하는 C0 또는 C1 속성을 업데이트하여 부품이 연결된 다른 부품과 비교하여 이동할 수 있도록 합니다.WeldConstraints 이동 중에 일시적으로 비활성화되고 다시 활성화되기도 합니다.

코드 샘플

This code sample rotates a part continually on the Y axis.

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

병렬 읽기

이 속성은 부품의 피벗 오프셋을 지정하며, CFrameBasePart:GetPivot() 와 동일하고 BasePart.CFrameBasePart.PivotOffset 로 곱한 것입니다.

이는 피벗을 로컬 공간에 위치로 설정하는 데 편리하지만, 부품의 피벗을 세계 공간에 위치로 설정하는 것은 다음과 같이 수행할 수 있습니다.


local Workspace = game:GetService("Workspace")
local part = Workspace.BluePart
local desiredPivotCFrameInWorldSpace = CFrame.new(0, 10, 0)
part.PivotOffset = part.CFrame:ToObjectSpace(desiredPivotCFrameInWorldSpace)

코드 샘플

This code sample shows a custom function for resetting the pivot of a model back to the center of that model's bounding box.

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)

This code sample creates a clock at the origin with a minute, second, and hour hand, and makes it tick, displaying the local time.

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

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

Position 속성은 Vector3를 사용하여 부품의 좌표를 설명합니다.부품의 위치 CFrame 를 반영하지만 설정할 수도 있습니다.

이 속성을 설정할 때, 이 부분에 연결된 모든 Welds 또는 Motor6Ds 가 일치하는 C0 또는 C1 속성을 업데이트하여 부품이 연결된 다른 부품과 비교하여 이동할 수 있도록 합니다.WeldConstraints 이동 중에 일시적으로 비활성화되고 다시 활성화되기도 합니다.

ReceiveAge

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

부품의 물리학이 로컬 클라이언트나 서버에서 마지막으로 업데이트된 시간을 초 단위로 나타냅니다.이 값은 부품에 물리가 없을 때 0 이고, Anchoredtrue입니다.

Reflectance

병렬 읽기

Reflectance 속성은 부품이 하늘을 얼마나 반영하는지 결정합니다.값 0 은 부품이 전체반사되지 않는다는 것을 나타내고, 값 1 은 부품이 완전히 반사되어야 한다는 것을 나타냅니다.

부품이 완전히 투명한 경우에만 Transparency 반사가 영향을 받지 않으며, 그렇지 않으면 반사가 전체표시되지 않습니다.반사율은 부품의 Material에 따라 무시될 수도 있고 무시될 수도 없습니다.

ResizeIncrement

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

ResizeIncrement 속성은 Resize() 메서드에서 허용하는 가장 작은 크기 변경을 설명하는 읽기 전용 속성입니다.예를 인스턴스, 는 이 집합을 로 설정하고, 는 개별 트러스 섹션의 크기가 2×2×2이기 때문에 이 집합을 로 설정합니다.

ResizeableFaces

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

ResizeableFaces 속성은 부품의 크기를 조정할 수 있는 여러 얼굴을 설명하기 위해 Faces 개체를 사용합니다대부분의 구현에서 BasePart , 예를 들어 PartWedgePart , 이 속성에는 모든 얼굴이 포함됩니다.그러나, 는 그러한 부품의 종류가 길이의 두 차원을 가져야 하기 때문에 설정 을 두 개로만 설정할 것입니다.

이 속성은 부품을 구축하고 조작하는 데 사용되는 도구와 가장 일반적으로 사용되며 해당 컨텍스트 외부에서는 사용 빈도가 적습니다.부품에서 크기를 조정할 수 있는 얼굴에만 핸들을 표시하려면 Handles 클래스, Handles.Faces 속성이 있는 클래스는 이 속성과 함께 사용하여 표시할 수 있습니다.

코드 샘플

This code sample creates a Handles object and shows how to set the Faces property of the object. It also references ResizeableFaces of a part. Try placing this script in multiple kinds of parts to see how ResizeableFaces varies.

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 방향에 사용되는 표면 유형을 결정합니다.두 부품의 표면이 서로 옆에 배치되면 그 사이에 공동을 생성할 수 있습니다.

RootPriority

병렬 읽기

이 속성은 루트 부분 정렬에 대한 모든 다른 규칙보다 우선하는 -127127 사이의 정수입니다.Anchored 및 동일한 Massless 값을 공유하는 여러 부품을 고려할 때, 더 높은 RootPriority 가진 부품이 더 낮은 RootPriority 부품보다 우선 순위가 높습니다.

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

또한 참조하십시오 어셈블리 , 루트 부품이 무엇이고 어떻게 사용하는지 설명하는 기사.

Rotation

복제되지 않음
병렬 읽기

세 축에 대한 부품의 회전 정도(도).

이 속성을 설정할 때, 이 부분에 연결된 모든 Welds 또는 Motor6Ds 가 일치하는 C0 또는 C1 속성을 업데이트하여 부품이 연결된 다른 부품과 비교하여 이동할 수 있도록 합니다.WeldConstraints 이동 중에 일시적으로 비활성화되고 다시 활성화되기도 합니다.

복제되지 않음
병렬 읽기

부품의 속성은 시각적 차원을 결정하지만 물리 엔진에서 사용하는 실제 크기, 예를 들어 충돌 감지 에서는 충돌 감지에 사용됩니다.개별 차원(길이, 너비, 높이)은 최저 0.001 최대 2048 까지 낮을 수 있습니다.크기 차원 아래의 크기 차원은 부품의 크기가 인 것처럼 시각적으로 표시됩니다.

부품의 Size 는 다양한 추가 방식으로 사용됩니다:

  • GetMass()에 의해 주어진 질량에 영향을 주기 위해.
  • By ParticleEmitter 에서 입자가 생성되는 영역을 결정하기 위해.
  • By BlockMesh 를 통해 부분적으로 렌더링된 직사각형 프리즘을 결정합니다.
  • 특정 SpecialMesh 에 의해 렌더링된 메시의 크기를 결정하기 위해 MeshTypes 에 의해
  • By SurfaceLight 에 의해 조명할 공간을 결정합니다.

코드 샘플

This code sample constructs a pyramid by stacking parts that get progressively smaller. It also colors the parts so they blend between a start color and end color.

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 방향에 사용되는 표면 유형을 결정합니다.두 부품의 표면이 서로 옆에 배치되면 그 사이에 공동을 생성할 수 있습니다.

Transparency

병렬 읽기

Transparency 속성은 부품의 가시성을 제어하며, 0에서 1까지의 규모에서 0가 완전히 보이고 1는 완전히 보이지 않습니다(불투명).

완전히 투명한 부품은 전체렌더링되지 않지만 부분적으로 투명한 개체에는 상당한 렌더링 비용이 듭니다.불투명한 부품이 많으면 이행영향을 줄 수 있습니다.

투명한 부품이 겹치면 랜더링 순서가 예측할 수 없게 작동할 수 있으므로 반투명 부품이 겹치지 않도록 해야 합니다.

또한 다음을 참조하십시오 LocalTransparencyModifier 로컬 클라이언트에만 표시되는 배수로 Transparency 에.

코드 샘플

This code sample shows how a part can fade away when touched by a Humanoid then reappear a moment after to create a passable door.

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()

메서드

AngularAccelerationToTorque

매개 변수

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

반환

ApplyAngularImpulse

()

이 부품의 조립에 즉시 각도 힘 펄스를 적용하여 조립이 회전하게 합니다.

충격으로부터 결과적으로 발생하는 각속도는 조립의 mass에 의존합니다.따라서 더 커다란 어셈블리를 이동하려면 더 높은 임펄스가 필요합니다.충동은 폭발이나 충돌과 같이 즉시 적용되는 힘을 원하는 경우에 유용합니다.

부품이 서버에 의해 소유되는 경우, 이 함수는 서버에서 호출되어야 합니다(서버에서 아니면 또는 설정된 또는 에서 호출됨).부품이 자동 소유권을 통해 클라이언트에 소유되어 있는 경우, 이 함수는 클라이언트 스크립트에서 호출될 수도 있고 서버 스크립트에서 호출될 수도 있습니다; 서버 소유 부품에 대해 클라이언트 스크립트에서 호출하는 것은 효과가 없습니다.

매개 변수

impulse: Vector3

조립에 적용할 각도 임펄스 벡터.

기본값: ""

반환

()

ApplyImpulse

()

이 함수는 이 부품의 조립에 즉시 힘 펄스를 적용합니다.

힘은 조립의 center of mass에 적용되므로 결과 이동은 직선일 뿐입니다.

충격으로 인해 발생하는 결과 속도는 조립의 mass에 의존합니다.따라서 더 커다란 어셈블리를 이동하려면 더 높은 임펄스가 필요합니다.충동은 폭발이나 충돌과 같이 즉시 적용되는 힘을 원하는 경우에 유용합니다.

부품이 서버에 의해 소유되는 경우, 이 함수는 서버에서 호출되어야 합니다(서버에서 아니면 또는 설정된 또는 에서 호출됨).부품이 자동 소유권을 통해 클라이언트에 소유되어 있는 경우, 이 함수는 클라이언트 스크립트에서 호출될 수도 있고 서버 스크립트에서 호출될 수도 있습니다; 서버 소유 부품에 대해 클라이언트 스크립트에서 호출하는 것은 효과가 없습니다.

매개 변수

impulse: Vector3

조립에 적용할 선형 임펄스 벡터.

기본값: ""

반환

()

ApplyImpulseAtPosition

()

이 함수는 세계 공간의 지정된 위치에서 이 부품의 조립에 즉시 힘 파동을 적용합니다.

위치가 조립의 center of mass에 있지 않으면 임펄스가 위치 및 회전 이동을 유발합니다.

충격으로 인해 발생하는 결과 속도는 조립의 mass에 의존합니다.따라서 더 커다란 어셈블리를 이동하려면 더 높은 임펄스가 필요합니다.충동은 개발자가 즉시 적용되는 힘, 즉 폭발이나 충돌을 원하는 경우에 유용합니다.

부품이 서버에 의해 소유되는 경우, 이 함수는 서버에서 호출되어야 합니다(서버에서 아니면 또는 설정된 또는 에서 호출됨).부품이 자동 소유권을 통해 클라이언트에 소유되어 있는 경우, 이 함수는 클라이언트 스크립트에서 호출될 수도 있고 서버 스크립트에서 호출될 수도 있습니다; 서버 소유 부품에 대해 클라이언트 스크립트에서 호출하는 것은 효과가 없습니다.

매개 변수

impulse: Vector3

조립에 적용할 임펄스 벡터.

기본값: ""
position: Vector3

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

기본값: ""

반환

()

CanCollideWith

병렬 쓰기

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

매개 변수

part: BasePart

충돌 가능성을 확인하는 지정된 부품.

기본값: ""

반환

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

CanSetNetworkOwnership

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

함수의 반환 값은 오류를 발견하지 않고 BasePart:SetNetworkOwner() 또는 BasePart:SetNetworkOwnershipAuto()를 호출할 수 있는지 여부를 확인합니다.네트워크 소유권을 수정하거나 읽을 수 있으면 진실을 반환하고, 수정할 수 없는 이유를 문자열로 반환합니다.


반환

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

코드 샘플

This example checks whether or not the network ownership of the first BasePart named Part in the Workspace can be set.

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이면 이 함수는 기본 부품에 단단히 연결된 조립의 모든 부품을 반환합니다.

강성 관절

조인이 두 부품을 함께 연결할 때 , 조인은 물리학이 완전히 잠겨 있으면 뻣뻣합니다.다음 공동 유형에만 적용됩니다:

매개 변수

recursive: boolean

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

기본값: false

반환

Instances

GetJoints

Instances
병렬 쓰기

이 부분에 연결된 모든 조인 또는 제약 조건을 반환합니다.


반환

Instances

부품에 연결된 모든 관절 또는 제약 조건의 배열.

GetMass

병렬 쓰기

GetMass 는 읽기 전용 Mass 속성의 값을 반환합니다.

이 함수는 질량 속성보다 먼저 도입되었으며 이전 버전과의 호환성을 위해 계속 지원됩니다. 질량 속성을 직접 사용해야 합니다.


반환

부품의 질량.

코드 샘플

This example creates a new part, myPart, in the game's Workspace, with dimensions 4x6x4 studs. The part is also anchored.

Then, myMass is set to equal the mass of the new part. The mass of the part is printed at the end of the print statement:

My part's mass is ...

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 입니다.


반환

이 부분의 네트워크 소유자인 현재 플레이어 또는 서버의 경우 nil.

GetNetworkOwnershipAuto

병렬 쓰기

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


반환

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

GetNoCollisionConstraints

Instances

반환

Instances

GetRootPart

병렬 쓰기

어셈블리의 기본 부분을 반환합니다.부품 조립을 이용하여 이동할 때 CFrame .이 기본 부분을 이동하는 것이 중요합니다(이에 따라 연결된 다른 모든 부분도 이동됩니다).자세한 내용은 조립 문서에서 확인할 수 있습니다.

이 함수는 AssemblyRootPart 속성보다 먼저 시작되었으며 이전 버전과의 호환성을 위해 계속 지원되지만 직접 AssemblyRootPart 을 사용해야 합니다.


반환

어셈블리의 기본 부분(함께 연결된 부품 컬렉션).

GetTouchingParts

Instances

이 부분과 물리적으로 상호작용하는 모든 부분의 테이블을 반환합니다.부품 자체에 CanCollide가 false로 설정되어 있으면, 이 함수는 부품에 연결된 TouchInterest 개체가 없으면 빈 테이블을 반환합니다(즉, 부품의 터치 이벤트에 무언가가 연결됨).인접하지만 교차하지 않는 부품은 접촉으로 간주되지 않습니다.이 함수는 위에 설명된 유연성을 제공하고 위의 특별한 WorldRoot:GetPartsInPart() 규칙을 피하는 TouchInterest 함수보다 이전합니다.대신 WorldRoot:GetPartsInPart()


반환

Instances

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

GetVelocityAtPosition

병렬 쓰기

이 부품과 관련하여 지정된 위치에서 부품의 선형 속도를 반환합니다.루트 부품이 아닌 조립의 선형 속도를 식별하는 데 사용할 수 있습니다.어셈블리에 각속도가 없으면 선형 속도는 항상 모든 위치에서 동일합니다.

매개 변수

position: Vector3
기본값: ""

반환

IsGrounded

병렬 쓰기

개체가 장소에 유지될 부품에 연결되어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.조립에 Anchored 부품이 있는 경우 다른 모든 부품이 지상됩니다.


반환

개체가 장소에 고정될 부품에 연결되었는지 여부.

Resize

Studio 크기 조정 도구를 사용하는 것과 마찬가지로 개체의 크기를 변경합니다.

매개 변수

normalId: Enum.NormalId

크기를 조정할 측면.

기본값: ""
deltaAmount: number

지정된 측면에서 성장/수축할 정도.

기본값: ""

반환

부품이 크기가 조정되었는지 여부.

SetNetworkOwner

()

지정된 플레이어를 네트워크 소유자로 설정하여 이 및 모든 연결된 부품에 대해 네트워크 소유권을 부여합니다.플레이어Instance가 nil, 서버는 플레이어가 아니라 소유자가 됩니다.

매개 변수

playerInstance: Player

부품에 대한 네트워크 소유권을 플레이어에 부여하는 중.

기본값: "nil"

반환

()

SetNetworkOwnershipAuto

()

게임 엔진이 부품의 물리학을 처리할 클라이언트 또는 서버 중 하나를 동적으로 결정하게 합니다.


반환

()

TorqueToAngularAcceleration

매개 변수

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

반환

IntersectAsync

생성

부품과 주어진 배열의 다른 부품의 교차 기하학에서 새로운 IntersectOperation 를 생성합니다.오직 Parts 만 지원되며 Terrain 또는 MeshParts 은 지원되지 않습니다.Clone() 와 비슷하게, 반환된 개체에는 설정된 Parent 이 없습니다.

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

다음 이미지 비교에서 IntersectAsync() 는 파란색 블록이 포함된 테이블을 사용하여 보라색 블록에 호출됩니다.결과 IntersectOperation 는 두 부품의 교차 기하학의 형태로 해결됩니다.

Two block parts overlapping

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

<figcaption>결과 클래스.IntersectOperation</figcaption>

노트

  • 성공적인 교차 작업 후에도 원래 부품은 그대로 유지됩니다.대부분의 경우, 원래 부품 전체를 Destroy() 모두 복사하고 반환된 IntersectOperation 를 호출하는 BasePart 와 동일한 위치에 부모로 지정해야 합니다.
  • 기본적으로 결과 교차점의 얼굴 색상은 원래 부품의 Color 속성에서 빌려옵니다.전체 교차점을 특정 색으로 변경하려면 UsePartColor 속성을 true로 설정합니다.
  • 교차 작업으로 인해 20,000개 이상의 삼각형이 포함된 부품이 생성되면 20,000개의 삼각형으로 간소화됩니다.

매개 변수

parts: Instances

교차점에 참여하는 개체.

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

반환

기본 이름 IntersectOperation 을 사용하여 결과가 나타납니다 교차 .

SubtractAsync

생성

부품에서 지정된 배열에 있는 부품의 기하학을 빼고 새로운 UnionOperation를 부품에서 만듭니다.오직 Parts 만 지원되며 Terrain 또는 MeshParts 은 지원되지 않습니다.Clone() 와 비슷하게, 반환된 개체에는 설정된 Parent 이 없습니다.

빼기로 인해 결과 연합이 비어있을 수 없음을 알아두십시오. 작업이 완전히 비어있는 기하학으로 이어지면 실패합니다.

다음 이미지 비교에서 SubtractAsync() 는 보라색 블록이 포함된 테이블을 사용하여 파란색 실린더에 호출됩니다.결과 UnionOperation 는 블록의 기하학을 실린더의 것에서 생략하는 형태로 해결됩니다.

Longer block overlapping a cylinder

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

<figcaption>결과 클래스.UnionOperation </figcaption>

매개 변수

parts: Instances

뺄셈에 참여하는 개체.

기본값: ""
collisionfidelity: Enum.CollisionFidelity

결과 Enum.CollisionFidelity 에 대한 값 UnionOperation.

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

반환

기본 이름 UnionOperation 으로 결과가 나타납니다 연합 .

코드 샘플

This example demonstrates how to subtract part(s) from another BasePart to form a negated 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 또는 MeshParts 은 지원되지 않습니다.Clone() 와 비슷하게, 반환된 개체에는 설정된 Parent 이 없습니다.

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

다음 이미지 비교에서 UnionAsync() 는 보라색 실린더가 포함된 테이블을 사용하여 파란색 블록에서 호출됩니다.결과 UnionOperation 는 두 부품의 결합 기하학의 형태로 해결됩니다.

Block and cylinder parts overlapping

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

<figcaption>결과 클래스.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 으로 결과가 나타납니다 연합 .

코드 샘플

This example demonstrates how to combine the geometry of one BasePart with the geometry of other part(s) to form a 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

코드 샘플

This code sample creates a BillboardGui on a part that displays the number of parts presently touching it.

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 에 부딪히면, PartA.Touched파트B 로 발사하고, PartB.Touched파트A 로 발사합니다.

이 이벤트는 물리적 이동의 결과로만 발생하므로, 부품이 다른 부품과 겹치도록 CFrame 속성이 변경된 경우에는 발생하지 않습니다.이것은 관련된 부품 중 하나 이상이 충돌 시간에 없어야 한다는 것을 의미합니다.

이 이벤트는 Workspace.TouchesUseCollisionGroups와 함께 작동하여 충돌 그룹이 감지에 대해 인정되는지 여부를 지정합니다.

매개 변수

otherPart: BasePart

지정된 부품과 접촉한 다른 부품.


코드 샘플

This code sample creates a BillboardGui on a part that displays the number of parts presently touching it.

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)

This code sample demonstrates how to connect the BasePart.Touched event of multiple parts in a Model to one function.

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