Instansi ControllerManager mengelola kontrol gerakan simulasi untuk kontrol yang ditugaskan kepadanya RootPart.Bersama dengan ControllerPartSensors , itu dapat digunakan untuk membangun kontrolerkarakter berbasis fisika.
Pengaturan inti
ControllerManager membutuhkan BasePart untuk digunakan sebagai akarnya. Kekuatan gerakan dan pendeteksi bagian akan berada di bagian ini.
Grupkan bagian sebagai instansi Model untuk organisasi bersama dengan komponen lainnya.
Tambahkan instansi ControllerManager ke model.Jika KontrolerManajer tidak muncul awalnya di menu pengisian objek, nonaktifkan "Tampilkan hanya objek yang direkomendasikan" di pengaturan insersi menu .
Pengaturan sensor
A ControllerPartSensor mendeteksi bagian dengan kode yang sama yang Humanoid digunakan untuk mendeteksi lantai dan tangga.
Sisipkan ControllerPartSensor sebagai anak dari RootPart dan ganti namanya menjadi Sensor Tanah untuk identifikasi lebih mudah dari tujuannya.Kemudian, di jendela Properti, atur propertinya SearchDistance ke 2 tetapi tinggalkan SensorMode sebagai Lantai .
Sisipkan lain ControllerPartSensor sebagai anak dari RootPart dan ganti namanya menjadi Sensor Pendaki .Kemudian, di jendela Properti, atur propertinya SearchDistance ke 1 dan propertinya SensorMode ke Tangga .
Pengaturan kontroler
Instansi kontrol seperti GroundController dan ClimbController memberi tahu bagian yang dikelola cara berinteraksi dengan dunia, bekerja di samping sensor yang Anda konfigurasi selama pengaturan sensor.
Sisipkan keduanya, GroundController dan ClimbController sebagai anak-anak dari ControllerManager .
Pilih instansi baru GroundController dan kemudian, di jendela Properti, atur propertinya GroundOffset ke nilai di mana bagian yang dikelola harus "melayang" di atas tanah.Penting bahwa nilai ini adalah kurang dari nilai SearchDistance untuk Sensor Tanah, karena sensor itu akan dinonaktifkan jika kehilangan indra tentang tanah dan secara efektif menghentikan kekuatannya di bagian.
Referensi tautan
Untuk menyelesaikan pengaturan inti, Anda perlu menghubungkan berbagai properti instansi ControllerManager ke objek di dalam utama Model.
Pilih kejadianControllerManager .
Di jendela Properti, klik masing-masing properti berikut dan kemudian, kembali di jendela Explorer, klik instansi masing-masing untuk menyelesaikan tautkan.
- Hubungkan properti ActiveController ke instansi Kontroler Tanah .
- Hubungkan properti RootPart ke bagian yang Anda sebut RootPart .
- Hubungkan properti ClimbSensor ke instansi Sensor kejadian .
- Hubungkan properti GroundSensor ke instansi Sensor Tanah .
Uji
Dengan sensor dan kontroler di tempat, dan dengan referensi terhubung , Anda dapat menguji kontroler di Studio.
Mulai tes permainan menggunakan mode Jalankan ( F8 ) karena Anda tidak perlu menyisipkan karakter avatar Anda dalam skenario ini.
Bagian Akar harus melayang di atas tanah pada nilai GroundController.GroundOffset yang Anda tetapkan di Menambahkan Kontroler.Ini juga harus berputar untuk sesuaikan dengan vektor ControllerManager.FacingDirection.
Eksperimen dengan gerakan dan arah berbeda dengan mengubah vektor MovingDirection dan FacingDirection dari ControllerManager selama runtime.Juga bereksperimen dengan berbagai properti instansi , , dan .
Manajer Kontroler Kontroler Tanah
Sensor khusus
Opsi ControllerPartSensor.SensorMode dari Floor dan Ladder menjalankan kode sensor yang tepat Humanoid memungkinkan Anda menggunakannya untuk kompatibilitas mundur.Namun, Anda juga dapat menyesuaikan bagaimana dan kapan bagian yang dapat dilalui dan dipanjat terdeteksi, akhirnya berubah ketika bagian yang dikelola berjalan/naik.
Beralih ControllerPartSensor.UpdateType dari Baca ke Manual .
- Saat Dibaca memicu properti output untuk diperbarui sesuai dengan yang Anda baca setiap kali.Pada dasarnya, ini menempatkan sensor dalam mode "hanya baca" di mana apa pun yang Anda tulis ke properti ini ditulis ulang oleh perilaku deteksi internalnya.
- Manual mematikan perilaku deteksi internal.Properti output bebas untuk Anda tulis sesukanya dan SensorMode tidak melakukan apa pun.
Buat skrip yang melakukan logika deteksi Anda sendiri dan menulis output ke properti output sensor Anda.Biasanya Anda akan menggunakan pencarian spasial seperti WorldRoot:Raycast() atau WorldRoot:Blockcast() yang menghasilkan RaycastResult .Skrip Anda kemudian dapat mengambil properti hasil dan menetapkannya pada nilai sensor sebanding:
Perhatikan bahwa Anda perlu mengelola seberapa sering pencarian Anda dijalankan dan memperbarui kejadiansensor mereka.
The ControllerManager akan terus menggunakan sensor yang telah ditugaskan, mengambil data yang Anda berikan kepadanya.