Object reference not set to instance of an object Unity3D c# -


यह प्लेयर स्क्रिप्ट है:

  सार्वजनिक वर्ग खिलाड़ी {सार्वजनिक प्रक्षेपण समर्थक; प्रो = GetComponent & lt; प्रक्षेप्य & gt; (); शून्य अपडेट () {गेम ऑब्जेक्ट जाओ = गेम ऑब्जेक्ट.फिंड ("दुश्मन"); ट्रांसफ़ॉर्म खिलाड़ी ट्रांससंसफ़ॉर्म = गो। ट्रान्सफॉर्म; वेक्टर 3 पॉसी = प्लेयर ट्रान्सफोर्म। Pro.Target = posi; // यहां त्रुटि मिलती है Instantiate (bulletprefab, स्थिति, Quaternion.identity); }}  

यह प्रक्षेप्य स्क्रिप्ट है: आवश्यकता: प्रक्षेप्य में लक्ष्य की अपडेटेड स्थिति प्राप्त करें, लेकिन प्रोजेक्टिबल मोशन () विधि से प्रारंभ () से कॉल किया जा रहा है और मैं उस बिंदु पर लक्ष्य वर्तमान की स्थिति चाहता हूँ जब Instantiate को प्लेयर में कहा जाता है ताकि प्रोजेक्लियर क्लास में Target_Distance की गणना की जा सके , लेकिन वेक्टर 3 से _pro.Target के असाइनमेंट की तरह लग रहा है जो एक सदिश 3 की अनुमति नहीं है। हो मैं इसे ठीक कर सकता हूं?

  सार्वजनिक वर्ग फेंकने वाला: मोनोबेहाविक {सार्वजनिक वेक्टर 3 लक्ष्य; सार्वजनिक गेमऑब्जेक्ट बुलेटप्रूफैब; सार्वजनिक फ्लोट फायरिंगएंगल = 45.0 एफ; सार्वजनिक फ्लोट गुरुत्व = 9.8 एफ; सार्वजनिक प्रक्षेप्य रूपांतरण; निजी ट्रांसफ़ॉर्म MyTransform; शून्य जाग () {myTransform = transform; } शून्य प्रारंभ () {myTransform.LookAt (लक्ष्य); StartCoroutine (प्रोजेक्टाइलमोशन ()); } IEnumerator ProjectileMotion () {उपज रिटर्न नई WaitForSeconds (0.25f); प्रोजेक्टिज़ीलोजीज़ = मेरी ट्रांसफॉर्मफोज़शन + न्यू वेक्टर 3 (0, 0.0 एफ, 0); // लक्ष्य लक्ष्य को लक्षित करने के लिए दूरी की गणना करना। डेसिस्टेंस = वेक्टर 3। डिस्टेंस (प्रोजेक्टिलेज़ोजी, लक्ष्य); डीबग करें। लॉग ("वास्तविक अपवादक नहीं" + लक्ष्य); फ्लोट प्रोजेक्टल_विलोसिटी = लिक्विड डिसिस्टेंस / (मैथ्यू सिन (2 * फायरिंगएन्गल * मैथ। डीजी 2 आरड) / ग्रेविटी); वेग के फ्लैग के एक्स एक्स इन्सेंनेट Vx = Mathf.Sqrt (प्रोजेक्टि_विलोसिटी) * Mathf.Cos (फायरिंगएन्गल * Mathf.Deg2Rad); फ्लोट Vy = Mathf.Sqrt (प्रोजेक्टिल_विलोसिटी) * मैथफ़िन (फायरिंगएन्गल * Mathf.Deg2Rad); // उड़ान समय के बाद वेग फ्लोट उड़ान के क्षैतिज घटक पर निर्भर करता है अवधि = target_Distance / Vx; // प्रक्षेप्य लक्ष्य पर प्रक्षेपित किया गया। प्रक्षेपण = Quaternion.LookRotation (लक्ष्य - Projectile.position); फ्लोट elapse_time = 0; जबकि (elapse_time & lt; flightDuration) / लूपिंग और बीता हुआ समय बढ़ाना {Projectile.Translate (0, (Vy - (गुरुत्वाकर्षण * elapse_time)) * Time.deltaTime, Vx * Time.deltaTime); Elapse_time + = Time.deltaTime; उपज रिटर्न नल; }}}  

लक्ष्य मौजूद है प्रक्षेपी वर्ग और केवल वेक्टर 3 है, इस त्रुटि को कैसे ठीक करें?

आपको" प्रक्षेपित "स्क्रिप्ट का संदर्भ मिलता है, जो कोड काम नहीं करता।

बदलें:

  सार्वजनिक प्रक्षेपण समर्थक; प्रो = GetComponent & lt; प्रक्षेप्य & gt; ();  

ऐसा कुछ करने के लिए:

  सार्वजनिक प्रक्षेप्य समर्थक; शून्य प्रारंभ () {pro = GetComponent & lt; प्रक्षेप्य & gt; (); }  

एक सुझाव के रूप में भी आप GameObject को कम करना चाहते हैं.फंड अपडेट फ़ंक्शन के अंदर इसकी उच्च लागत के कारण का उपयोग करता है।


Comments

Popular posts from this blog

html - Trouble with image gallery on codepen -

java - org.apache.http.ProtocolException: Target host is not specified -

How to access user directory in lazarus? -