From Test-Scratch-Wiki
यदि किनारे पर है, तो उछाल | |
if on edge, bounce
| |
Category | गति |
Type | ढेर |
Introduced in | १०जुलाई०४ |
यदि किनारे पर है, तो उछाल ब्लॉक एक मोशन ब्लॉक और एक स्टैक ब्लॉक है ब्लॉक यह देखने के लिए जांच करता है कि क्या कोई स्प्राइट स्क्रीन के किनारे को छू रहा है, और यदि यह है, तो स्प्राइट एक ऐसी दिशा की ओर इंगित करेगा जो उस दिशा को प्रतिबिम्बित करेगी जहाँ से वह आ रहा था। यह प्रतिबिंब कोण निर्धारित करने के लिए किनारे को दर्पण के रूप में उपयोग करता है। ब्लॉक स्प्राइट को स्क्रीन के किनारे से भी बाहर धकेल देगा।
उदाहरण उपयोग
- स्प्राइट को आंशिक रूप से स्क्रीन छोड़ने से रोकना (अक्सर, इसके बाद प्रतिबिंब को रोकने के लिए दिशा ब्लॉक होता है)
- प्रतिबिंब
- "पोंग" जैसे खेल
- स्प्राइट को स्क्रीन से उछलने की अनुमति देना:
- जब उपयोगकर्ता चाहता है कि कोई विशिष्ट स्प्राइट किनारे को छुए बिना स्क्रीन में रहे।
when gf clicked forever move (10) steps if on edge, bounce
- यह मछली जैसे खेलों के लिए भी काम करता है।
when gf clicked forever turn cw (pick random (-10) to (10)) degrees move (3) steps if on edge, bounce wait (0.01) seconds
समाधान
इस ब्लॉक को यह पता लगाकर दोहराया जा सकता है कि क्या स्प्राइट स्क्रीन के किनारे से परे है, और यदि ऐसा है तो स्प्राइट की दिशा बदल दी जा सकती है:
if <[240] < ([abs v] of (x position))> then point in direction ((0)-(direction)) end if <[180] < ([abs v] of (y position))> then point in direction ((0)-(direction)) end
हालाँकि, समाधान सही नहीं है, क्योंकि यह स्प्राइट को स्क्रीन के किनारे से बाहर नहीं धकेलता है। इसके अतिरिक्त, क्योंकि स्प्राइट की दिशा उसके वास्तविक आकार के बजाय उसके निर्देशांक के आधार पर बदलती है, पोशाक वाले स्प्राइट पोशाक केंद्र के आसपास केंद्रित नहीं होने के कारण स्क्रीन से उछलने के बजाय स्क्रीन के किनारे पर अटक सकते हैं।
बाउंस ब्लॉक
सुझाव फ़ोरम में कुछ उपयोगकर्ताओं ने एक सामान्यीकृत bounce::motion
ब्लॉक का अनुरोध किया है, जो स्प्राइट को अन्य स्प्राइट या रंगों से टकराने पर बाउंस करने की अनुमति देगा।[1][2][3] हालांकि, ब्लॉक को अस्वीकार कर दिया गया है, क्योंकि ऐसे ब्लॉक का कार्यान्वयन कितना अस्पष्ट है है।[4][5]