DataModelMesh
*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.
DataModelMesh adalah kelas abstrak dari mana kelas mesh turun.
Kelas Mesh adalah objek yang, ketika diwarisi ke BaseParts mengubah tampilan bagian menjadi tampilan predefinished mesh. Catat, mereka hanya mengubah tampilan bagian dan bukan batas-batas fisik/kolisi bagian. Pengembang yang mencari untuk menerapkan Mesh ke bagian yang mengubah bagiannya menggunakan
Catat MeshPart dan CharacterMesh kelas tidak turun dari DataModelMesh.
Rangkuman
Properti
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
Offset
Offset dari mesh menentukan jarak dari BasePart.Position dari BasePart yang akan ditampilkan.
Cara menggunakan kompensasi mesh
Propiedad Offset mengubah posisi relatif posisi yang akan ditampilkan. Misalnya, OFFSET 0, 5, 0 akan menyebabkan meshes ditampilkan 5 studs di atas posisi BasePart .
Posisi BasePart tetap sama, yang berarti kotak tabrakan fisik bagian akan tetap berada di lokasi yang sama. Ini ditunjukkan dalam gambar di bawah ini di mana garis kontur hijau (a SelectionBox ) menunjukkan ekstensi dari BasePart .
Penggunaan lain untuk mengurangi kesalahan pengguna
Ada beberapa penggunaan yang menarik untuk property mesh offset.
- Offset dan DataModelMesh.Scale dapat di Animasi menggunakan TweenService relatif murah karena mesin tidak perlu membuat perhitungan fisika / tabrakan apa pun karena BasePart tidak di pindahkan.
- Mengubah hubungan antara meshes dan ekstensi tabrakannya (diseimbangkan oleh BasePart )
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()
Scale
Skala mesh menentukan ukuran mesh relatif terhadap dimensi aslinya.
Cara menggunakan skala mesh
Prop skala bekerja sedikit berbeda tergantung pada jenis mesh yang digunakan. Catat ukuran BasePart tetap sama, yang berarti kotak kolisi fisika bagian akan tetap sama.
- SpecialMesh objek dengan SpecialMesh.FileType ditetapkan ke 'FileMesh' skala relatif terhadap dimensi asli mesh saat diunggah ke Roblox
- BlockMesh objek atau SpecialMesh objek dengan SpecialMesh.FileType tetap di 'Brick', 'Wedge' atau 'Sphere' skala relatif terhadap 0> Class.BasePart.Size0> dari orang tua mereka
- CylinderMesh objek atau SpecialMesh objek dengan SpecialMesh.FileType tetap di 'Cylinder' skala relatif terhadap Class.BasePart.Size dari orang tua mereka. Secara seragam untuk ketinggian silinder dan menjaga rasio 1: 1 untuk panjang dan lebar
- SpecialMesh objek dengan SpecialMesh.FileType ditetapkan untuk 'Kepala' saat ini skala secara tidak standar. Pengembang seharusnya tidak mengandalkan ini sebagai rencana untuk mengubah perilaku ini
- SpecialMesh objek dengan SpecialMesh.FileType yang diatur untuk skala Torso dalam skala non standar. Pengembang seharusnya tidak mengandalkan ini sebagai rencana untuk menghapus ketikmesh ini.
Demonstrasi skala Mesh
Perilaku di atas dapat dilihat dalam gambar demonstrasi berikut.
Skalierung lini relatif ke ukuran bagian untuk jaringan 'Brick', 'Wedge' dan 'Sphere'.
Skalading relatif terhadap meshes yang diunggah asli untuk 'FileMesh' meshes
Skalabilitas non-uniform terbatas untuk 'Cylinder' meshes
Penggunaan lain untuk skala mesh
Ada beberapa penggunaan yang menarik untuk property mesh offset.
- DataModelMesh.Offset dan Scale dapat di Animasi menggunakan TweenService relatif murah karena mesin tidak perlu membuat perhitungan fisika / tabrakan apa pun karena BasePart tidak diubah.
- Mengubah hubungan antara meshes dan ekstensi tabrakannya (diseimbangkan oleh BasePart )
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()