Jadi, mengingat set sprite matahari di cakrawala (x = 0, y = worldheight / 2) Saya mencoba untuk merancang fungsi untuk membuat matahari terbit, lalu jatuh.
Cara terbaik untuk melakukan ini adalah fungsi dosa, tetapi saya tidak tahu bagaimana menggunakannya.
jika menggunakan y = sin (x), maka x harus berkisar antara 0 dan pi untuk kurva penuh, sementara memiliki kecepatan konstan untuk X.
Ada pemikiran atau saran?
Sunting: Terima kasih kawan!
sumber
Seperti kata Jimmy, elips mungkin lebih cocok untuk gerakan ini. Berikut adalah beberapa ide tentang bagaimana sebenarnya mengimplementasikannya dengan sedikit lebih detail bagi mereka yang tertarik.
Mengambil waktu
Sebagai permulaan, Anda membutuhkan variabel untuk melacak waktu di dunia game. Anda dapat menerapkannya dengan cara apa pun yang Anda suka, tetapi inilah sebuah contoh. Saya akan menggunakan variabel yang dipanggil
hours
yang bervariasi dari 0 hingga 24 (meskipun ketika mencapai 24 itu akan kembali ke 0).Tidak seperti kehidupan nyata, saya hanya akan mempertimbangkan hari itu dimulai pada 0 jam, dan malam dimulai pada 12 jam. Ini akan membuat beberapa perhitungan lebih mudah.
Saya juga akan menentukan tingkat perubahan waktu permainan dalam kaitannya dengan waktu nyata. Dalam contoh ini, setiap dua menit waktu nyata akan sesuai dengan satu jam dalam permainan.
Konfigurasi
Sekarang sebelum mengatur gerakan matahari kita, kita perlu menentukan beberapa parameternya. Secara khusus, pada nilai X apa yang dinaikkannya dari cakrawala, dan pada nilai X apa nilai itu jatuh ke cakrawala? Juga, apa yang Y sesuai dengan cakrawala, dan seberapa tinggi dia seharusnya naik di atas garis itu.
Menghitung Koordinat Matahari
Sekarang saatnya menghitung posisi matahari kita untuk waktu tertentu dalam sehari. Saya akan menggunakan fungsi parametrik yang sama yang digunakan oleh Jimmy tetapi dengan domain mulai dari [0..2PI] sebagai gantinya (untuk membawa matahari kembali ke posisi semula saat fajar):
Ini adalah fungsi yang baik karena nilai X bervariasi dari 0 hingga 1 dan kemudian kembali ke 0 lagi (yang akan kami pemetaan ke nilai X awal dan akhir matahari) dan nilai Y dimulai dari 0 dan bergerak ke 1 dan kembali ke 0 lagi (yang akan menjadi porsi hari kita ) dan kemudian mengulangi hal yang sama persis di sisi negatif sebelum kembali ke posisi semula (yang akan menjadi malam kita meskipun matahari tidak akan ditarik pada titik ini).
Langkah pertama adalah penskalaan jam dari rentang [0..24) ke rentang fungsi kami yaitu [0..2PI):
Selanjutnya kita menerapkan fungsi untuk mendapatkan kembali nilai antara 0 dan 1 yang saya bicarakan di atas:
Dan akhirnya kami skala nilai-nilai itu menggunakan parameter matahari:
sumber