DataModelMesh는 메쉬 클래스를 상속하는 추상 클래스입니다.
메쉬 클래스는 부모가 되는 BaseParts 에 부품의 모양을 미리 정의된 메쉬로 변경하는 개체입니다. 메쉬 클래스는 부품의 모양만 변경하고 부품의 물리/충돌 경계는 변경하지 않습니다. 부품에 메쉬를 적
Class.MeshPart 및 CharacterMesh 클래스는 DataModelMesh에서 상속되지 않습니다.
요약
속성
메쉬의 오프셋은 메쉬가 표시될 BasePart.Position 의 상대 위치를 결정합니다.
메쉬의 크기는 메쉬의 원래 크기와 비례됩니다.
Class.FileMesh.TextureId 와 함께 사용되는 메쉬의 텍스처 색상을 변경합니다.
속성
Offset
메쉬의 오프셋은 메쉬가 표시될 BasePart.Position 의 거리를 결정합니다.
메쉬 오프셋 사용
오프셋 속성은 메쉬가 렌더링될 위치를 변경합니다. 예를 들어, 0, 5, 0의 오프셋은 메쉬를 위치의 BasePart 위에 5개의 스터드 아래로 표시합니다.
위치는 BasePart의 물리적 충돌 상자가 여전히 동일한 위치에 있음을 의미하므로 부품의 물리적 충돌 상자는 여전히 동일한 위치에 있습니다. 이는 아래 이미지에서 녹색 윤곽(a SelectionBox )이 BasePart의 내용을 보여
메쉬 오프셋의 다른 용도
메쉬 오프셋 속성에는 여러 가지 흥미로운 사용 사례가 있습니다.
- 오프셋 및 DataModelMesh.Scale를 사용하여 엔진이 어떤 물리/충돌 계산도 하지 않고 상대적으로 저렴하게 애니메이션화할 수 있습니다.
- 메쉬와 충돌 확장의 관계를 변경하십시오 (BasePart 에 의해 결정됨)
코드 샘플
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()
Scale
메쉬의 크기는 메쉬의 원래 크기와 비례됩니다.
메쉬 스케일 사용하기
사용되는 메쉬 유형에 따라 크기 조정 속성이 약간 다릅니다. BasePart의 크기는 변경되지 않으므로 부품의 물리 충돌 상자는 동일하게 유지됩니다.
- SpecialMesh 개체는 Roblox에 업로드된 메쉬의 원래 크기와 비율에 따라 SpecialMesh.FileType로 설정된 메쉬에 스케일링됩니다.
- BlockMesh 개체 또는 SpecialMesh 개체에 SpecialMesh.FileType 를 설정하여 부모의 0> Class.BasePart.Size0> 와 일치하는 유니버셜 크기 조정 방식으로 확장합니다.
- CylinderMesh 개체 또는 SpecialMesh 개체에 SpecialMesh.FileType 를 설정하여 0> Class.BasePart.Size0> 의 자식 크기에 대해 원형 크기 조정을 수행합니다. 원형 크기 조정과 길
- SpecialMesh 개체에 SpecialMesh.FileType 를 설정하여 현재 Head에 크기를 조정하지 않습니다. 개발자는 이것을 자신의 계획으로 변경하기 위해 이를 의존하지 않아야 합니다.
- SpecialMesh 개체에 SpecialMesh.FileType 를 설정하여 크기 조정을 비표준적인 방식으로 조정합니다. 개발자는 이 메쉬 입력솔바를 위한 계획으로 사용하지 않아야 합니다.
메쉬 스케일 데모
위의 동작은 다음 시연 이미지에서 볼 수 있습니다.
「벽돌」, 「쐐기」 및 「구」 메쉬에 대한 부품 크기에 비례 조정.
파일 메쉬의 원본 업로드된 메쉬와 비교하여 직선 스케일링
실린더 메쉬에 대한 유니폼 확장 없음
메쉬 스케일의 다른 용도
메쉬 오프셋 속성에는 여러 가지 흥미로운 사용 사례가 있습니다.
- DataModelMesh.Offset 및 크기 조정은 엔진이 어떤 물리/충돌 계산도 하지 않아야 할 때 상대적으로 저렴한 TweenService 를 사용하여 애니메이션할 수 있습니다.
- 메쉬와 충돌 확장의 관계를 변경하십시오 (BasePart 에 의해 결정됨)
코드 샘플
local TweenService = game:GetService("TweenService")
-- instance a part and a mesh
local part = Instance.new("Part")
part.Size = Vector3.new(4, 8, 4)
part.Position = Vector3.new(0, 4, 0)
part.Anchored = true
part.CanCollide = false
local mesh = Instance.new("SpecialMesh")
mesh.MeshType = Enum.MeshType.FileMesh
mesh.MeshId = "rbxassetid://1086413449"
mesh.TextureId = "rbxassetid://1461576423"
mesh.Offset = Vector3.new(0, 0, 0)
mesh.Scale = Vector3.new(4, 4, 4)
mesh.Parent = part
-- selection box to show part extents
local box = Instance.new("SelectionBox")
box.Adornee = part
box.Parent = part
-- parent part to workspace
part.Parent = workspace
-- animate offset and scale with a tween
local tween = TweenService:Create(
mesh,
TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out, -1, true, 0),
{ Scale = Vector3.new(1, 1, 1), Offset = Vector3.new(0, 3, 0) }
)
tween:Play()