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 propinsi MeshType . Beberapa pilihan tersedia.

  • Bata - Bentuk blok, setara dengan BlockMesh
  • Silinder - Sebuah silinder, identik dengan sebuah Part dengan sebuah Part.Shape dari 'Cylinder'
  • 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>
  • Meshes dari MeshPart skala di semua sumbu tergantung pada properti Size dari MeshPart, dan meshes dari SpesialMesh tidak
  • Objek SpecialMesh termasuk Offset dan Scale属性, sementara MeshParts tidak
  • 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

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()
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

    TexturId adalah ID konten dari teksur yang akan diterapkan ke mesh.

Properti diwarisi dari DataModelMesh

Properti

Baca Paralel

Mesh yang diterapkan pada objek Class.SpecialMesh``Class.BasePart bergantung pada propinsi MeshType. Beberapa pilihan tersedia.

  • Bata - Bentuk blok, setara dengan BlockMesh
  • Silinder - Sebuah silinder, identik dengan sebuah Part dengan sebuah Part.Shape dari 'Cylinder'
  • 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

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