From Test-Scratch-Wiki
() की ओर इंगित करें | |
point towards ( v)
| |
Category | गति |
Type | ढेर |
() की ओर इंगित करें ब्लॉक एक मोशन ब्लॉक और एक स्टैक ब्लॉक है जो अपने स्प्राइट को माउस-पॉइंटर या किसी अन्य स्प्राइट के कॉस्ट्यूम सेंटर की ओर इंगित करता है।
उदाहरण उपयोग
दिशा में इंगित करें () ब्लॉक के विपरीत, जो विशिष्ट वस्तुओं पर स्प्राइट को इंगित नहीं करता है, बिंदु की ओर () ब्लॉक अन्य स्प्राइट या माउस पॉइंटर पर स्प्राइट को इंगित कर सकता है।
() की ओर इंगित करें ब्लॉक के लिए कुछ सामान्य उपयोग:
- स्प्राइट को लगातार माउस की ओर इंगित करना
when gf clicked forever point towards (mouse-pointer v) move (10) steps
- स्प्राइट को कहां ले जाना है, इसका मार्गदर्शन करना
point towards (Sprite2 v) repeat until <touching (Sprite2 v)?> move (5) steps
- प्रोजेक्ट में एक लक्ष्य की ओर इशारा करते हुए
when I receive [Hint v] point towards (Treasure v)
समाधान
इस ब्लॉक को निम्नलिखित ब्लॉकों के साथ दोहराया जा सकता है, जो त्रिकोणमिति का उपयोग करता है:
set [delta_x v] to (([x position v] of (sprite 1 v)) - (x position)) set [delta_y v] to (([y position v] of (sprite 1 v)) - (y position)) if <(delta_y) = [0]> then if <(delta_x) < [0]> then point in direction (-90) else point in direction (90) end else if <(delta_y) < [0]> then point in direction ((180) + ([atan v] of ((delta_x) / (delta_y)))) else point in direction ([atan v] of ((delta_x) / (delta_y))) end end point in direction (([atan v] of ((([x position v] of (Sprite1 v)) - (x position)) / (([y position v] of (Sprite1 v)) - (y position)))) + ((180) * <([y position v] of (Sprite1 v)) < (y position)>)
हालाँकि, इसके लिए अधिक कोड की आवश्यकता होती है और इसकी पठनीयता कम हो जाती है।
संबंधित सुझाव
एक विशिष्ट निर्देशांक पर स्प्राइट को इंगित करने के लिए एक संबंधित ब्लॉक का अनुरोध अक्सर स्क्रैचर्स द्वारा किया गया है: [1] point towards x: (0) y: (0)::motion
यह उस स्थान पर एक स्प्राइट रखकर और () की ओर इंगित करें ब्लॉक का उपयोग करके, या इस कस्टम ब्लॉक को परिभाषित और उपयोग करके किया जा सकता है:
point towards x:() y:() :: custom define point towards x:(x) y:(y) set [delta_x v] to ((x) - (x position)) set [delta_y v] to ((y) - (y position)) if <(delta_y) = [0]> then if <(delta_x) < [0]> then point in direction (-90) else point in direction (90) end else if <(delta_y) < [0]> then point in direction ((180) + ([atan v] of ((delta_x) / (delta_y)))) else point in direction ([atan v] of ((delta_x) / (delta_y))) end end
इस कोड की एक प्रति यहां प्राप्त की जा सकती है।