Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

Özellik animasyonu

Tüm sayısal özelliklere (numbers, vector3, vector4 ve kuaterniyonlar (quaternion)) ve gölgelendirici (shader) sabitlerine, go.animate() işlevini kullanarak yerleşik animasyon sistemiyle animasyon uygulanabilir. Motor, verilen oynatma modlarına ve geçiş eğrisi (easing) işlevlerine göre özelliklere otomatik olarak “ara geçiş animasyonu” (tween) uygular. Özel geçiş eğrisi işlevleri de belirtebilirsiniz.

Özellik animasyonu Sıçrama döngüsü

Özellik animasyonu

Bir oyun nesnesinin (game object) veya bileşenin (component) özelliğine özellik animasyonu (property animation) uygulamak için go.animate() işlevini kullanın. GUI düğümü (GUI node) özellikleri için karşılık gelen işlev gui.animate() işlevidir.

-- Set the position property y component to 200
go.set(".", "position.y", 200)
-- Then animate it
go.animate(".", "position.y", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_OUTBOUNCE, 2)

Belirli bir özelliğin tüm animasyonlarını durdurmak için go.cancel_animations() işlevini, GUI düğümleri için ise gui.cancel_animations() işlevini çağırın:

-- Stop euler z rotation animation on the current game object
go.cancel_animations(".", "euler.z")

position gibi bileşik bir özelliğin animasyonunu iptal ederseniz alt bileşenlerin (position.x, position.y ve position.z) tüm animasyonları da iptal edilir.

Özellikler kılavuzu, oyun nesnelerinde, bileşenlerde ve GUI düğümlerinde kullanılabilen tüm özellikleri içerir.

GUI düğümü özellik animasyonu

GUI düğümü özelliklerinin neredeyse tamamına animasyon uygulanabilir. Örneğin, bir düğümün color özelliğini tam saydamlığa ayarlayarak onu görünmez yapabilir, ardından rengi animasyonla beyaza (yani renklendirme uygulanmayan duruma) dönüştürerek düğümü yavaşça görünür hâle getirebilirsiniz.

local node = gui.get_node("button")
local color = gui.get_color(node)
-- Animate the color to white
gui.animate(node, gui.PROP_COLOR, vmath.vector4(1, 1, 1, 1), gui.EASING_INOUTQUAD, 0.5)
-- Animate the outline red color component
gui.animate(node, "outline.x", 1, gui.EASING_INOUTQUAD, 0.5)
-- And move to x position 100
gui.animate(node, hash("position.x"), 100, gui.EASING_INOUTQUAD, 0.5)

Tamamlanma geri çağırımları

Özellik animasyonu işlevleri go.animate() ve gui.animate(), son bağımsız değişken olarak isteğe bağlı bir Lua geri çağırım (callback) işlevini destekler. Bu işlev, animasyon sonuna kadar oynatıldığında çağrılır. Döngüde oynatılan animasyonlarda veya bir animasyon go.cancel_animations() ya da gui.cancel_animations() aracılığıyla elle iptal edildiğinde bu işlev hiçbir zaman çağrılmaz. Geri çağırım, animasyon tamamlandığında olayları tetiklemek veya birden çok animasyonu birbirine zincirlemek için kullanılabilir.

Geçiş eğrileri

Geçiş eğrisi, animasyon uygulanan değerin zaman içinde nasıl değiştiğini tanımlar. Aşağıdaki görüntüler, geçiş eğrisini oluşturmak için zaman içinde uygulanan işlevleri gösterir.

go.animate() için geçerli geçiş eğrisi değerleri şunlardır:

go.EASING_LINEAR  
go.EASING_INBACK go.EASING_OUTBACK
go.EASING_INOUTBACK go.EASING_OUTINBACK
go.EASING_INBOUNCE go.EASING_OUTBOUNCE
go.EASING_INOUTBOUNCE go.EASING_OUTINBOUNCE
go.EASING_INELASTIC go.EASING_OUTELASTIC
go.EASING_INOUTELASTIC go.EASING_OUTINELASTIC
go.EASING_INSINE go.EASING_OUTSINE
go.EASING_INOUTSINE go.EASING_OUTINSINE
go.EASING_INEXPO go.EASING_OUTEXPO
go.EASING_INOUTEXPO go.EASING_OUTINEXPO
go.EASING_INCIRC go.EASING_OUTCIRC
go.EASING_INOUTCIRC go.EASING_OUTINCIRC
go.EASING_INQUAD go.EASING_OUTQUAD
go.EASING_INOUTQUAD go.EASING_OUTINQUAD
go.EASING_INCUBIC go.EASING_OUTCUBIC
go.EASING_INOUTCUBIC go.EASING_OUTINCUBIC
go.EASING_INQUART go.EASING_OUTQUART
go.EASING_INOUTQUART go.EASING_OUTINQUART
go.EASING_INQUINT go.EASING_OUTQUINT
go.EASING_INOUTQUINT go.EASING_OUTINQUINT

gui.animate() için geçerli geçiş eğrisi değerleri şunlardır:

gui.EASING_LINEAR  
gui.EASING_INBACK gui.EASING_OUTBACK
gui.EASING_INOUTBACK gui.EASING_OUTINBACK
gui.EASING_INBOUNCE gui.EASING_OUTBOUNCE
gui.EASING_INOUTBOUNCE gui.EASING_OUTINBOUNCE
gui.EASING_INELASTIC gui.EASING_OUTELASTIC
gui.EASING_INOUTELASTIC gui.EASING_OUTINELASTIC
gui.EASING_INSINE gui.EASING_OUTSINE
gui.EASING_INOUTSINE gui.EASING_OUTINSINE
gui.EASING_INEXPO gui.EASING_OUTEXPO
gui.EASING_INOUTEXPO gui.EASING_OUTINEXPO
gui.EASING_INCIRC gui.EASING_OUTCIRC
gui.EASING_INOUTCIRC gui.EASING_OUTINCIRC
gui.EASING_INQUAD gui.EASING_OUTQUAD
gui.EASING_INOUTQUAD gui.EASING_OUTINQUAD
gui.EASING_INCUBIC gui.EASING_OUTCUBIC
gui.EASING_INOUTCUBIC gui.EASING_OUTINCUBIC
gui.EASING_INQUART gui.EASING_OUTQUART
gui.EASING_INOUTQUART gui.EASING_OUTINQUART
gui.EASING_INQUINT gui.EASING_OUTQUINT
gui.EASING_INOUTQUINT gui.EASING_OUTINQUINT

Doğrusal ara değerleme Başlangıçta geri taşma Bitişte geri taşma Başlangıçta ve bitişte geri taşma Bitişte ve başlangıçta geri taşma Başlangıçta sıçrama Bitişte sıçrama Başlangıçta ve bitişte sıçrama Bitişte ve başlangıçta sıçrama Başlangıçta esnek geçiş Bitişte esnek geçiş Başlangıçta ve bitişte esnek geçiş Bitişte ve başlangıçta esnek geçiş Başlangıçta sinüs geçişi Bitişte sinüs geçişi Başlangıçta ve bitişte sinüs geçişi Bitişte ve başlangıçta sinüs geçişi Başlangıçta üstel geçiş Bitişte üstel geçiş Başlangıçta ve bitişte üstel geçiş Bitişte ve başlangıçta üstel geçiş Başlangıçta dairesel geçiş Bitişte dairesel geçiş Başlangıçta ve bitişte dairesel geçiş Bitişte ve başlangıçta dairesel geçiş Başlangıçta ikinci dereceden geçiş Bitişte ikinci dereceden geçiş Başlangıçta ve bitişte ikinci dereceden geçiş Bitişte ve başlangıçta ikinci dereceden geçiş Başlangıçta üçüncü dereceden geçiş Bitişte üçüncü dereceden geçiş Başlangıçta ve bitişte üçüncü dereceden geçiş Bitişte ve başlangıçta üçüncü dereceden geçiş Başlangıçta dördüncü dereceden geçiş Bitişte dördüncü dereceden geçiş Başlangıçta ve bitişte dördüncü dereceden geçiş Bitişte ve başlangıçta dördüncü dereceden geçiş Başlangıçta beşinci dereceden geçiş Bitişte beşinci dereceden geçiş Başlangıçta ve bitişte beşinci dereceden geçiş Bitişte ve başlangıçta beşinci dereceden geçiş

Özel geçiş eğrileri

Bir değer kümesi içeren bir vector tanımlayarak özel geçiş eğrileri oluşturabilir, ardından yukarıdaki önceden tanımlanmış geçiş eğrisi sabitlerinden biri yerine bu vektörü verebilirsiniz. Vektör değerleri, başlangıç değerinden (0) hedef değere (1) uzanan bir eğriyi ifade eder. Çalışma zamanı ortamı, vektörden değerleri örnekler ve vektörde belirtilen noktalar arasındaki değerleri hesaplarken doğrusal ara değerleme (interpolation) uygular.

Örneğin şu vektör:

local values = { 0, 0.4, 0.2, 0.2, 0.5, 1 }
local my_easing = vmath.vector(values)

aşağıdaki eğriyi oluşturur:

Özel eğri

Aşağıdaki örnek, bir oyun nesnesinin y konumunun kare dalga biçimindeki bir eğriye göre geçerli konum ile 200 arasında sıçramasını sağlar:

local values = { 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1,
                 0, 0, 0, 0, 0, 0, 0, 0,
                 1, 1, 1, 1, 1, 1, 1, 1 }
local square_easing = vmath.vector(values)
go.animate("go", "position.y", go.PLAYBACK_LOOP_PINGPONG, 200, square_easing, 2.0)

Kare dalga eğrisi