SpecialMesh

Pokaż przestarzałe

*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
  • Cylinder - Cylinder identyczny z Part z 'Cylinderem' Part.Shape
  • 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.

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.

Mesh Offset and 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.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.

Mesh VertexColor

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

  • Odczyt równoległy

    Określa rodzaj siatki, która zostanie zastosowana do Class.BasePart``Class.SpecialMesh.

Właściwości odziedziczeni z: FileMesh
  • MeshId:ContentId
    Odczyt równoległy

    MeshId to ID zawartości siatki, która ma być wyświetlona.

  • TextureId:ContentId
    Odczyt równoległy

    TextureId to ID treści tekstury, która ma być zastosowana do siatki.

Właściwości odziedziczeni z: DataModelMesh
  • Odczyt równoległy

    Odległość siatki określa pozycję względną z z siatką, na której siatka będzie wyświetlona.

  • Odczyt równoległy

    Skala siatki określa rozmiar siatki w stosunku do jej pierwotnych wymiarów.

  • Odczyt równoległy

    Zmienia odcień tekstury siatki, używany z FileMesh.TextureId.

Właściwości

Odczyt równoległy

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
  • Cylinder - Cylinder identyczny z Part z 'Cylinderem' Part.Shape
  • 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.

Mesh VertexColor

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

Metody

Zdarzenia