SpecialMesh

Tampilkan yang Tidak Digunakan Lagi

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Objek SpecialMesh menerapkan mesh ke BasePart tergantung pada properti MeshType. Ada beberapa opsi yang tersedia.

  • Bata - Bentuk blok, setara dengan BlockMesh
  • Silinder - Silinder, identik dengan Part dengan sebuah Part.Shape 'Silinder'
  • FileMesh - Seorang pengguna mengunggah Mesh, setara dengan FileMesh bahwa teksur dapat diterapkan menggunakan properti FileMesh.TextureId
  • Kepala - Bentuk kepala karakter
  • Lingkaran - Bentuk lingkaran, mirip dengan Part dengan Part.Shape 'Bola' tetapi dapat diubah bebas di semua sumbu
  • Pasak - Bentuk pasak, identik dengan WedgePart
  • Torso - Sebuah blok dengan sisi miring, karena akan dihapus

Catatan, masing-masing SpecialMesh.MeshType akan skala berbeda saat menggunakan DataModelMesh.Scale , untuk informasi lebih lanjut tentang ini silakan lihat halaman pada DataModelMesh.Scale .Objek SpecialMesh juga mengekspos properti DataModelMesh.Offset.

Penting untuk diingat bahwa ketika menggunakan SpecialMesh, hanya penampilan bagian yang berubah.Model kolisi dari bagian tetap sama.Sebagai contoh, karakter tidak akan dapat berjalan dengan benar di atas mesh karena geometri mesh tidak akun.

SpecialMesh vs MeshPart

Saat ini ada dua cara menggunakan mesh yang dibuat oleh pengembang.Mereka menggunakan SpecialMesh dengan SpecialMesh.FileType diatur ke 'FileMesh', atau dengan menggunakan MeshPart .Meskipun, secara keseluruhan, objek MeshPart telah menggantikan SpesialMesh ada beberapa perbedaan yang harus diperhatikan oleh pengembang.

Contoh Kode

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

Rangkuman

Properti

Properti diwarisi dari FileMesh
  • MeshId:ContentId
    Baca Paralel

    MeshId adalah ID konten dari mesh yang akan ditampilkan.

  • TextureId:ContentId
    Baca Paralel

    TextureId adalah ID konten dari tekstur yang akan diterapkan ke mesh.

Properti diwarisi dari DataModelMesh

Properti

Baca Paralel

Mesh yang diterapkan oleh objek SpecialMesh terhadap BasePart tergantung pada properti MeshType. Beberapa opsi tersedia.

  • Bata - Bentuk blok, setara dengan BlockMesh
  • Silinder - Silinder, identik dengan Part dengan sebuah Part.Shape 'Silinder'
  • FileMesh - Seorang pengguna mengunggah Mesh, setara dengan FileMesh bahwa teksur dapat diterapkan menggunakan properti FileMesh.TextureId
  • Kepala - Bentuk kepala karakter
  • Lingkaran - Bentuk lingkaran, mirip dengan Part dengan Part.Shape 'Bola' tetapi dapat diubah bebas di semua sumbu
  • Pasak - Bentuk pasak, identik dengan WedgePart
  • Torso - Sebuah blok dengan sisi miring, karena akan dihapus

Catatan, setiap Tipe Mesh akan skala berbeda saat menggunakan DataModelMesh.Scale , untuk informasi lebih lanjut tentang ini silakan lihat halaman pada DataModelMesh.Scale .

Contoh Kode

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

Metode

Acara