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 propinsi MeshType . Beberapa pilihan tersedia.
- Bata - Bentuk blok, setara dengan BlockMesh
- FileMesh - Seorang pengguna mengunggah Mesh, setara dengan FileMesh yang tekstur dapat diterapkan dengan menggunakan properti FileMesh.TextureId
- Kepala - Bentuk kepala karakter
- Bola - Bentuk bola, mirip dengan sebuah Part dengan sebuah Part.Shape dari 'Bola' tetapi dapat diubah secara bebas di semua sumbu
- Segi Pisau - Segi pisau, sama dengan WedgePart
- Torso - Blok dengan sisi yang berbentuk, karena akan dihapus
Catatan, setiap SpecialMesh.MeshType akan berukuran berbeda saat menggunakan DataModelMesh.Scale, untuk informasi lebih lanjut tentang hal ini silakan lihat halaman di DataModelMesh.Scale. Objek SpecialMesh juga mengekspos propinsi 1> Class.DataModelMesh.Offset1>.
Penting untuk diingat bahwa ketika menggunakan SpecialMesh, hanya penampilan bagian yang berubah. Model tabrakan bagian tetap sama. Misalnya, seorang karakter tidak akan dapat berjalan dengan benar di atas mesin karena geometri mesin tidak diambil ke dalam akun.
SpecialMesh vs MeshPart
Saat ini ada dua cara menggunakan meshes yang dibuat pengembang. Mereka menggunakan SpecialMesh dengan SpecialMesh.FileType set ke 'FileMesh', atau dengan menggunakan MeshPart . Meskipun, pada keseluruhan, objek MeshPart telah menggeser 1> Class.Mesh
- BasePart.Material menampilkan dengan benar pada mesin saat menggunakan MeshPart dan tidak saat menggunakan SpecialMesh
- MeshParts termasuk propinsi MeshPart.CollisionFidelity , yang berarti model kolisi MeshPart dapat diatur untuk menyerupai geometri mesh. Objek SpecialMesh, di sisi lain, menggunakan model kolisi 0> Class.BasePart|BaseParts0>
- Properti MeshId dari Class.SpecialMesh dapat diubah oleh SpecialMesh atau Script selama eksekusi. Properti 1> Class.MeshPart.MeshId|MeshId1> dari Class.MeshPart tidak dapat.
Contoh Kode
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()
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
Mengidentifikasi jenis mesh yang akan diterapkan ke BasePart yang SpecialMesh adalah orang tua.
MeshId adalah ID konten dari mesh yang akan ditampilkan.
TexturId adalah ID konten dari teksur yang akan diterapkan ke mesh.
Offset dari mesh menentukan posisi relatif dari BasePart.Position dari BasePart yang akan ditampilkan.
Skala mesh menentukan ukuran mesh relatif terhadap dimensi aslinya.
Mengubah warna tekstur mesh, digunakan dengan FileMesh.TextureId .
Properti
MeshType
Mesh yang diterapkan pada objek Class.SpecialMesh``Class.BasePart bergantung pada propinsi MeshType. Beberapa pilihan tersedia.
- Bata - Bentuk blok, setara dengan BlockMesh
- FileMesh - Seorang pengguna mengunggah Mesh, setara dengan FileMesh yang tekstur dapat diterapkan dengan menggunakan properti FileMesh.TextureId
- Kepala - Bentuk kepala karakter
- Bola - Bentuk bola, mirip dengan sebuah Part dengan sebuah Part.Shape dari 'Bola' tetapi dapat diubah secara bebas di semua sumbu
- Segi Pisau - Segi pisau, sama dengan WedgePart
- Torso - Blok dengan sisi yang berbentuk, karena akan dihapus
Catatan, setiap MeshType akan berukuran berbeda saat menggunakan DataModelMesh.Scale, untuk lebih banyak informasi tentang hal ini, silakan lihat halaman di DataModelMesh.Scale.
Contoh Kode
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