SpecialMesh
*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
- 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.
- BasePart.Material ditampilkan dengan benar di mesh saat menggunakan MeshPart dan tidak saat menggunakan SpecialMesh
- MeshParts termasuk properti MeshPart.CollisionFidelity , artinya model tabrakan dari MeshPart dapat disetel untuk menyerupai geometri mesh.Objek SpecialMesh sebaliknya, menggunakan model kolisi orangtua BaseParts
- Properti MeshId dari sebuah SpecialMesh dapat diubah oleh Script atau LocalScript selama runtime.Properti MeshId dari sebuah MeshPart tidak bisa.
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.
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
Rangkuman
Properti
Menentukan jenis mesh yang akan diterapkan ke BasePart yang SpecialMesh diwarisi ke.
MeshId adalah ID konten dari mesh yang akan ditampilkan.
TextureId adalah ID konten dari tekstur yang akan diterapkan ke mesh.
Offset dari sebuah meshes menentukan posisi relatif dari BasePart.Position dari sebuah BasePart yang meshes akan ditampilkan di.
Skala dari mesh menentukan ukuran mesh relatif terhadap dimensi aslinya.
Mengubah nuansa tekstur mesh, digunakan dengan FileMesh.TextureId .
Properti
MeshType
Mesh yang diterapkan oleh objek SpecialMesh terhadap BasePart tergantung pada properti MeshType. Beberapa opsi tersedia.
- Bata - Bentuk blok, setara dengan BlockMesh
- 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.
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