SpecialMesh
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Obiekt SpecialMesh zastosuje siatkę do BasePart w zależności od właściwości MeshType. Dostępne jest wiele opcji.
- Cegła - Kształt bloku, odpowiadający BlockMesh
- FileMesh - Użytkownik przesłał siatkę, równoważną FileMesh, do której można zastosować teksturę za pomocą właściwości FileMesh.TextureId
- Głowa - Kształt głowy postaci
- Kula - Kształt kuli, podobny do Part z Part.Shape 'Piłką', ale można go swobodnie zmienić na wszystkich osiach
- Klin - Kształt klina, identyczny z WedgePart
- Tułów - Blok z nachylonymi bokami, który ma zostać wycofany
Uwaga, każdy SpecialMesh.MeshType będzie skalowany inaczej podczas używania DataModelMesh.Scale, aby uzyskać więcej informacji na ten temat, zobacz stronę na DataModelMesh.Scale.Obiekt SpecialMesh również ujawnia właściwość DataModelMesh.Offset.
Ważne jest, aby pamiętać, że podczas używania specjalnej siatki zmienia się tylko wygląd części.Model kolizji części pozostaje taki sam.Na przykład postać nie będzie mogła prawidłowo chodzić po siatce, ponieważ geometria siatki nie jest brana pod konto.
Specjalna siatka vs MeshPart
Obecnie istnieją dwa sposoby korzystania z utworzonej przez dewelopera siatki.Używają specjalnej siatki z ustawieniem SpecialMesh.FileType na "FileMesh" lub za pomocą MeshPart.Chociaż ogólnie rzecz biorąc obiekt MeshPart przekroczył specjalną siatkę, istnieją pewne różnice, o których programiści powinni być świadomi.
- BasePart.Material wyświetla się prawidłowo na siatce przy użyciu MeshPart i nie przy użyciu specjalnej siatki
- MeshParts zawiera właściwość MeshPart.CollisionFidelity, co oznacza, że model kolizji z MeshPart może zostać ustawiony na przypominanie geometrycznej siatki.Przeciwnie, obiekt SpecialMesh używa modelu kolizji rodzica BaseParts
- Właściwość MeshId właściwości SpecialMesh może zostać zmieniona przez Script lub LocalScript podczas wykonywania.Właściwość MeshId właściwości a MeshPart nie może.
Przykłady kodu
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.Scale and DataModelMesh.Offset properties of the SpecialMesh are then animated using TweenService.
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()
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.VertexColor property of the SpecialMesh is then animated using TweenService.
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
Podsumowanie
Właściwości
Określa rodzaj siatki, która zostanie zastosowana do Class.BasePart``Class.SpecialMesh.
MeshId to ID zawartości siatki, która ma być wyświetlona.
TextureId to ID treści tekstury, która ma być zastosowana do siatki.
Odległość siatki określa pozycję względną z z siatką, na której siatka będzie wyświetlona.
Skala siatki określa rozmiar siatki w stosunku do jej pierwotnych wymiarów.
Zmienia odcień tekstury siatki, używany z FileMesh.TextureId.
Właściwości
MeshType
Sieć, do której odnosi się obiekt , zależy od właściwości MeshType. Dostępne jest wiele opcji.
- Cegła - Kształt bloku, odpowiadający BlockMesh
- FileMesh - Użytkownik przesłał siatkę, równoważną FileMesh, do której można zastosować teksturę za pomocą właściwości FileMesh.TextureId
- Głowa - Kształt głowy postaci
- Kula - Kształt kuli, podobny do Part z Part.Shape 'Piłką', ale można go swobodnie zmienić na wszystkich osiach
- Klin - Kształt klina, identyczny z WedgePart
- Tułów - Blok z nachylonymi bokami, który ma zostać wycofany
Uwaga, każdy typ siatki będzie skalowany inaczej podczas używania DataModelMesh.Scale, aby uzyskać więcej informacji na ten temat, zobacz stronę na DataModelMesh.Scale .
Przykłady kodu
In this code sample a BasePart is instanced with a SpecialMesh. The DataModelMesh.VertexColor property of the SpecialMesh is then animated using TweenService.
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