Apakah ada metode untuk mengetahui apakah sprite telah meninggalkan kamera panggung? atau saya harus melakukan operasi saya? : P
8
Kelas Kamera berisi objek Frustum dengan titik metode publikInFrustum (titik Vector3) yang mengembalikan true jika sprite Anda berada dalam frustrasi kamera. Anda juga dapat melihat wiki pengguna untuk teknik pemusnahan lainnya. http://code.google.com/p/libgdx-users/wiki/Culling
Jika Anda membuat gim 2D dengan ubin, Anda dapat dengan mudah menerapkan pemusnahan sendiri yang jauh lebih murah karena Anda hanya mengulangi apa yang Anda butuhkan dalam larik ubin.
Hal yang harus Anda ketahui:
Sekarang kita dapat menghitung berapa banyak ubin yang harus ditarik.
viewport.width / tileWidth
viewport.height / tileHeight
Perhitungannya tergantung pada bagaimana semuanya diatur tetapi sangat sederhana. Misalnya itu membuat perbedaan jika pusat layar adalah lokasi kamera, kiri atas atau kiri bawah.
Anda harus berakhir dengan sesuatu seperti ini:
Manfaat dari ini lebih dari memeriksa jika suatu titik berada dalam frustum Anda adalah bahwa dengan yang terakhir Anda perlu mengulangi setiap titik alih-alih menggunakan beberapa array sederhana di mana Anda selalu beralih pada jumlah ubin yang sama dengan jumlah ubin horizontal * Ubin vertikal yang sebenarnya perlu digambar. Dengan cara ini Anda dapat memiliki peta besar dan masih memiliki frame rate yang bagus. Sayangnya ini semakin sulit dan rumit ketika menggunakan 3D tetapi semakin eksponensial dengan kebebasan yang didapat pengguna dengan kamera. Anda dapat membayangkan kamera perspektif tetap yang bergerak dengan karakter hanya membutuhkan beberapa variabel hardcoded untuk melakukan trik yang sama pada array jerat yang mewakili peta Anda.
sumber
Cukup gunakan bounding sphere check. (Anda dapat menghitung radius menggunakan pythagoras) Ini sangat cepat dan juga bekerja dengan rotasi. Itu tidak sempurna tetapi tidak pernah menyebabkan pemusnahan palsu.
Untuk versi yang dioptimalkan ad hoc, Intersector memiliki beberapa persegi panjang yang berisi metode persegi panjang yang dapat digunakan juga. Tetapi Anda perlu menghitung persegi panjang untuk kamera Anda sendiri.
sumber
Fungsi ini memeriksa apakah aktor terlihat (hanya bekerja untuk 2D). Berfungsi dalam semua situasi, misalnya ketika aktor berada di dalam grup.
sumber