unity3d
भौतिक विज्ञान
खोज…
Rigidbodies
अवलोकन
Rigidbody घटक गेमऑबजेक्ट को उस दृश्य में एक भौतिक उपस्थिति देता है जिसमें वह बलों का जवाब देने में सक्षम है। आप सीधे GameObject पर बल लागू कर सकते हैं या इसे गुरुत्वाकर्षण या बाहरी Rigidbody जैसे बाहरी बलों पर प्रतिक्रिया करने की अनुमति दे सकते हैं।
एक Rigidbody घटक जोड़ना
आप कंपोनेंट> फिजिक्स> रिगिडबॉडी पर क्लिक करके रिगिडोब जोड़ सकते हैं
एक कठोर वस्तु को ले जाना
यह अनुशंसा की जाती है कि यदि आप एक GameObject के लिए एक Rigidbody को लागू करते हैं जो आप बलों या टोक़ का उपयोग करके इसे स्थानांतरित करने के बजाय हेरफेर करने के लिए उपयोग करते हैं। इसके लिए AddForce()
या AddTorque()
विधियों का उपयोग करें:
// Add a force to the order of myForce in the forward direction of the Transform.
GetComponent<Rigidbody>().AddForce(transform.forward * myForce);
// Add torque about the Y axis to the order of myTurn.
GetComponent<Rigidbody>().AddTorque(transform.up * torque * myTurn);
द्रव्यमान
आप अन्य रिगिडबॉडी और बलों के साथ कैसे प्रतिक्रिया करते हैं, इसे प्रभावित करने के लिए एक रिगिडोबो गेम ऑबजेक्ट के द्रव्यमान को बदल सकते हैं। एक उच्च द्रव्यमान का अर्थ है गेमऑब्जेक्ट का अन्य भौतिकी-आधारित गेमऑब्जेक्ट पर अधिक प्रभाव पड़ेगा, और खुद को स्थानांतरित करने के लिए अधिक बल की आवश्यकता होगी। भिन्न द्रव्यमान की वस्तुएं उसी दर से गिरेंगी यदि उनके समान ड्रैग मान हों। कोड में बड़े पैमाने पर परिवर्तन करने के लिए:
GetComponent<Rigidbody>().mass = 1000;
खींचना
ड्रैग वैल्यू जितनी अधिक होगी, उतनी ही गतिमान वस्तु धीमी होती जाएगी। इसे विरोधी बल की तरह समझें। कोड में ड्रैग को बदलने के लिए:
GetComponent<Rigidbody>().drag = 10;
isKinematic
आप विज्ञान सम्बन्धी के रूप में एक दृढ़ पिण्ड चिह्नित करते हैं तो यह अन्य बलों से प्रभावित नहीं किया जा सकता है, लेकिन अभी भी अन्य GameObjects प्रभावित कर सकते हैं। कोड में परिवर्तन करने के लिए:
GetComponent<Rigidbody>().isKinematic = true;
प्रतिबन्ध
रिगिडो की स्थिति को स्थिर करने या स्थानीय अंतरिक्ष में घूमने के लिए प्रत्येक धुरी में बाधाओं को जोड़ना भी संभव है। डिफ़ॉल्ट RigidbodyConstraints.None
जैसा कि यहां दिखाया गया है:
कोड में बाधाओं का एक उदाहरण:
// Freeze rotation on all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation
// Freeze position on all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezePosition
// Freeze rotation and motion an all axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeAll
आप बिटवाइज या ऑपरेटर का उपयोग कर सकते हैं |
इस तरह कई बाधाओं को संयोजित करने के लिए:
// Allow rotation on X and Y axes and motion on Y and Z axes.
GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezePositionZ |
RigidbodyConstraints.FreezeRotationX;
टक्कर
यदि आप टकरावों का जवाब देने के लिए उस पर एक Rigidbody के साथ एक GameObject चाहते हैं, तो आपको इसके लिए एक कोलाइडर भी जोड़ना होगा। कोलाइडर के प्रकार हैं:
- बॉक्स कोलाइडर
- स्फियर कोलाइडर
- कैप्सूल टकराना
- पहिया ढोनेवाला
- जाल ढोनेवाला
यदि आप एक GameObject में एक से अधिक कोलाइडर लागू करते हैं, तो हम इसे एक कंपाउंड कोलाइडर कहते हैं।
आप OnTriggerEnter()
, OnTriggerStay()
और OnTriggerExit()
विधियों का उपयोग करने के लिए एक ट्रिगर में एक कोलाइडर बना सकते हैं। एक ट्रिगर कोलाइडर शारीरिक रूप से टकरावों पर प्रतिक्रिया नहीं करेगा, अन्य GameObjects बस इसके माध्यम से गुजरते हैं। वे यह पता लगाने के लिए उपयोगी हैं कि जब एक अन्य गेम ऑबजेक्ट एक निश्चित क्षेत्र में है या नहीं, उदाहरण के लिए, एक आइटम इकट्ठा करते समय, हम केवल इसके माध्यम से चलाने में सक्षम होना चाहते हैं लेकिन ऐसा होने पर पता लगा सकते हैं।
कठोर शरीर में गुरुत्वाकर्षण
useGravity
एक की संपत्ति RigidBody
नियंत्रित होता है कि गुरुत्वाकर्षण यह या प्रभावित नहीं। यदि RigidBody
को false
में सेट किया जाता है, तो बाहरी स्थान में मानो (बिना किसी दिशा में लगातार बल RigidBody
)।
GetComponent<RigidBody>().useGravity = false;
यह उन परिस्थितियों में बहुत उपयोगी है, जहां आपको गुरुत्वाकर्षण द्वारा नियंत्रित गति को छोड़कर RigidBody
अन्य सभी गुणों की आवश्यकता होती है।
सक्षम होने पर, RigidBody
, एक गुरुत्वाकर्षण बल से प्रभावित हो जाएगा के तहत स्थापित Physics Settings
:
ग्रेविटी दूसरा चुकता प्रति दुनिया इकाइयों में परिभाषित किया गया है, और एक तीन आयामी सदिश के रूप में यहाँ दर्ज किया गया है: जिसका अर्थ है कि उदाहरण छवि में सेटिंग्स के साथ, सभी RigidBodies
साथ useGravity
को संपत्ति सेट True
प्रति सेकंड 9.81 दुनिया इकाइयों के एक बल का अनुभव होगा नीचे की दिशा में प्रति सेकंड (एकता के समन्वय प्रणाली में नकारात्मक वाई-मान नीचे की ओर इंगित करता है)।