개체는 속성 에 따라 메시를 적용합니다. 다양한 옵션이 사용 가능합니다.
- 벽돌 - 블록 모양, BlockMesh와 동일
- 파일 메쉬 - 사용자가 텍스처를 적용하여 사용할 수 있는 속성을 사용하여 업로드한 메쉬
- 머리 - 캐릭터 머리 모양
- 구 - 구형 모양으로, '볼'의 'Ball'과 비슷하지만 모든 축에서 자유롭게 크기를 조정할 수 있음
- 쐐기 - 쐐기 모양, WedgePart 동일함
- 몸통 - 경사진 측면이 있는 블록으로, 사용이 중단될 예정
각 SpecialMesh.MeshType 는 사용 중인 DataModelMesh.Scale 에 따라 서로 다르게 확장되며, 자세한 내용은 DataModelMesh.Scale 페이지에서 확인하십시오.특수 메시 개체는 또한 DataModelMesh.Offset 속성을 노출합니다.
특수 메쉬를 사용할 때 부품의 모양만 변경되는 점을 기억해야 합니다.부품의 충돌 모델은 동일하게 유지됩니다.예를 들어, 캐릭터는 메쉬 지오메트리가 계정않기 때문에 메쉬 위로 올바르게 걸을 수 없습니다.
특수 메쉬 vs 메시 파트
현재 개발자가 만든 메쉬를 사용하는 방법은 두 가지입니다.그들은 SpecialMesh.FileType 에 '파일 메시'로 설정된 특수 메시를 사용하거나 MeshPart 를 사용하여 메시를 사용하고 있습니다.전체적으로 보면, MeshPart 개체가 특수 메쉬를 대체했지만, 개발자들이 알아야 할 몇 가지 차이점이 있습니다.
- BasePart.Material 는 MeshPart 를 사용할 때 메시에 올바르게 표시되지만 특수 메시를 사용할 때는 그렇지 않습니다
- MeshParts include the MeshPart.CollisionFidelity 속성, 즉 MeshPart 의 충돌 모델이 메쉬의 기하학을 재현하도록 설정될 수 있음을 의미합니다.반대로 특수 메쉬 개체는 부모의 충돌 모델 BaseParts을 사용합니다
- 스케일은 모든 축에서 속성에 따라 메시가 확장되지만, 특수 메시의 메시는 그렇지 않습니다.
- MeshId 속성은 런타임 중에 변경될 수 있습니다 SpecialMesh 또는 Script 또는 LocalScript 동안 변경될 수 있습니다.MeshId 속성의 MeshPart 는 사용할 수 없습니다.
코드 샘플
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()
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.VertexColor = Vector3.new(1, 1, 1)
mesh.Parent = part
-- parent part to workspace
part.Parent = workspace
-- create tweens
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local blackTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 0) })
local redTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 0, 0) })
local greenTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 1, 0) })
local blueTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 1) })
local resetTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 1, 1) })
-- animate
while true do
blackTween:Play()
blackTween.Completed:Wait()
redTween:Play()
redTween.Completed:Wait()
greenTween:Play()
greenTween.Completed:Wait()
blueTween:Play()
blueTween.Completed:Wait()
resetTween:Play()
resetTween.Completed:Wait()
task.wait()
end
요약
속성
부모로 지정된 에 적용될 메쉬 유형을 결정합니다.
MeshId는 표시될 메시의 콘텐츠 ID입니다.
TextureId는 메쉬에 적용할 텍스처의 콘텐츠 ID입니다.
메쉬의 오프셋은 메쉬가 표시될 BasePart.Position 에서 상대 위치를 결정하며, 메쉬가 표시될 BasePart 는 메쉬의 디스플레이 위치입니다.
메쉬의 규모는 메쉬의 원래 크기에 비해 메쉬의 크기를 결정합니다.
메시의 텍스처 색상을 변경하여 FileMesh.TextureId와 함께 사용됩니다.
속성
MeshType
개체가 적용하는 메시는 MeshType 속성에 따라 다릅니다. 다양한 옵션이 사용 가능합니다.
- 벽돌 - 블록 모양, BlockMesh와 동일
- 파일 메쉬 - 사용자가 텍스처를 적용하여 사용할 수 있는 속성을 사용하여 업로드한 메쉬
- 머리 - 캐릭터 머리 모양
- 구 - 구형 모양으로, '볼'의 'Ball'과 비슷하지만 모든 축에서 자유롭게 크기를 조정할 수 있음
- 쐐기 - 쐐기 모양, WedgePart 동일함
- 몸통 - 경사진 측면이 있는 블록으로, 사용이 중단될 예정
참고, 각 MeshType은 DataModelMesh.Scale를 사용할 때 서로 다르게 확장되며, 자세한 내용은 DataModelMesh.Scale 페이지를 참조하십시오.
코드 샘플
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.VertexColor = Vector3.new(1, 1, 1)
mesh.Parent = part
-- parent part to workspace
part.Parent = workspace
-- create tweens
local tweenInfo = TweenInfo.new(1, Enum.EasingStyle.Linear, Enum.EasingDirection.Out)
local blackTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 0) })
local redTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 0, 0) })
local greenTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 1, 0) })
local blueTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(0, 0, 1) })
local resetTween = TweenService:Create(mesh, tweenInfo, { VertexColor = Vector3.new(1, 1, 1) })
-- animate
while true do
blackTween:Play()
blackTween.Completed:Wait()
redTween:Play()
redTween.Completed:Wait()
greenTween:Play()
greenTween.Completed:Wait()
blueTween:Play()
blueTween.Completed:Wait()
resetTween:Play()
resetTween.Completed:Wait()
task.wait()
end