Apa fungsi pelonggaran?

15

Saya menemukan situs web keren ini untuk pengembangan game dan memiliki daftar fungsi pelonggaran:

masukkan deskripsi gambar di sini

Meskipun situs tersebut berisi deskripsi tentang apa yang mereka buat, itu melampaui kepala saya. Apa fungsi pelonggaran dan untuk apa mereka digunakan?

Memperbarui

Saya menemukan contoh fungsi yang lebih baik dari kode sumber Phaser.io . Fungsi-fungsi ini jauh lebih sederhana daripada jawaban di sini. Mereka hanya mengambil satu parameter k,. Sebagai bagian dari jawaban, saya ingin tahu cara menggunakannya.

Daniel Kaplan
sumber
2
Istilah terkait yang penting adalah tweening. Lihat juga video ini youtube.com/watch?v=Fy0aCDmgnxg mana Anda dapat melihat seberapa besar efek tweening dan fungsi pelonggaran!
Roy T.

Jawaban:

13

Fungsi pelonggaran digunakan untuk interpolasi, biasanya (tetapi tidak harus) dalam animasi / gerak kinematik. Interpolasi linier (lerp) adalah sesuatu yang mungkin pernah Anda dengar. Katakanlah Anda membiarkan wajah tersenyum dari satu sudut layar ke sudut yang lain (sebanyak gambar Anda). Ini berarti smiley akan bergerak dengan kecepatan stabil dari titik A ke titik B. Jika Anda menerapkan ini pada gerakan anggota tubuh, itu akan terlihat sangat robot dan tidak wajar - aktuator / servos yang digunakan robot, lakukan dengan cara ini. Jelas, anggota tubuh manusia bergerak dengan cara yang sangat berbeda. Dan sebagian besar gerakan yang akan Anda lihat di alam akan memiliki kurva gerak yang menarik, daripada kecepatan yang stabil dan tidak berubah yang terlihat dalam interpolasi linier.

Masukkan pelonggaran. Gerakan pelonggaran berarti kecepatannya tidak konstan. Apa yang dicapai ini adalah untuk terlihat lebih realistis. Awasi orang, saksikan hewan yang berbeda, saksikan tanaman yang tertekuk oleh angin, atau bahkan bagaimana hujan yang turun mengubah arah pada hari yang penuh semangat. Perhatikan kecepatan bola saat Anda melemparkannya ke udara dan kembali turun lagi. Tonton gerakan senar gitar saat Anda memetiknya. Masing-masing jenis gerakan ini memiliki kurva berbeda yang menggambarkan kecepatan.

Saya sarankan Anda bermain dengan GreenSock's GSAP online untuk merasakan apa yang dihasilkan berbagai jenis kurva pelonggaran dalam hal gerakan. Ini adalah salah satu hal di mana diperlukan waktu dan latihan untuk memetakan kurva bernama tertentu untuk jenis gerakan yang Anda bayangkan Anda inginkan. Tetapi begitu Anda memahami dasar-dasarnya, Anda akan bersenang-senang.

PS Seperti yang saya katakan, pelonggaran tidak hanya digunakan untuk animasi. Ini dapat digunakan untuk pengarahan suara, untuk memengaruhi gerakan kerangka pada level logis / model, atau hal lain yang dapat Anda pikirkan yang mungkin memerlukan variasi halus spesifik dari waktu ke waktu.

Insinyur
sumber
1
btw Easing adalah slide kedua di tautan GreenSock. Gunakan menu dropdown pada slide untuk menguji berbagai fungsi pelonggaran.
jhocking
8

Fungsi pelonggaran memungkinkan Anda menginterpolasi nilai dari satu nilai ke nilai lainnya selama interval tertentu menggunakan sesuatu yang disebut "fungsi pelonggaran". Ini adalah fungsi yang dirancang untuk mengambil nilai dan pada titik tertentu dalam interval, mengeluarkan nilai pada titik waktu tertentu.

Ini dapat dijelaskan dengan paling baik dengan melihat potongan kode:

// simple linear tweening - no easing, no acceleration


Math.linearTween = function (t, b, c, d) {
    return c*t/d + b;
};

@t adalah waktu saat ini (atau posisi) dari tween. Ini bisa berupa detik atau bingkai, langkah, detik, ms, apa pun - selama unitnya sama dengan yang digunakan untuk total waktu

@b adalah nilai awal properti.

@c adalah perubahan antara nilai awal dan tujuan properti.

@ d adalah total waktu tween.

Terima kasih, http://upshots.org/actionscript/jsas-understanding-easing

Ini adalah definisi fungsi pelonggaran linear. Grafik ini dari waktu ke waktu dalam bentuk 't' kita mendapatkan grafik linier belaka.

Oke, keren. Untuk apa kita menggunakannya?

Setiap kali Anda memiliki awal dan selesai dalam pikiran dan ingin menghidupkannya, Anda dapat menggunakan "tween" atau "fungsi pelonggaran".

Sebagai contoh, inilah GIF yang saya ambil dari Angry Birds:

masukkan deskripsi gambar di sini

Perhatikan menu meluncur ke titik di layar, tetapi berhenti perlahan? Ini karena fungsi pelonggaran yang memudahkan tempatnya. Anda dapat melihatnya di seluruh web. Jika ini adalah kemudahan linier, itu akan sama di seluruh.

Musik?

Tentu! Jika kita mengambil nilai dari nilai soundtrack kita saat ini dan menyisipkannya di antara itu dan 0 di atas total kata, 1 detik maka volume kita akan perlahan-lahan menghilang selama satu detik.

Objek terikat

Ada juga fungsi yang memungkinkan untuk memantul (lihat: http://easings.net/#easeOutBounce ) yang dapat menghasilkan efek seperti ini pada sprite tanpa sistem fisika:

masukkan deskripsi gambar di sini

Anda dapat menemukan informasi lebih lanjut di web dengan mencari tweening.

Vaughan Hilts
sumber
@tTyTT Saya sudah menambahkan penjelasan untuk Anda. Contoh penggunaan seperti apa yang Anda cari?
Vaughan Hilts
Lihat pembaruan saya. Jika Anda dapat menjelaskan cara menggunakan fungsi yang hanya dianggap ksebagai parameter, saya akan menerima jawaban ini. Terima kasih
Daniel Kaplan
Fungsi-fungsi ini tidak hanya mengambil k. Fungsi awal menggunakan ini yang kemudian diturunkan ke yang lebih rumit. Apakah Anda hanya tertarik dengan implementasi phaser?
Vaughan Hilts
Sepertinya mereka semua membawa ksaya. Di mana Anda melihat sebaliknya?
Daniel Kaplan
Semua fungsi pelonggaran (kecuali mungkin tweens gaya 'goyang') memerlukan minimal tiga parameter. Waktu (biasanya rasio antara 0 dan 1), nilai awal, dan nilai akhir. Kadang-kadang waktu dibagi menjadi dua parameter seperti waktu saat ini, dan durasi kemudahan. Jika nilai awal dan akhir sudah ditentukan (tergantung pada sistem pelonggaran / perpustakaan Anda), Anda mungkin hanya perlu menghabiskan waktu, tetapi saya sendiri tidak mengenalnya. Sebagai contoh, jika saya menginginkan nilai antara 10 dan 30 pada 75% dari jalan (3 detik menjadi 4 detik mudah), saya harus melewati 10 dan 30, dan juga 75% (waktu / lama).
Doug.McFarlane
2

Fungsi pelonggaran berfungsi untuk mengubah nilai selama periode waktu, dari nomor awal ke nomor akhir.

Anda menggunakan nilai itu untuk menghidupkan properti dari objek di game Anda, seperti posisi, rotasi, skala, mengubah warna, dan properti lainnya yang menggunakan nilai.

Fungsi pelonggaran yang berbeda menentukan "rasa" dari animasi, atau bagaimana nilainya berubah dari waktu ke waktu.

Di situs web yang Anda posting, grafik menunjukkan nilai yang berubah seiring waktu dari awal hingga akhir, jadi itu tidak berarti objek yang Anda animasikan akan mengikuti jalur bola dalam grafik.

saya tidak
sumber
Oh, jadi sekarang Anda mengubah jawaban Anda untuk mencerminkan jawaban saya! Sangat bagus melihat Anda sedang belajar.
Insinyur
Jawaban ini sepertinya lebih sebagai referensi daripada tutorial. Saya perlu contoh untuk memiliki pemahaman yang lebih baik
Daniel Kaplan
@NickWiggill tidak, saya bahkan tidak melihat jawaban Anda sampai sekarang.
ino