Animasyon Parçaları

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Oyuncular, eylemlerinin animasyonlarla herhangi bir şey yapıp yapmadığına geri bildirim alabilir. Bu, oyuncu tarafından vurulduğunda bir ağaç sarsıntısı olabilir veya evcil hayvanınızın sahibi olduğunuzda bir sevgi gibi hızlı bir şekilde hızlı hızlı hızlı hızlı hızlı hızlı hızlı hızlı hızlı hızlı hı

Animasyonlarla Boyutlandırma

Nesneleri animasyon etmenin bir yolu, gençleri kullanmaktır. Bir tween , kısaca ortada, değiştirme bir başlangıç değeri ile bir son değeri arasındaki süreçtir. Gençler, pozisyon, renk veya döndürme gibi özellikleri değiştirebilir.

Proje Yapılandırması

Bu projede, bir tween bir nesneyi başlangıç ​​pozisyonundan hedef pozisyonuna hareket ettirecektir.

  1. Animasyon yapacağınız kısmı belirleyin. Aşağıdaki örnekte, 1 düğmesi butondur ve 2 duvarıdır.

  2. Hareket edecek parçada, bir ClickDetector ve TweenMove adlı kript ekleyin. ClickDetector'ı yeniden adlandırmayın.

  3. TweenMove script'ini aç. Sonra, aşağıdaki kodu kopyala ve yapıştır.


    -- Seçilen eksen üzerine geri döndürür bir parçayı
    -- Butonun bir aç/kapa durumu vardır, böylece parça ileri veya geri hareket eder
    local TweenService = game:GetService("TweenService")
    local button = script.Parent
    local clickDetector = button:FindFirstChildWhichIsA("ClickDetector")
    local buttonState = -1 -- Butonun yönünü belirler; -1, içeriye basacağını ifade eder, 1, dışarı çıkacağını ifade eder
    local inTween = false
    -- Özelleştirilebilir değişkenler
    local TWEEN_TIME = 0.15
    local TWEEN_MOVE_DISTANCE = 1.5
    -- Değişkenleri ikiye katla
    local buttonTweenInfo = TweenInfo.new(
    TWEEN_TIME, -- Süre
    Enum.EasingStyle.Quad, -- Özelleştirme stilleri
    Enum.EasingDirection.Out -- Yönlendirme
    )
    local function buttonPress()
    -- Buton eğilse, tekrar kullanılmasını önleyin
    if inTween == true then
    return
    end
    -- Buton pozisyonu için yeni CFrame'i hesap et
    local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE * buttonState, 0)
    local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)
    -- Bir tween oluştur ve oyna
    local tweenButton = TweenService:Create(button, buttonTweenInfo, {CFrame = newCFrame})
    tweenButton:Play()
    inTween = true
    -- Arazi tamamlandığında butonu tekrar kullanılabilir hale getirin
    tweenButton.Completed:Connect(function()
    inTween = false
    -- Butonun durumunu yeniden düzenle
    buttonState *= -1
    end)
    end
    clickDetector.MouseClick:Connect(buttonPress)
  4. Test et ve objeyi tıkla. Test sırasında, objenin yanlış yön veya mesafe hareket ettiğini fark edebilirsiniz. Bu, bir sonraki bölümde özelleştirilebilir.

Yön yanlış; ayarlanması gerekir
Doğru hareket eder; ayarlara ihtiyaç yok.

Hareket Tween'ı Ayarlanıyor

Eklentilenmiş senaryoda, oyununuzun ihtiyaçlarına uyarlanmış olarak özelleştirebilirsiniz. Buton, ileri ve geri gibi yönlerde hareket ettirilebilir veya yukarı ve aşağı gibi yönlendirilebilir.

Pozisyon Değiştirme

Unutmayın, gençler başlangıç değeriyle bir hedef değerine geçiş yapar. Bu kod CFrame kullanır para döndürmek için düğmeyi yönlendirme için mevcut pozisyonuna göre. Bu yön kontrol edilir Çizgi 28 kodunun.

Bu satırda, X, Y ve Z koordinatlarını kullanarak yeni bir CFrame oluşturulur. Bu örnekte, düğme Y ekseninde hareket eder.


-- Buton pozisyonu için yeni CFrame'i hesap et
local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE * buttonState, 0)
local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)

Butonun bir farklı yönüne hareket etmesini sağlamak için, istediğiniz koordinatlardan birini çizgi ile değiştirin: TWEEN_MOVE_DISTANCE * buttonState . Diğer tüm koordinatları 0 olarak ayarlayın.

Örneğin, bu satır onu X eksenine göre hareket ettirecek.


-- Buton pozisyonu için yeni CFrame'i hesap et
local offsetCFrame = CFrame.new( TWEEN_MOVE_DISTANCE * buttonState, 0, 0)
local newCFrame = button.CFrame:ToWorldSpace(offsetCFrame)

Gecikme Süresi ve Mesafesi

Kod, tween'in hareketini etkileyen aşağıdaki değişkenleri içerir. Kapitalize edilmiş isimler like TWEEN_TIME are özellikle bu kodun modifiye edilmesi için yazılmıştır.

Aşağıdaki bir değişkenin değerini değiştirmeyi deneyin:

  • Sıra 11 - TWEEN_TIME : Bir tween'in gerçekleşmesi için alınan süre (saniye).
  • Sıra 12 - TWEEN_MOVE_DISTANCE : Düğmenin milim içinde hareket ettiği mesafe.

Diğer Özellikleri Tweening

Çoğu sayısal veri türüne sahip özellikler tween edilebilir. Bu bölüm, bazı yaygın özellikleri, döndürme gibi, oyununuza daha fazla oyuncu geri bildirimini getirmek için kullanılabilir. Unutmayın, aynı anda birden fazla özellik de tween edilebilir.

Tüm özelliklerin listesi için, TweenService API sayfasını göre.

Döndürme

Rotasyon için, Vector3'i sadece kullanmak yerine tweening ve CFrame'i birleştirin. Rotasyon tweens kullanılarak yaratıklar yer değiştirebilir veya para birimleri yerden alındığında çevirme hareketi yapabilir.

Sonraki senaryo örneğinde, yaratığın konumu ve dönüşümü, tıklanarak ne kadar mutlu olduğunu göstermek için ikiye katlanır.

Aşağıdaki kod, TWEEN_ROT_ANGLES ile ilgili sayıların sayısına göre bir nesneyi döndürecek.


-- Nesneleri döndürmek için kullanır
local TweenService = game:GetService("TweenService")
local partToTween = script.Parent
local clickDetector = partToTween:FindFirstChildWhichIsA("ClickDetector")
local inTween = false
-- Özelleştirilebilir değişkenler
local TWEEN_TIME = 0.25
local TWEEN_ROT_ANGLES = -45
local TWEEN_MOVE_DISTANCE = 3
-- Değişkenleri ikiye katla
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- Süre
Enum.EasingStyle.Quad, -- Özelleştirme stilleri
Enum.EasingDirection.Out, -- Yönlendirme
1, -- Tekrarla (yeniden yazma, yeniden yazma yokken sonsuza kadar tekrarlanır)
true -- Geriye gitme (tween'in hedefine ulaştığında geriye gitmesi)
)
local function activateAction()
-- Eğer nesne tween ediliyorsa, yeniden tween edilmesini önleyin
if inTween == true then
return
end
-- Nesnin konumunu ve dönüşünü yeni CFrame için hesaplayın
local offsetCFrame = CFrame.new(0, TWEEN_MOVE_DISTANCE, 0)
local rotatedCFrame = CFrame.Angles(math.rad(TWEEN_ROT_ANGLES), 0, 0)
offsetCFrame = offsetCFrame:ToWorldSpace(rotatedCFrame)
local newCFrame = partToTween.CFrame:ToWorldSpace(offsetCFrame)
-- Bir tween oluştur ve oyna
local tweenObject = TweenService:Create(partToTween, tweenInfo, {CFrame = newCFrame})
tweenObject:Play()
inTween = true
-- Aşırı düğme noktasında, nesneyi tekrar tıklanabilir hale getirin
tweenObject.Completed:Connect(function()
inTween = false
end)
end
clickDetector.MouseClick:Connect(activateAction)

Büyütme

Oyun içi nesnelerin boyutunu değiştirmek ayrıca bir oyuncu ile onlar etkileşime geçtiğini gösterebilir. durum, sağlık paketleri veya mücevher taşları gibi alanlar dokunulduğunda küçülebilir. Parçaları büyütmek için istediğiniz boyutun yeni bir Vector3'e yuvarlak değiştirin.


-- Parçanın dokunulduğunda büyüklüğünü ayarla, sonra yok et
local TweenService = game:GetService("TweenService")
local partToScale = script.Parent
local inTween = false
-- Özelleştirilebilir değişkenler
local TWEEN_TIME = 1
local TWEEN_SCALE = Vector3.zero
-- Değişkenleri ikiye katla
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- Süre
Enum.EasingStyle.Exponential, -- Özelleştirme stilleri
Enum.EasingDirection.Out -- Yönlendirme
)
local function onPartTouch(otherPart)
-- Eğer nesne tween ediliyorsa, yeniden tween edilmesini önleyin
if inTween == true then
return
end
local partParent = otherPart.Parent
local humanoid = partParent:FindFirstChildWhichIsA("Humanoid")
if humanoid then
-- Nesnelerin toplanmasından bu yana daha fazla çarpışmasını önle
partToScale.CanCollide = false
-- Bir tween oluştur ve oyna
local tweenObject = TweenService:Create(partToScale, tweenInfo, {Size = TWEEN_SCALE})
tweenObject:Play()
inTween = true
-- Nesneleri yok etmek, nesneleri yok etmek
tweenObject.Completed:Connect(function()
partToScale:Destroy()
end)
end
end
partToScale.Touched:Connect(onPartTouch)

Renk Değiştirme

Parçalar Renk3 değerleriyle tween ederek renkleri değiştirebilir. durum, düşmanlar veya yok edilebilir nesneler Renk3 değerleriyle parlayan renkler vererek geri bildirim verebilirler.


-- Bir nesnenin rengini tıklama eylemi sırasında değiştir ve 3 tıklama sonra yok et
local TweenService = game:GetService("TweenService")
local partToTween = script.Parent
local clickDetector = partToTween:FindFirstChildWhichIsA("ClickDetector")
local inTween = false
-- Özelleştirilebilir değişkenler
local TWEEN_TIME = 0.2
local COLOR_ON_HIT = Color3.fromRGB(255, 0, 50)
local hitCount = 0
-- Değişkenleri ikiye katla
local tweenInfo = TweenInfo.new(
TWEEN_TIME, -- Süre
Enum.EasingStyle.Exponential, -- Özelleştirme stilleri
Enum.EasingDirection.InOut, -- Yönlendirme
0, -- Tekrarla (yeniden yazma, yeniden yazma yokken sonsuza kadar tekrarlanır)
true -- Geriye gitme (tween'in hedefine ulaştığında geriye gitmesi)
)
local function activateAction()
-- Eğer nesne tween ediliyorsa, yeniden tween edilmesini önleyin
if inTween == true then
return
end
-- Bir tween oluştur ve oyna
local tweenObject = TweenService:Create(partToTween, tweenInfo, {Color = COLOR_ON_HIT})
tweenObject:Play()
inTween = true
-- Aşırı düğme noktasında, nesneyi tekrar tıklanabilir hale getirin
tweenObject.Completed:Connect(function()
inTween = false
-- Artış sayısını vur
hitCount += 1
-- 3 vurma sonra, nesneyi yok et
if hitCount == 3 then
partToTween:Destroy()
end
end)
end
clickDetector.MouseClick:Connect(activateAction)

Bu senaryo bir renk değiştirmek için bir normal Parça'yı kullanır, ancak uygulanmış bir doku MeshParts'i de kullanmak mümkündür. MeshParts genellikle Roblox Studio'da doğrudan parça oluşturulmaz, bunun yerine 3D modelleri İçe aktarılır.

Eğer tamamen doku MeshPart ile çalışıyorsanız, takip edilenşeyleri tavsiye ederiz:

  1. MeshPart yerine SpecialMesh'i kullanın. Bu, çünkü MeshPart'ın dokusu, script tarafından boyanan renkleri üstüste geçer.

  2. Renk özelliği yerine VertexColor'ı özelleştirmek için kodu değiştirin.

Proje Örneği

Bu kopya kilitsiz dünyatüm özellik örneklerine bakın. Tüm özellikleri değiştirmeyi de alın.

Döndürme, boyutlandırma ve renk değiştirme gençleri için kodlar içerir.