Class.SpecialMesh 개체는 메쉬를 BasePart에 적용하는 메쉬 유형입니다. 몇 가지 옵션이 있습니다.
- 벽돌 - 벽돌 모양, BlockMesh와 동일
- 머리 - 캐릭터 머리 모양
- 쐐기 - 쐐기 모양, WedgePart와 동일
- 몸통 - 옆으로 살짝 경사한 블록, 앞으로 살짝 경사한 블록 때문에 지원되지 않습니다.
참고, 각 SpecialMesh.MeshType는 DataModelMesh.Scale 를 사용할 때 크기를 조정하는 방법이 다릅니다. 자세한 내용은 DataModelMesh.Scale 페이지를 참조하십시오. 2>Class.DataModelMesh.Scale2> 개체에는 5>Class.DataModelMesh.Offset5>
SpecialMesh를 사용할 때 부품의 모양만 변경되는 경우가 많이 발생합니다. 부품의 콜리셔ン 모델은 여전히 동일합니다. 예를 들어, 부품의 콜리셔는 메쉬 지오메트리가 계정않기 때문에 올바르게 걸을 수 없습니다.
SpecialMesh vs MeshPart
현재 개발자가 생성한 메쉬를 사용하는 두 가지 방법이 있습니다. 그들은 SpecialMesh.FileType 을 MeshPart 로 설정한 특수 메쉬를 사용하거나, MeshPart 를 사용하여 메쉬를 생성합니다. 그러나 메��
- BasePart.Material 은 특수 메쉬 부품을 사용할 때 메쉬에 올바르게 표시되지만 특수 메쉬 부품을 사용하지 않을 때는 잘못 표시됩니다.
- MeshParts 에는 MeshPart.CollisionFidelity 속성이 포함되어 있으므로 메쉬 파트의 충돌 모델이 메쉬 파트의 지오메트리와 유사하게 설정될 수 있습니다. 반면 MeshPart 에는 부모
- Class.MeshPart의 메쉬는 모든 축에 따라 크기를 조정하지만, Size의 메쉬는 특수 메쉬의 크기에 따라 크기를 조정하지 않습니다.
- Class.FileMesh.MeshId|MeshId 속성은 SpecialMesh 또는 Script 동안 런타임에 변경될 수 있습니다. 1>Class.MeshPart.MeshId|MeshId1> 속성은 4>Class.MeshPart4> 속성을 변경할 수
코드 샘플
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
요약
속성
Class.BasePartSpecialMesh에 적용할 메쉬 유형을 결정합니다.
메쉬 ID는 표시될 메쉬의 콘텐츠 ID입니다.
텍스처 ID는 메쉬에 적용할 텍스처의 콘텐츠 ID입니다.
메쉬의 오프셋은 메쉬가 표시될 BasePart.Position 의 상대 위치를 결정합니다.
메쉬의 크기는 메쉬의 원래 크기와 비례됩니다.
Class.FileMesh.TextureId 와 함께 사용되는 메쉬의 텍스처 색상을 변경합니다.
속성
MeshType
Class.SpecialMesh 개체가 적용된 메쉬는 메쉬 유형 속성에 따라 BasePart에 달라집니다. 몇 가지 옵션이 있습니다.
- 벽돌 - 벽돌 모양, BlockMesh와 동일
- 머리 - 캐릭터 머리 모양
- 쐐기 - 쐐기 모양, 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