DataModelMesh
*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.
DataModelMesh jest abstraktną klasą, z której pochodzą klasy sieci.
Klasy sieci są obiektami, które, gdy są związane z BaseParts zmieniają wygląd części na ten z predefinowanej sieci. Uwaga, zmieniają tylko wygląd części, a nie granice fizyki/kollizji części. Rozwójcy, którzy rozważają zastosowanie sieci do części, która zmienia kollizję części, powinni uży
Uwaga MeshPart i CharacterMesh klasy nie zależą od DataModelMesh.
Podsumowanie
Właściwości
Odległość od BasePart.Position klasy BasePart określa pozycję względną od Class.BasePart, w której wyświetlana będzie siatka.
Skala siatki określa rozmiar siatki w stosunku do jej pierwotnych wymiarów.
Zmienia kolor tekstury sieci, używany z FileMesh.TextureId .
Właściwości
Offset
Odległość od BasePart.Position kształtuje się w odległości od BasePart , w której będzie wyświetlony Class.BasePart.
Jak użyć zmniejszenia siatki
Właściwość Offset zmienia relatywne położenie, w którym renderowana jest siatka. Na przykład, odległość 0, 5, 0 powoduje, że siatka będą wyświetlane 5 jednostek ponad pozycją BasePart.
Pozycja BasePart pozostaje niezmienna, co oznacza, że książka kolizji fizycznej części pozostanie w tym samym lokalizacie. To jest pokazane na obrazie poniżej, gdzie zielony kontur (a SelectionBox ) pokazuje składniki BasePart .
Inne użycia dla zmiany odległości sieci
Istnieje wiele ciekawych zastosowań dla właściwości przesunięcia siatki.
- Odległość i DataModelMesh.Scale można animować za pomocą TweenService stosunkowo tanie, ponieważ silnik nie musi wykonować żadnych kosztownych obliczeń fizyki/kollizji, ponieważ BasePart nie jest ruchana.
- Zmiany w związku między siatką a jej kolizją (zdeterminowane przez BasePart )
Przykłady kodu
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
Skala siatki określa rozmiar siatki w stosunku do jej pierwotnych wymiarów.
Jak użyć skali siatki
Właściwość skali działa nieco inaczej w zależności od użytego typu siatki. Zauważ wielkość BasePart pozostaje niezmieniona, co oznacza, że książka kolizji fizycznej części pozostanie taka sama.
- SpecialMesh obiekty z SpecialMesh.FileType ustawionym na skalę FileMesh w odniesieniu do oryginalnych wymiarów sieci po załadowaniu do Roblox
- BlockMesh obiektów lub SpecialMesh obiektów z ustawieniem SpecialMesh.FileType na „Cegła”, „Skała” lub „Kula” w skali równomierności względem 0> Class.BasePart.Size0> ich rodziców
- CylinderMesh obiekty lub SpecialMesh obiekty z ustawieniem SpecialMesh.FileType na „Cylinder” w skali względem rodzica. Rozsądnie dla wysokości i szerokości cylindra, używając najniższego wartości.
- SpecialMesh obiekty z SpecialMesh.FileType ustawionym na „Głowa” obecnie skalują niezgodnie z normą. Rozwój programistów nie powinien polegać na tym, że zależą od tego, jak to zachowanie będzie zmienione
- obiekty Class.SpecialMesh z ustawionymi Class.SpecialMesh.FileType na skalę Torso w nie standardowy sposób. Rozwójcy nie powinni polegać na tym, jako że są plany deprecji tego wpisywaćsieci.
Demonstracja skali siatki
Poniżej można zobaczyć przykładowe obrazy zachowań.
Liniowe skalowanie względem rozmiaru części dla "Klocka", "Kąta" i "Kuli".
Skalowanie liniowe w stosunku do pierwotnie zeskanowanej siatki dla 'FileMesh'
Nieuniwersalny skalowanie ograniczone dla siatek 'Cylinder'
Inne użycia dla skali siatki
Istnieje wiele ciekawych zastosowań dla właściwości przesunięcia siatki.
- DataModelMesh.Offset i Skala można animować używając TweenService stosunkowo tanio, ponieważ silnik nie musi wykonywać żadnych kosztownych obliczeń fizyki/kolidencji, ponieważ BasePart nie jest zmieniany.
- Zmiany w związku między siatką a jej kolizją (zdeterminowane przez BasePart )
Przykłady kodu
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()