खोज…


वाक्य - विन्यास

  • चतुर्धातुककरण (वेक्टर 3 आगे [, वेक्टर 3 ऊपर]);
  • क्वाटरनियन। एंगल एक्सीस (फ्लोट एंगल्स, वेक्टर 3 एक्सिसऑफरोटेशन);
  • float angleBetween = Quaternion.Angle (क्वाटर्नी रोटेशन 1, क्वाटर्नी रोटेशन 2);

इनटू टू क्वाटर्नियन बनाम यूलर

यूलर एंगल 90, 180, 45, 30 डिग्री जैसे "डिग्री एंगल" हैं। इटरन कोणों से चतुर्भुज भिन्न होते हैं कि वे एक इकाई क्षेत्र (त्रिज्या 1 इकाई) पर एक बिंदु का प्रतिनिधित्व करते हैं। आप इस गोले को यूनिट सर्कल के 3 डी संस्करण के रूप में सोच सकते हैं जिसे आप त्रिकोणमिति में सीखते हैं। इटरन कोणों से चतुर्भुज अलग होते हैं, जिसमें वे 3 डी रोटेशन को परिभाषित करने के लिए काल्पनिक संख्याओं का उपयोग करते हैं।

हालांकि यह जटिल लग सकता है (और यकीनन यह है), यूनिटी में महान अंतर्निहित कार्य हैं जो आपको यूलर कोणों और quaterions के बीच स्विच करने की अनुमति देते हैं, साथ ही उनके पीछे के गणित के बारे में एक भी बात जाने बिना, चतुर्भुज को संशोधित करने का कार्य करते हैं।

यूलर और Quaternion के बीच परिवर्तित

// Create a quaternion that represents 30 degrees about X, 10 degrees about Y
Quaternion rotation = Quaternion.Euler(30, 10, 0);

// Using a Vector
Vector3 EulerRotation = new Vector3(30, 10, 0);
Quaternion rotation = Quaternion.Euler(EulerRotation);

// Convert a transfroms Quaternion angles to Euler angles
Quaternion quaternionAngles = transform.rotation;
Vector3 eulerAngles = quaternionAngles.eulerAngles;

क्यों एक उद्धरण का उपयोग करें?

Quaternions एक समस्या को हल करता है जिसे जिम्बल लॉकिंग कहा जाता है। यह तब होता है जब रोटेशन की प्राथमिक धुरी रोटेशन की तृतीयक अक्ष के साथ मेल खाती है। यहाँ एक दृश्य उदाहरण है @ 2:09

कोटेशन लुक रोटेशन

Quaternion.LookRotation(Vector3 forward [, Vector3 up]) वेक्टर 3 Quaternion.LookRotation(Vector3 forward [, Vector3 up]) एक क्वाटरनियन रोटेशन बनाएगा जो फॉरवर्ड वेक्टर को that डाउन ’करता है और वाई अप को 'अप’ वेक्टर के साथ संरेखित करता है। यदि अप वेक्टर निर्दिष्ट नहीं है, तो वेक्टर 3.अप का उपयोग किया जाएगा।

इस गेम ऑब्जेक्ट को एक लक्ष्य गेम ऑब्जेक्ट पर देखने के लिए घुमाएं

// Find a game object in the scene named Target
public Transform target = GameObject.Find("Target").GetComponent<Transform>();

// We subtract our position from the target position to create a
// Vector that points from our position to the target position
// If we reverse the order, our rotation would be 180 degrees off.
Vector3 lookVector = target.position - transform.position;
Quaternion rotation = Quaternion.LookRotation(lookVector);
transform.rotation = rotation;


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow