Ixazululiwe: I-Vector3.signedangle ayibonisi i-engeli ekhethiwe ngobunye

Ama-Vector ayithuluzi elinamandla ezinhlelweni, eziwusizo ikakhulukazi ekuthuthukisweni komdlalo. Angamela izinkomba, ama-velocities, futhi ngokusobala, izikhundla esikhaleni se-3D. Lapho sisebenza nalawa ma-vector, kwesinye isikhathi sidinga ukubala i-engeli phakathi kwama-vector amabili. Lapha lapho indlela ye-Vector3.SignedAngle of Unity iqala khona ukusebenza.

I-Unity's Vector3.SignedAngle indlela ibala i-engeli ngamadigri phakathi kwama-vector amabili ngokuphathelene nesiqondiso. Inani layo lisukela ku- -180 kuya ku-180, ngaleyo ndlela lisinikeza isiqondiso futhi. Ngeshwa, abanye abasebenzisi babike izinkinga lapho ingabonisi i-engeli esayiniwe ngendlela efanele. Ake singene esixazululweni esisebenzayo sale nkinga evamile.

Ukusetshenziswa Okulungile Kwe-Vector3.SignedAngle

Kubalulekile ukuqonda ukuthi kanjani I-Vector3.I-Engle Esayiniwe isebenza ukuxazulula inkinga. Le ndlela ithatha izimpikiswano ezintathu, okungukuthi ukusuka, ukuya, kanye ne-eksisi. “Kusuka” kanye “ukuya” amavektha amabili esibala i-engeli phakathi kwawo, kuyilapho “i-axis” iyivektha esikala ngayo i-engeli.

I-Vector3 kusuka = ​​i-Vector3 entsha(1, 0, 0);
Vector3 kuya = Vector3 entsha(0, 1, 0);
I-axis ye-Vector3 = i-Vector3 entsha(0, 0, -1);
i-float angle = Vector3.SignedAngle(kusuka, kuya, eksisi);

Kule khodi engenhla, kubalulekile ukuqinisekisa ukuthi i-eksisi incike endizeni enama-vector amabili. Lokhu kungenxa yokuthi, esikhaleni se-3D, i-engeli ingahluka ngokusekelwe ku-eksisi yokuzungezisa.

I-Vector3.I-Engle Esayiniwe Ayibonisi I-Engeli Esayiniwe - Isixazululo

Inkinga ivela lapho ama-vector esendizeni ehlukile kulokho esikulindele. Uma isikhombisi-ndlela se-eksisi sivaliwe, singabuyisela amanani aphozizithivu lapho kufanele ibuyise inegethivu futhi ngokuphambene nalokho. Nansi enye indlela yokuthola i-engeli esayiniwe esebenza ngokunganaki indiza ama-vector akho ahlala kuyo:

I-Vector3 v1 = i-Vector3 entsha(1, 0, 0);
I-Vector3 v2 = i-Vector3 entsha(0, 1, 0);
I-Vector3 crossProduct = Vector3.Cross(v1, v2);
i-float dotProduct = Vector3.Dot(v1, v2);
iflothi isayinweAngle = Mathf.Atan2(crossProduct.magnitude, dotProduct) * Mathf.Rad2Deg;

uma (crossProduct.z < 0) signAngle *= -1; [/code] Lesi sibalo se-engeli esayiniwe sisebenzisa i- I-Dot futhi Cross Product wama-vector amabili ahlinzeka ngesiqondiso nobukhulu be-engeli phakathi kwawo, ngokulandelana. Okokugcina, uma ingxenye engu-z yomkhiqizo ophambene inegethivu, vele uphindaphinde i-engeli ngo -1 ukuze uthole i-engeli eyinegethivu.

Qiniseka ukuthi uyakhumbula ukuthi 'Ichashazi' kanye 'Nomkhiqizo Onqamulayo' yimiqondo eyisisekelo ngemuva kwesixazululo. Umkhiqizo wamachashazi uthola ngempumelelo i-cosine ye-engeli, kuyilapho umkhiqizo ophambanayo uthola i-sine. Lawa ma-operands asinika ukumelwa okugcwele kwevekhtha esikhaleni se-3D, okusiza isisombululo esiqinile sokuthola i-engeli esayiniwe.

Ukusebenzisa lezi zindlela kuzoyilungisa ngobuhlakani inkinga ye-Vector3.SignedAngle engabonisi i-engeli esayiniwe ku-Unity, futhi ungaqhubeka namaphrojekthi akho okuthuthukisa igeyimu. Khumbula ukuthi ukuqonda le misebenzi eyisisekelo ye-vector kuzovula iminyango yeminye imisebenzi ehlukahlukene ehilelekile ekuthuthukisweni kwegeyimu ye-3D. Jabulela ukubhala ngekhodi!

Okuthunyelwe okuhlobene:

Shiya amazwana