From Test-Scratch-Wiki

स्पर्श ()?
touching ( v)?
Category महसूस
Type बूलियन

स्पर्श ()? ब्लॉक एक महसूस ब्लॉक और बूलियन ब्लॉक है। ब्लॉक जाँचता है कि क्या इसका स्प्राइट माउस-पॉइंटर, एज या किसी अन्य स्प्राइट (एक रिपोर्टर ब्लॉक जो स्प्राइट का नाम लौटाता है, आमतौर पर एक चर का उपयोग किया जा सकता है) को छू रहा है। यदि स्प्राइट चयनित ऑब्जेक्ट को छू रहा है, तो ब्लॉक सत्य लौटाता है; यदि ऐसा नहीं है, तो यह असत्य लौटाता है।

यह ब्लॉक अलग तरह से व्यवहार करता है जब स्प्राइट छिपा हुआ होता है। अन्य स्प्राइट के साथ टकराव के लिए हर जाँच असत्य लौटाती है, हालाँकि, यह अभी भी माउस और किनारों को महसूस करता है।

पता लगाना

एक स्प्राइट दूसरे को छू रहा है या नहीं, यह इस बात पर निर्भर करता है कि स्प्राइट के दृश्य बनावट (उसकी पोशाक द्वारा परिभाषित) का कोई हिस्सा दूसरे को छू रहा है या नहीं। उदाहरण के लिए, यदि किसी स्प्राइट की पोशाक एक वृत्ताकार है, तो यह पता लगाने पर कि क्या यह अन्य स्प्राइट को छू रहा है, इसमें एक गोलाकार हिटबॉक्स होगा।


Note Note: इस ब्लॉक का टकराव का पता लगाने वाला डेटा बड़े या गतिशील स्प्राइट के साथ बारीक और गलत हो सकता है, खासकर जब भौतिकी इंजन पर लागू किया जाता है।

उदाहरण उपयोग

चूँकि यह ब्लॉक जाँचता है कि क्या इसका स्प्राइट किसी अन्य स्प्राइट या किनारे को छू रहा है, इसलिए टकराव का पता लगाने में इसका व्यापक रूप से उपयोग किया जाता है।

स्पर्श ()? ब्लॉक के लिए कुछ सामान्य उपयोग:

  • स्प्राइट को तब तक हिलाना जब तक कि वह स्क्रीन के किनारे को न छू ले
repeat until <touching (edge v)?>
   move (3) steps
end
  • एक स्प्राइट को दूसरे स्प्राइट का पीछा करते हुए तब तक चलाना जब तक पीछा करने वाला दूसरे स्प्राइट को छू न ले
repeat until <touching (Sprite2 v)?>
   point towards (Sprite2 v)
   move (3) steps
end
say [I got you!] for (2) secs
  • दीवारों से टकराने पर गोलियों को रोकना

इस उदाहरण में दीवार हिल रही है, और गोली स्थिर है।

forever
if <touching (wall v)?> then
hide
  • भूलभुलैया में, यह महसूस करना कि क्या कोई स्प्राइट किसी मृत-अंत पर पहुंच गया है
forever
if <touching (maze walls v)?> then
say [Dead end!] for (1) secs
  • जाँच करना कि क्या स्प्राइट माउस पॉइंटर को छू रहा है
when flag clicked
forever
if <touching (mouse-pointer v)?> then
switch costume to (highlighted v)
else
switch costume to (normal v)
end
  • यह जाँच करना कि क्या खिलाड़ी ने खेल में किसी शत्रु को छुआ है
forever
if <touching (Enemy v)?> then
say [Game over!]
stop [all v]
end

क्लोन टचिंग क्लोन

सामान्य तौर पर, अन्य स्प्राइट को लक्षित करने वाले अधिकांश ब्लॉक स्प्राइट के क्लोन में से किसी एक पर कार्य नहीं करेंगे, बल्कि पैरेंट स्प्राइट के लिए कार्य करेंगे। हालाँकि, इस ब्लॉक के साथ, यदि स्प्राइट1 के क्लोन में <touching (sprite2 v)?> का उपयोग किया जाता है, तो यह न केवल पैरेंट स्प्राइट को छूने पर, बल्कि किसी भी क्लोन को छूने पर भी सही रिपोर्ट करेगा।[1]

संबंधित सुझाव

कुछ स्क्रैचर्स एक ऐसा ब्लॉक चाहते हैं जो यह पता लगा सके कि दो अलग-अलग स्प्राइट्स एक दूसरे को छू रहे हैं या नहीं।[2]इस तरह के ब्लॉक का फ़ायदा यह है कि यह तीसरे स्प्राइट को यह समझने की क्षमता देता है कि क्या अन्य दो स्प्राइट एक दूसरे को छू रहे हैं। ऐसा ब्लॉक कुछ इस तरह दिखेगा:

<(sprite1 v) is touching (sprite2 v)? ::sensing>

इसे एक वैश्विक चर के साथ दोहराया जा सकता है, जिसमें से एक स्पर्श करने वाले स्प्राइट्स की जाँच की जाती है, और मान सेट किया जाता है, जैसे:

// स्प्राइट१ में
when I receive [Check for Touching v]
 if <touching (Sprite2 v)?> then
  set [Sprite1 Touching Sprite2? v] to [yes]
 else
  set [Sprite1 Touching Sprite2? v] to [no]
 end


// स्पर्श की जाँच करने के लिए इसे किसी भी स्प्राइट में रखें
broadcast (Check for Touching v) and wait
if <(Sprite1 Touching Sprite2?) = [yes]> then
//यहां स्पर्श करने पर वांछित आउटपुट डालें
else
// अगर वे यहाँ नहीं हैं तो आप जो चाहें डाल दें
end

संदर्भ

  1. projects:171158267
  2. Pinkamena से पूछें। (१९ /७ /२०१५ ) “स्प्राइट किसी भी चीज़ को छू रहा है।[title]” topic:135012
Cookies help us deliver our services. By using our services, you agree to our use of cookies.