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

इस कोड की एक प्रति यहां प्राप्त की जा सकती है।


सन्दर्भ

Cookies help us deliver our services. By using our services, you agree to our use of cookies.