Pertanyaan ini secara khusus tentang berurusan dengan perpustakaan Navigasi Recast.
Saya telah menambahkan agen dengan addAgent
dan menetapkan target dengan requestMoveTarget
. Ketika agen mencapai tujuannya, itu berhenti, tetapi ketika didorong keluar dari jalan (oleh agen lain) ia akan mencoba untuk kembali ke targetnya. Sebaliknya, ingin berhenti dan menjadi menganggur, sehingga ketika agen lain berjalan dengan mendorongnya ke samping dan itu tidak akan kembali.
Saya telah mencoba menelepon resetMoveTarget
pada agent.npos
yang dekat dengan agent.targetPos
(seolah-olah agen telah mencapai tujuan), tapi itu tampaknya mematahkan logika bagian dalam simulasi kerumunan - agen akan terus berjalan ke arah tua, tidak pernah berhenti.
Bagaimana cara saya memberi tahu agen dengan benar untuk berhenti dan menjadi idle (belum dapat didorong) di RecastNavigation?
sumber
resetMoveTarget
lokal tetapi saya tidak melihat perbedaan.ag->corridor.reset(ag->corridor.getFirstPoly(), agent->npos);
Saya tidak yakin tetapi dugaan saya akan memanggil "requestMoveVelocity" dengan nol-vektor juga pada agen itu. Cobalah.
sumber
Catatan: Solusi ini tampaknya berlebihan, tetapi saya membiarkannya jika masalah muncul kembali.
Setelah banyak decoding, coba-coba saya ambil
dtCrowd.resetMoveTarget
sebagai basis dan menemukan cara untuk memodifikasinya:PS Di atas kode dalam Delphi, tetapi harus bekerja dengan baik di C ++.
Penulis Recast Navigation berkomentar:
sumber