DataModelMesh
*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.
DataModelMesh, klasların aşağıladığı abstrakt bir klasadır.
Meshes kullanıcıları, BaseParts ile ilgili görünümü değiştiren objelerdir. Not, sadece bir meshenin görünümünü değiştirir ve parçanın çarpışma sınırlarını predefinlenmiş bir meshenin ile değiştirmez. Mesh'i bir parçaya uygulay
Class.MeshPart ve CharacterMesh sınıflarının DataModelMesh'den asla inmediğini unutmayın.
Özet
Özellikler
Bir meshenin ofseti, meshenin gösterileceği BasePart.Position ile ilgili pozisyonu belirler.
Bir meshenin ölçeği, meshenin orijinal boyutlarına göre meskenin boyutunu belirler.
Bir meshenin dokusunun renkini FileMesh.TextureId ile kullanılan değiştirir.
Özellikler
Offset
Bir meshenin ofseti, meshenin görüntülenmesinden önce BasePart.Position ile meshenin görüntülenmesine kadar olan mesafeyi belirler.
Mesh Offset'ı nasıl kullanılır
Sıçrama özelliği, çapa olarak gösterilecek malzeme noktasını değiştirir. Örneğin, bir çapa of 0, 5, 0, malzeme noktasının BasePart noktasında 5 santimetre üzerinde gösterilmesine neden olur.
Class.BasePart pozisyonu hala değişmez, yani parçanın fiziksel çarpışma kutusu aynı yerde kalacaktır. Bu, aşağıdaki görüntüde gösterildiği gibi, yeşil hatlı (bir SelectionBox ) parçanın BasePart içindeki içeriği gösterir.
Meshes için başka kullanımlar
Meshes Offset özelliği için bir dizi ilginç kullanım var.
- Sıfırlama ve DataModelMesh.Scale , motorun herhangi bir fiziksel/çarpışma hesabını yapması gerekmediği için oldukça ucuz bir şekilde animasyonlanabilir, çünkü TweenService hareket ettirilmez.
- Mesh ve çarpışma uzayları arasındaki ilişkiyi değiştirir ( BasePart tarafından belirlenir)
Kod Örnekleri
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
Bir meshenin ölçeği, meshenin orijinal boyutlarına göre meskenin boyutunu belirler.
Mesh Scale'ı nasıl kullanılır
Ölçek özelliği kullanılan mesaj türüne bağlı olarak biraz farklı çalışır. BasePart mesaj kutusunun boyutunun değişmediğini ve parçanın fiziksel çarpışma kutusunun aynı kalacağını not edin.
- SpecialMesh nesneleri, SpecialMesh.FileType ile şu anda Roblox'a yüklenen malzeme ölçeğine göre Roblox'un orijinal boyutlarına göre şekillendirme ölçeğine skalasyon yapar
- BlockMesh nesneleri veya SpecialMesh nesneleri ile SpecialMesh.FileType seti "Tuğla", "Kırıcı" veya "Küre" olarak aynı ölçekte eşit olarak skalayın 0> Class.BasePart.Size0> ile ebeveynlerinin arasında
- CylinderMesh nesneleri veya SpecialMesh nesneleri ile SpecialMesh.FileType değerini 'Cylinder' eşdeğerinde tutarak çapa ölçeği skalasına 1:1 ölçeklenmiş olarak kaydırır. Silindir uzunlu
- SpecialMesh nesneleri, SpecialMesh.FileType ile ayarlandığı için "baş" olarak mevcutta bir standart dışı şekilde büyür. Geliştiriciler bunu kullanmak için kullanılmamalıdır
- SpecialMesh nesneleri SpecialMesh.FileType ile 'Gövde' ölçeğine bir ölçek olarak ayarlanmış olup, standart olmayan bir şekilde büyütülmüş. Geliştiriciler bu yazdepreciyon olarak kullanmamalıdır.
Mesh ölçeği gösterimi
Yukarıdaki davranış aşağıdaki gösterim görüntülerinde görülebilir.
“Tuğla”, “Kırıcı” ve “Küre” mesajları için parça boyutuna kadar yüzdesel ölçekleme.
FileMesh için orijinal yüklenmiş çizgi ölçeği skalasyonu
“Silindir” meshes için sınırlı ölçekleme
Mesh ölçeğinin başka kullanımları
Meshes Offset özelliği için bir dizi ilginç kullanım var.
- DataModelMesh.Offset ve Scale, motorun herhangi bir fiziksel/çarpışma hesabını yapması gerekmediği için Class.TweenService kullanılarak oldukça ucuz bir şekilde animasyonlanabilir, çünkü TweenService değiştirilmediğinde hiçbir fiziksel/çarpışma hesabı yapılmaz.
- Mesh ve çarpışma uzayları arasındaki ilişkiyi değiştirir ( BasePart tarafından belirlenir)
Kod Örnekleri
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()