Plugin di Unity 5.0
Panah di Unity 5.0

Fisika dalam Unity 5.0

Unity 5.0 fitur upgrade ke PhysX3.3 SDK. Harap berikan blogpost ini tampilan cepat sebelum mengambil tindakan pada proyek 4.x Anda. Harus memberi Anda rasa apa yang diharapkan dari codebase baru: . Harap diingat bahwa PhysX3 tidak 100% kompatibel dengan PhysX2 dan memerlukan beberapa tindakan dari pengguna saat upgrade.

Gambaran umum tentang pembaruan

Unity 5.0 fisika dapat diharapkan untuk bekerja hingga 2x lebih cepat daripada dalam versi sebelumnya. Sebagian besar komponen yang Anda akrab dengan masih ada, dan Anda akan menemukan mereka bekerja seperti sebelumnya. Tentu saja, beberapa perilaku tidak mungkin untuk mendapatkan perilaku yang sama dan beberapa hanya aneh yang disebabkan oleh keterbatasan dari basis kode yang telah ada sebelumnya, sehingga kita harus mengambil perubahan. Dua daerah yang mendapatkan perubahan yang paling signifikan adalah komponen kain dan komponen WheelCollider. Kami termasuk bagian dari mereka di bawah ini. Kemudian, ada perubahan yang lebih kecil di seluruh kode fisika yang menyebabkan ketidakcococokan.

Perubahan yang kemungkinan mempengaruhi proyek:

Kekuatan adaptif sekarang dimatikan secara default

Kekuatan adaptif diperkenalkan untuk membantu dengan simulasi tumpukan besar, tetapi ternyata bagus hanya untuk demo. Dalam permainan nyata itu terjadi untuk menyebabkan perilaku yang salah. Anda dapat beralih ke dalam sifat fisika editor: Login Pengaturan proyek -> Fisika -> Kekuatan adaptif yang dapat diaktifkan.

tabrakan yang halus dihapus baik dari medan dan jala.

PhysX3 memiliki fitur yang membahas masalah yang sama dan tidak lagi dapat dialihkan karena dianggap sebagai solusi tanpa kekurangan utama.

Mata air mengekspos amplitudo yang lebih besar dengan PhysX3.

Anda mungkin ingin tune parameter pegas setelah upgrade.

Mengatur Bahan Fisika Terrain telah berubah

Gunakan TerrainCollider.sharedMaterial dan TerrainCollider. bahan untuk menentukan bahan fisika untuk terrainPemandangan di tempat kejadian Anda. Terrain GameObject menambahkan pesawat datar besar untuk adegan Anda dan Anda dapat menggunakan jendela Inspektur Terrain untuk menciptakan lanskap rinci. More info
Lihat di Glossary
. Cara yang lebih tua untuk mengatur bahan fisika melalui TerrainData tidak akan lagi bekerja. Sebagai bonus, Anda sekarang dapat menentukan bahan fisika medan pada dasar per colliderBentuk tak terlihat yang digunakan untuk menangani tabrakan fisik untuk objek. Seorang sari tidak perlu menjadi bentuk yang sama dengan jala objek - perkiraan kasar sering lebih efisien dan tidak dapat dibedakan dalam gameplay. More info
Lihat di Glossary
.

Bentuk casting dan menyapu telah berubah:

  • Bentuk menyapu melaporkan semua bentuk mereka memukul (yaitu KapsulCast dan Sphere Cast akan kembali semua bentuk mereka memukul, bahkan yang sepenuhnya mengandung primitif)
  • Raycasts menyaring bentuk yang mengandung asal raycast

Peristiwa Majemuk:

Saat menggunakan kolider senyawa, OnCollisionEnter sekarang disebut sekali per setiap pasangan kontak

Pemicu harus cembung:

Dari saat ini, Anda dapat memicu hanya pada bentuk cembung (sisi PhysX):

  • TerrainCollider tidak lagi mendukung bendera IsTrigger
  • MeshCollider dapat memiliki IsTrigger hanya jika cembung

Tubuh dinamis harus cembung:

Tubuh dinamis (yaitu orang-orang yang memiliki kaku melekat dengan Kinematik = palsu) tidak bisa lagi memiliki sari meshGrafik utama primitif Unity. Mesh membuat sebagian besar dunia 3D Anda. Unity mendukung mesh poligon triangulat atau Quadrangulasi. Nurbs, Nurms, permukaan Subdiv harus dikonversi ke poligon. More info
Lihat di Glossary
(batas PhysX).

Jika Anda ingin memiliki 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
dengan jaring cekung, Anda hanya dapat memilikinya pada tabrakan statis dan badan kinematik

Ragdoll sendi:

Pengaturan bersama untuk ragdolls kemungkinan akan membutuhkan tweaking.

Saran ini berlaku untuk jointsKomponen fisika yang memungkinkan koneksi dinamis antara komponen Rigidbody, biasanya memungkinkan beberapa tingkat pergerakan seperti engsel. More info
Lihat di Glossary
secara umum juga.

Lihat halaman Kestabilan Bersama Dan Ragdoll untuk versi terbaru dari panduan ini.

  • Hindari sudut kecil "Angular Y Limit" dan "Angular Z Limit". Tergantung pada pengaturan sudut minimum Anda harus sekitar 5 hingga 15 derajat agar stabil. Alih-alih menggunakan sudut kecil mencoba mengatur sudut ke nol. Ini akan mengunci sumbu dan memberikan simulasi yang stabil.

  • Tetapkan Preprocessing untuk palsu (tidak dicentang). Menonaktifkan preprocessing dapat membantu melawan sendi “meniup”. Sendi dapat "meniup" jika mereka dipaksa ke situasi di mana tidak ada cara yang mungkin untuk memenuhi kendala sendi. Ini dapat terjadi jika tubuh kaku bersama ditarik terpisah oleh geometri tabrakan statis, seperti memijat ragdoll sebagian di dalam dinding.

  • stabilitas Ragdoll atau peregangan: Jika ragdolls diberikan keadaan ekstrem, seperti memijat sebagian di dalam dinding atau didorong dengan kekuatan besar, pemecah sendi tidak akan menjaga tubuh yang kaku bersama. Ini dapat mengakibatkan peregangan atau “cloud bagian tubuh”. Harap aktifkan proyeksi pada sendi, gunakan "ConfigurableJoint.projectionMode" atau "CharacterJoint.enableProjection".

  • Jika tubuh terhubung dengan sendi adalah jittering mencoba meningkatkan Edit->Project Settings->Physics->“Solver Iteration Count”. Coba antara 10 atau 20.

  • Jangan pernah menggunakan akses transformasi langsung dengan badan kinematik yang disambungkan ke tubuh lain. Melakukan begitu melewatkan langkah di mana PhysX menghitung velocities internal tubuh yang sesuai dan sehingga membuat pemecah memberikan hasil yang tidak menyenangkan. Kami telah melihat beberapa proyek 2D menggunakan akses transformasi langsung ke karakter flip melalui mengubah transformasi. arah pada boon akar rig. Ini berperilaku jauh lebih baik jika Anda menggunakan Pindah / Pindahan / Pindahkan.

Kendala yang kaku diterapkan di ruang lokal

Mekanisme penguncian yang kami gunakan pada Unity 4 pada dasarnya membuang perubahan rotasi terkunci & mengatur ulang kecepatan sudut sebagai langkah pasca-solver. Ini bekerja sebagian besar baik kecuali bahwa ada masalah dengan tubuh gagal untuk pergi tertidur sebagai pemecahan ingin menyesuaikan rotasi setiap bingkai; dan beberapa kasus terkait yang diperhatikan selama bertahun-tahun. Ketika bekerja pada integrasi PhysX3 kami memanfaatkan fitur baru PhysX 3.3 di mana kita dapat mengatur komponen sepuluhsor inersia tak terbatas untuk derajat rotasi terkunci kebebasan. Ini sekarang didukung dalam pemecahan sehingga tubuh sekarang akan tidur tepat, tetapi karena ini inersia, itu diterapkan dalam koordinat lokal.

WheelCollider

WheelCollider baru didukung oleh SDK Kendaraan PhysX3 yang pada dasarnya adalah perpustakaan simulasi kendaraan yang benar-benar baru bila dibandingkan dengan kode yang kami miliki dengan PhysX2.

Baca lebih lanjut tentang WheelCollider baru di sini.

Cloth

Unity 5 menggunakan pemecahan kain rewritten yang disediakan oleh SDK PhysX baru. Perpecahan kain ini telah dirancang dengan pakaian karakter dalam pikiran, dan merupakan peningkatan yang bagus dibandingkan dengan versi lama dalam hal kinerja dan stabilitas. Unity 5 menggantikan komponen SkinnedCloth dan InteraktifCloth di Unity 4 dengan komponen kain tunggal, yang bekerja sama dengan SkinnedMeshRenderer. Fungsi ini mirip dengan komponen SkinnedCloth sebelumnya, tetapi sekarang dimungkinkan untuk menetapkan sewenang-wenang, mesh non-skin ke SkinnedMeshRenderer, sehingga Anda masih dapat menangani simulasi kain pada mesh acak.

Namun, beberapa fungsi yang tersedia di Interaktifan lama sekarang tidak lagi didukung oleh versi baru PhysX karena sulit untuk menerapkan ini dengan kinerja yang baik. Khusus:

  • Anda tidak dapat lagi menggunakan kain untuk berkolaborasi dengan geometri dunia arbitrase
  • air mata tidak lagi didukung
  • Anda tidak dapat lagi menerapkan tekanan pada kain
  • Anda tidak bisa lagi melampirkan kain untuk tabrakan atau memiliki kain menerapkan kekuatan untuk rigidbodiesKomponen yang memungkinkan GameObject untuk dipengaruhi oleh gravitasi simulasi dan kekuatan lainnya. More info
    Lihat di Glossary
    di sceneAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
    Lihat di Glossary
    .
Plugin di Unity 5.0
Panah di Unity 5.0