Pengontrol Karakter
Multi-scene fisika

Deteksi tabrakan terus menerus (CCD)

CCD memastikan bahwa tubuh bergerak cepat bertabrakan dengan benda-benda yang lewat, atau terowongan, melalui benda-benda tersebut. Unity menyediakan metode CCD berikut:

Untuk menggunakan CCD berbasis menyapu, pilih RigidBodyKomponen yang memungkinkan GameObject untuk dipengaruhi oleh gravitasi simulasi dan kekuatan lainnya. More info
Lihat di Glossary
di jendela InspectorJendela Unity yang menampilkan informasi tentang Pengaturan GameObject yang dipilih saat ini, aset atau proyek, memungkinkan Anda untuk memeriksa dan mengedit nilai. More info
Lihat di Glossary
dan set Collision DetectionProses otomatis yang dilakukan oleh Unity yang menentukan apakah yang bergerak GameObject dengan komponen kaku dan collider telah masuk ke kontak dengan sari lainnya. More info
Lihat di Glossary
ke Continuous atau Continuous Dynamic. Untuk CCD spekulatif, set Collision Detection ke Continuous Speculative.

CCD berbasis sapuan

CCD berbasis sapuan menggunakan algoritma Time Of Impact (TOI) untuk menghitung potensi collisionstabrakan terjadi ketika mesin fisika mendeteksi bahwa tabrakan dari dua GameObjects membuat kontak atau tumpang tindih, ketika setidaknya satu memiliki komponen kaku dan bergerak. More info
Lihat di Glossary
untuk objek dengan menyapukan trajectory majunya menggunakan kecepatan saat ini. Jika ada kontak di sepanjang arah bergerak objek, algoritma menghitung waktu dampak dan memindahkan objek sampai saat itu. Algoritme dapat melakukan sub langkah dari waktu itu ke depan, mengkomputasikan kecepatan setelah TOI kemudian menangis kembali, dengan biaya siklus CPU lebih.

Namun, karena metode ini bergantung pada menyapu linier, diabaikan gerakan sudut tubuh, yang dapat menyebabkan efek terowongan saat benda berputar pada kecepatan. Misalnya, mesin flipper dalam mesin pinball tetap pada satu ujung dan berputar di sekitar titik tetap. flipper hanya memiliki gerakan sudut dan tidak ada gerakan linier. Oleh karena itu, dapat dengan mudah melewatkan tabrakan dengan pinball:

A thin stick GameObject with its Continuous Dynamic property enabled. When rotating quickly around the pivot point, the stick doesn’t make contact with the sphere.
Sebuah tongkat tipis GameObject dengan properti dinamis terus menerus diaktifkan. Ketika berputar cepat di sekitar titik pivot, tongkat tidak membuat kontak dengan bola.

Masalah lain dengan metode ini adalah kinerja. Jika Anda memiliki sejumlah besar benda berkecepatan tinggi dengan CCD di dekat kedekatan, overhead CCD meningkat cepat karena penyapu ekstra, dan physics engineSebuah sistem yang mensimulasikan aspek sistem fisik sehingga benda dapat mempercepat dengan benar dan dipengaruhi oleh tabrakan, gravitasi dan kekuatan lainnya. More info
Lihat di Glossary
harus melakukan lebih banyak sub-langkah CCD.

CCD spekulatif

CCD spektif bekerja dengan meningkatkan sumbu sumbu fase lebar objek yang menyelaraskan kotak pengikat minimum (AABB), berdasarkan gerakan linier dan sudut objek. Algoritme spekulatif karena memilih semua kontak potensial selama langkah fisika berikutnya. Semua kontak kemudian dimasukkan ke dalam pemecahan, yang memastikan bahwa semua kendala kontak puas sehingga objek tidak terowongan melalui tabrakan.

Diagram berikut menunjukkan bagaimana bidang bergerak dari t0 bisa memiliki posisi yang diharapkan pada t1 jika tidak ada dinding di jalannya. Dengan meningkatkan AABB dengan targetnya, algoritma spekulatif mengambil dua kontak dengan normal n1 dan n2. Algoritme kemudian memberitahu pemecahan untuk menghormati kontak tersebut sehingga bidang tidak terowongan melalui dinding.

ABB yang digemukan berdasarkan kecepatan saat ini membantu mendeteksi semua kontak potensial di sepanjang lintas bergerak, yang memungkinkan pemecahan untuk mencegah terowongan.

CCD spekulatif umumnya lebih murah daripada metode berbasis menyapu karena kontak hanya sebanding selama fase deteksi tabrakan, tidak selama fase pemecahan dan mengintegrasikan. Juga, karena CCD spekulatif memperluas AABB fase luas berdasarkan gerakan linear dan sudut objek, menemukan kontak yang berbasis CCD dapat melewatkan.

A thin stick GameObject with the Speculative CCD enabled. When rotating quickly around the pivot point, the stick makes contact with the sphere and a collision occurs.
Sebuah tongkat tipis GameObject dengan CCD Speculative diaktifkan. Ketika berputar cepat di sekitar titik pivot, tongkat membuat kontak dengan bidang dan tabrakan terjadi.

Namun, CCD spekulatif dapat menyebabkan tabrakan, di mana gerakan objek dipengaruhi oleh titik kontak spekulatif ketika seharusnya tidak. Ini karena CCD spekulatif mengumpulkan semua kontak potensial berdasarkan algoritma titik terdekat, sehingga kontak normal kurang akurat. Hal ini sering dapat membuat objek kecepatan tinggi slide di sepanjang fitur tabrakan dan melompat, meskipun mereka seharusnya tidak. Sebagai contoh, dalam diagram berikut, sphere dimulai pada t0 dan bergerak secara horizontal ke arah kanan, dengan posisi yang diprediksi pada t1 setelah integrasi. AABB yang berkelok-kelok sepanjang kotak b0 dan b1, dan CCD menghasilkan dua kontak spekulatif pada c0 dan c1. Karena CCD spekulatif menghasilkan kontak menggunakan algoritma titik terdekat, c0 memiliki normal yang sangat cenderung, yang tampaknya menjadi jalan ke pemecahan.

The solver assumes that the contact point at c0 is a ramp because the closest point algorithm generated an inaccurate contact normal
Pemecah menganggap bahwa titik kontak pada c0 adalah jalan karena algoritma titik terdekat yang dihasilkan kontak tidak akurat normal

Penyebab normal yang sangat cenderung t1 untuk melompat ke atas setelah integrasi, daripada bergerak ke depan lurus:

A ghost collision generated at c0 causes the sphere to erroneously jump up instead of move straight forward
tabrakan yang dihasilkan pada c0 menyebabkan sphere ke erroneously melompat daripada bergerak maju lurus

CCD spekulatif juga dapat menyebabkan tunneling karena kontak spekulatif hanya sebanding selama fase deteksi tabrakan. Selama pemecahan kontak, jika objek mendapatkan terlalu banyak energi dari pemecahan, itu mungkin berakhir di luar AABB yang digemukan awal setelah integrasi. Jika ada tabrakan di luar AABB, objek akan terowongan segera.

Misalnya, diagram berikut menunjukkan bidang bergerak kiri dari t0 sementara tongkat berputar searah jarum jam. Jika sphere mendapatkan terlalu banyak energi dari dampak, itu mungkin berakhir keluar dari AABB yang berkembang (merah persegi panjang) pada t1. Jika ada tabrakan di luar AABB, seperti yang ditunjukkan oleh kotak biru di bawah ini, sphere dapat berakhir tunneling tepat melalui itu. Ini karena pemecahan hanya mengimbangi kontak di dalam AABB yang meningkat, dan deteksi tabrakan tidak dilakukan selama pemecahan dan mengintegrasikan fase.

The sphere with inflated AABB using speculative CCD, which only computes contacts during the collision detection phase, so tunnelling may occur
Bola dengan AABB yang meningkat menggunakan CCD spekulatif, yang hanya mengimbangi kontak selama fase deteksi tabrakan, sehingga terowongan dapat terjadi

  • 2018-10-12 Sitemap

  • Deteksi tabrakan spekulatif ditambahkan dalam NewIn20183

Pengontrol Karakter
Multi-scene fisika