0% found this document useful (0 votes)
53 views15 pages

Unity

mhvmh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views15 pages

Unity

mhvmh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 15

HTTP://DIALUP.PERSIANBLOG.

IR

‫آﻣﻮزش اﺳﮑﺮﯾﭙﺖ ﻧﻮﯾﺴﯽ‬

Unity 3D
Game Engine
‫ﻗﻠﺐ ﻳﻚ ﺑﺎزي ﺗﻌﺎﻣﻠﻲ در اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ آن اﺳﺖ‪ .‬در ﻳﻮﻧﯿﺘﻲ‪ ،‬ھﻤﻪ ﭼﯿﺰ ﺑﺎﻳﺪ اﺳﻜﺮﻳﭙﺖ ﺷﻮد‪ .‬ﺧﻮﺷﺒﺨﺘﺎﻧﻪ‪،‬‬
‫اﺳﻜﺮﻳﭙﺖھﺎي آﻣﺎده اي را ﻣﻲﺗﻮان از ﻣﻨﺎﺑﻊ ﻣﺨﺘﻠﻒ درﻳﺎﻓﺖ ﻛﺮد‪ .‬ھﻤﺮاه ﻳﻮﻧﯿﺘﻲ ﻣﺠﻤﻮﻋﻪاي ﺑﺰرگ از اﺳﻜﺮﻳﭙﺖھﺎي ﻣﻔﯿﺪ اراﺋﻪ‬
‫ﺷﺪه اﺳﺖ ﺗﺎ ﺷﻤﺎ را ﻣﺴﻠﺢ و آﻣﺎده ﻛﺎر ﻛﻨﺪ‪ .‬ﻗﺴﻤﺖ ‪ Help‬ﻣﻤﻠﻮ از ﻣﺜﺎلھﺎ و اﺳﻨﯿﭙﺖ )ﺗﻜﻪ ﻛﺪ( اﺳﺖ‪ .‬ھﻤﭽﻨﯿﻦ ﻳﻚ ﺑﺨﺶ‬
‫ﻛﺎﻣﻞ در ﻣﻮرد اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ دارد‪ Unity Forum ،Unity 3D Wiki .‬و ‪ ، Unity Answers‬ﻣﻨﺎﺑﻊ ﺧﻮﺑﻲ ﺑﺮاي ﺑﺪﺳﺖ آوردن‬
‫اﺳﻜﺮﻳﭙﺖھﺎ ﻣﻲﺑﺎﺷﻨﺪ‪ .‬ﻣﺤﻞ دﻳﮕﺮي ﻛﻪ ﻣﻲﺗﻮاﻧﯿﺪ ﺑﺮاي اﺳﻜﺮﻳﭙﺖﻧﻮﻳﺴﻲ ﺑﻪ آن ﻣﺮاﺟﻌﻪ ﻛﻨﯿﺪ‪ ،‬آﻣﻮزشھﺎﻳﻲ اﺳﺖ ﻛﻪ از وب‬
‫ﺳﺎﻳﺖ ﻳﻮﻧﯿﺘﻲ ﻗﺎﺑﻞ داﻧﻠﻮد ﻣﻲﺑﺎﺷﻨﺪ‪ .‬ﺑﺴﯿﺎري از اﻳﻦ آﻣﻮزشھﺎ‪ ،‬ﺑﺨﻮﺑﻲ ﻧﺤﻮهي ﻛﺎر ﻛﺪھﺎ را ﺗﻮﺿﯿﺢ ﻣﻲدھﻨﺪ‪ .‬ﺗﻮﺟﻪ داﺷﺘﻪ‬
‫ﺑﺎﺷﯿﺪ ﻛﻪ اﺳﻜﺮﻳﭙﺖھﺎي ﻳﻮﻧﯿﺘﻲ را ﻣﻲﺗﻮان ﺑﻪ زﺑﺎنھﺎي ‪ C# ،JavaScript‬و ‪ Boo‬ﻧﻮﺷﺖ‪ ،‬وﻟﻲ آﻣﻮزشھﺎي ﻳﻮﻧﯿﺘﻲ ﺑﻄﻮر رﺳﻤﻲ‬
‫از ‪ JavaScript‬ﺑﺮاي اﻳﻦ ﻛﺎر اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ و ﻣﻦ ﻧﯿﺰ از اﻳﻦ روﻳﻪ ﺗﺒﻌﯿﺖ ﺧﻮاھﻢ ﻛﺮد‪.‬‬

‫ھﺪف از اﻳﻦ آﻣﻮزش‪ ،‬ﻳﺎد دادن اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ﺑﻄﻮر ﻛﺎﻣﻞ ﻧﯿﺴﺖ‪ ،‬ﺑﻠﻜﻪ ھﺪف اﻳﻦ اﺳﺖ ﻛﻪ ﺷﻤﺎ ﺑﺘﻮاﻧﯿﺪ‬
‫اﺳﻜﺮﻳﭙﺖھﺎﻳﻲ را ﻛﻪ ﭘﯿﺪا ﻣﻲﻛﻨﯿﺪ ﺑﮫﺘﺮ ﺑﺨﻮاﻧﯿﺪ و ﺷﻨﺎﺧﺘﻲ اوﻟﯿﻪ از ﻛﺎرﻛﺮد اﻳﻦ ﻛﺪھﺎ ﺑﺪﺳﺖ آورﻳﺪ‪ .‬ﺑﺴﯿﺎري از اﺳﻜﺮﻳﭙﺖھﺎ‬
‫ﻮﺨﺑﺑﻲ ﻣﺴﺘﻨﺪﺳﺎزي ﺷﺪهاﻧﺪ‪ ،‬وﻟﻲ ﺑﺮﺧﻲ دﻳﮕﺮ اﻳﻨﮕﻮﻧﻪ ﻧﯿﺴﺘﻨﺪ و ﺑﻨﺎﺑﺮاﻳﻦ‪ ،‬ﻣﻦ ﺑﺨﺶھﺎي ﻛﻠﯿﺪي را ﻛﻢ ﻛﻢ ﺑﻪ ﺷﻤﺎ آﻣﻮزش‬
‫ﻲﻣ دھﻢ ﺗﺎ ﺑﻪ راﺣﺖﺗﺮﻳﻦ روش اﺳﻜﺮﻳﭙﺖھﺎ را ﺑﺨﻮاﻧﯿﺪ‪ .‬ﺑﯿﺎد داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﻛﻪ اﺳﻜﺮﻳﭙﺖﻧﻮﻳﺴﻲ ﺑﯿﺸﺘﺮ ﻣﻨﻄﻖ و رﺳﻢ اﻟﺨﻂ‬
‫اﺳﺖ و ﻣﻨﻄﻖ ﭼﯿﺰي اﺳﺖ ﻛﻪ ﺗﻌﺎﻣﻞ را ﺑﻪ ﭘﯿﺶ ﻣﻲﺑﺮد‪.‬‬

‫اﺳﻜﺮﻳﭙﺖ ﭼﯿﺴﺖ؟‬

‫اﺳﻜﺮﻳﺖ را ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از دﺳﺘﻮراﻟﻌﻤﻞھﺎ ﻓﺮض ﻛﻨﯿﺪ‪ .‬ﻣﺜﻼ ً ﺷﻤﺎ آﺧﺮ ھﻔﺘﻪ ﺑﺮاي ﻣﮫﻤﺎﻧﻲ ﻗﺮار اﺳﺖ ﺑﻪ ﺑﺎغ‬
‫ﻢﻋ ﻗﺰي ﺑﺮوﻳﺪ‪ .‬اﮔﺮ آدرس را ﺑﻠﺪ ﻧﺒﺎﺷﯿﺪ‪ ،‬از ‪ Google‬ﺎ ﻳ ‪ MapQuest‬ﺑﺮاي دﻳﺪن ﻣﺴﯿﺮ اﺳﺘﻔﺎده ﻣﻲﻛﻨﯿﺪ و آن را ﭼﺎپ ﻣﻲﻛﻨﯿﺪ و‬
‫ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ‪ ،‬ﻣﺴﯿﺮ را ﺑﻄﻮر ﻛﺎﻣﻞ در دﺳﺖ دارﻳﺪ‪ .‬در ﺻﺤﺒﺘﻲ ﻛﻪ ﺑﺎ ﻋﻢﻗﺰي دارﻳﺪ‪ ،‬از ﺷﻤﺎ ﺧﻮاﺳﺘﻪ ﻣﻲﺷﻮد ﺗﺎ ﺗﻨﻘﻼﺗﻲ ﺑﺮاي‬
‫ﻣﮫﻤﺎﻧﻲ ﺧﺮﻳﺪاري ﻛﻨﯿﺪ‪ .‬ﺷﻤﺎ ھﻢ روي ﻧﻘﺸﻪاي ﻛﻪ در دﺳﺖ دارﻳﺪ‪ ،‬آﻧﭽﻪ را ﻛﻪ ﺑﺎﻳﺪ ﺧﺮﻳﺪاري ﺷﻮد‪ ،‬ﻳﺎدداﺷﺖ ﻣﻲﻛﻨﯿﺪ ﺗﺎ ﺳﺮ‬
‫راه از ﻓﺮوﺷﮕﺎه ﺧﺮﻳﺪاري ﻛﻨﯿﺪ‪ .‬ھﻤﭽﻨﯿﻦ ﺧﻮاھﺮ ﺷﻤﺎ ﺑﻪ ﺷﻤﺎ ﻣﻲﮔﻮﻳﺪ ﻛﻪ وﻗﺘﻲ ﺑﻪ آﻧﺠﺎ رﺳﯿﺪﻳﺪ‪ ،‬ﻣﺎﺷﯿﻦ را دورﺗﺮ ﭘﺎرك ﻛﻨﯿﺪ ﺗﺎ‬
‫ھﻤﻪ ﺑﺘﻮاﻧﻨﺪ وارد ﺑﺎغ ﺷﻮﻧﺪ‪ .‬ﺑﺮادرﺗﺎن ھﻢ ﻣﻲﮔﻮﻳﺪ ﻛﻪ ﭼﺎدر ﻣﺎﺷﯿﻦ را ﻓﺮاﻣﻮش ﻧﻜﻨﯿﺪ‪ ،‬ﭼﻮن ﻣﺮغ و ﺧﺮوسھﺎي ﻋﻢﻗﺰي ﻣﻤﻜﻦ‬
‫اﺳﺖ روي ﻣﺎﺷﯿﻦ ﺷﻤﺎ ﺧﺮاﺑﻜﺎري ﻛﻨﻨﺪ‪ .‬ﺑﺮاي اﻳﻨﻜﻪ اﻳﻦ ﻣﻄﺎﻟﺐ را ﻧﯿﺰ ﻓﺮاﻣﻮش ﻧﻜﻨﯿﺪ‪ ،‬در ﭘﺸﺖ ﻛﺎﻏﺬ ﻧﻘﺸﻪ‪ ،‬آنھﺎ را ﻳﺎدداﺷﺖ‬
‫ﻲﻣﻛﻨﯿﺪ و ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ﻳﻚ اﺳﻜﺮﻳﭙﺖ اﻳﺠﺎد ﺷﺪه اﺳﺖ‪.‬‬

‫اﺳﻜﺮﻳﭙﺖھﺎ‪ ،‬ﻣﻲﺗﻮاﻧﻨﺪ ﺣﺎوي ھﺮ ﻣﯿﺰان اطﻼﻋﺎت و دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺎﺷﻨﺪ‪ .‬اﻳﻦ ﺑﺴﺘﮕﻲ ﺑﻪ ﺷﻤﺎ دارد ﻛﻪ ﭼﮕﻮﻧﻪ‬
‫اﺳﻜﺮﻳﭙﺖھﺎي ﺧﻮد را ﻣﺮﺗﺐ ﻧﮕﮫﺪارﻳﺪ ﺗﺎ ﻣﻮﺗﻮر ﺑﺎزي ﺑﺪاﻧﺪ ﻛﻪ ﭼﻪ ﻣﻮﻗﻊ از دﺳﺘﻮراﻟﻌﻤﻞھﺎ اﺳﺘﻔﺎده ﻛﻨﺪ‪.‬‬

‫ﭼﺎﻟﺶ دﻳﮕﺮ در ﻣﻮرد اﺳﻜﺮﻳﭙﺖ‪ ،‬ﻣﺤﻠﻲ اﺳﺖ ﻛﻪ آن را ﻗﺮار ﻣﻲدھﯿﺪ‪ .‬در ﻣﻮرد ﺑﺮﺧﻲ اﺳﻜﺮﻳﭙﺖھﺎ‪ ،‬ﻣﺎﻧﻨﺪ‬
‫دﺳﺘﻮراﻟﻌﻤﻞھﺎي ﺑﺎز و ﺑﺴﺘﻪ ﻛﺮدن ﻳﻚ در‪ ،‬اﻧﺘﺨﺎب ﺑﺴﯿﺎر ﺳﺎده اﺳﺖ‪ .‬اﻳﻦ اﺳﻜﺮﻳﭙﺖ در ھﺮ ﺟﺎﻳﻲ از ﺑﺎزي ﻛﻪ دري وﺟﻮد داﺷﺘﻪ‬
‫ﺑﺎﺷﺪ‪ ،‬ﻻزم اﺳﺖ‪ .‬ﺑﻪ ھﻤﯿﻦ ﺗﺮﺗﯿﺐ‪ ،‬اﺳﻜﺮﻳﭙﺘﻲ ﻛﻪ ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﺗﺎ ﻲ ﺣﺎ ﺴﻤﺗ از آب ﺑﯿﺮون آﻣﺪه و ﺑﻪ ﺑﺎزﻳﻜﻦ ﺣﻤﻠﻪ ﻛﻨﺪ‪،‬‬
‫ﻣﺸﺨﺼﺎ ً در ﺟﺎﻳﻲ ﻗﺮار ﻣﻲﮔﯿﺮد ﻛﻪ ﺗﻤﺴﺎح ﻗﺮار دارد‪ .‬اﺳﻜﺮﻳﭙﺖھﺎي دﻳﮕﺮ‪ ،‬ﺷﺎﻳﺪ اﺻﻼ ً ﺑﻪ ﭼﯿﺰ ﺧﺎﺻﻲ ﻣﺮﺑﻮط ﻧﺒﺎﺷﻨﺪ‪ ،‬ﻣﺎﻧﻨﺪ‬
‫اﺳﻜﺮﻳﭙﺘﻲ ﻛﻪ روز را ﺷﺐ ﻣﻲﻛﻨﺪ‪ .‬ﺷﺎﻳﺪ اﺳﻜﺮﻳﭙﺘﻲ وﺿﻌﯿﺖ اﺷﯿﺎء ﻣﺨﺘﻠﻔﻲ را در ﺑﺎزي ﻋﻮض ﻛﻨﺪ‪ ،‬وﻟﻲ ﺑﺴﺘﮕﻲ ﺑﻪ زﻣﺎن‬
‫داﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﻧﻪ ﺗﻌﺎﻣﻞ ﺑﺎ ﻛﺎرﺑﺮ‪ .‬در ﭼﻨﯿﻦ ﻣﻮاردي‪ ،‬ﻣﻲﺗﻮاﻧﯿﺪ ﻳﻚ ‪ GameObject‬ﺧﺎﻟﻲ ﺑﺴﺎزﻳﺪ ﻛﻪ درﺑﺮ ﮔﯿﺮﻧﺪه اﺳﻜﺮﻳﭙﺖ ﻣﻮردﻧﻈﺮ‬
‫ﺪﺷﺎ ﺎﻤﺷ‪.‬‬

‫در ﻳﻮﻧﯿﺘﻲ‪ ،‬ﻣﻲﺗﻮاﻧﯿﻢ اﺷﯿﺎء را ﺑﺎ ھﺮ ﺗﻌﺪاد اﺳﻜﺮﻳﭙﺘﻲ ﻛﻪ ﺑﺨﻮاھﯿﻢ‪ ،‬دﺳﺘﻜﺎري ﻛﻨﯿﻢ‪ .‬ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﻣﻲﺗﻮاﻧﺪ در ﻛﻨﺎر‬
‫‪GameObject‬ي ﻛﻪ دﺳﺘﻜﺎر ﻣﻲﺪ ﻧﺎ ﺑ ﺪﻨﻛ ﻳﺎ ﻣﺜﻼ ً ﻣﺎﻧﻨﺪ ﻛﻠﯿﺪ ﺑﺮق‪ ،‬ﻣﻤﻜﻦ اﺳﺖ ﻋﻤﻠﻲ را روي ﺷﻲء ﻣﺘﻔﺎوﺗﻲ ﻣﺎﻧﻨﺪ ﻻﻣﭗ‬
‫اﻧﺠﺎم دھﺪ‪ .‬اﮔﺮ ﻳﻚ ﺷﻲء داراي ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﺑﺎﺷﺪ ﻛﻪ ﺷﺎﻣﻞ ﺗﻤﺎم اطﻼﻋﺎت و دﺳﺘﻮراﻟﻌﻤﻞھﺎي ﻣﻮرد ﻧﯿﺎز آن ﺷﻲء ﺑﺎﺷﺪ‪ ،‬اﻳﻦ‬
‫اﺳﻜﺮﻳﭙﺖ ﺑﺴﯿﺎر ﺧﺎص ﺧﻮاھﺪ ﺑﻮد و ﻗﺎﺑﻠﯿﺖ اﺳﺘﻔﺎده ﻣﺠﺪد ﺧﻮد را از دﺳﺖ ﺧﻮاھﺪ داد‪ .‬درﺳﺖ ﻣﺎﻧﻨﺪ ﻟﺒﺎس ﻳﻚ دﺧﺘﺮ ﺟﻮان‪.‬‬
‫دﺧﺘﺮان ﻟﺒﺎس‪ ،‬ﻛﻔﺶ‪ ،‬ﻛﻼه‪ ،‬ﺟﻮراب و ‪ ...‬را دﺳﺘﻪ ﺑﻨﺪي ﻣﻲﻛﻨﻨﺪ و ﺑﻪ اﺻﻄﻼح ﺑﺎھﻢ ﺳﺖ ﻣﻲﻛﻨﻨﺪ‪ .‬ﻣﺜﻼ ً ﺻﻮرﺗﻲھﺎ ﺑﺎھﻢ‪،‬‬
‫ﺳﺒﺰھﺎ ﺑﺎھﻢ و ‪ ....‬وﻟﻲ ﺑﺎ اﻳﻦ ﻛﺎر دﻳﮕﺮ اﻧﻌﻄﺎف ﻗﺒﻠﻲ ﺑﺮاي ﺗﺮﻛﯿﺐ اﻳﻦ رﻧﮓھﺎ و ﻟﺒﺎسھﺎ وﺟﻮد ﻧﺨﻮاھﺪ داﺷﺖ‪ .‬اﺳﻜﺮﻳﭙﺖ ﺧﻮب‪،‬‬
‫اﺳﻜﺮﻳﭙﺘﻲ اﺳﺖ ﻛﻪ ﺑﺘﻮان ﺑﺎرھﺎ و ﺑﺎرھﺎ از آن اﺳﺘﻔﺎده ﻛﺮد‪ .‬ﻗﺒﻞ از اﻳﻨﻜﻪ از دﺳﺖ ﺗﺌﻮريھﺎي اﺳﻜﺮﻳﭙﺖﻧﻮﻳﺴﻲ ﺳﺮﮔﯿﺠﻪ‬
‫ﺑﮕﯿﺮﻳﺪ‪ ،‬ﺻﺤﺒﺖ را ﻛﻮﺗﺎه ﻛﺮده و ﺷﺮوع ﺑﻪ ﺳﺎﺧﺖ ﭼﻨﺪ اﺳﻜﺮﻳﭙﺖ ﺳﺎده ﻣﻲﻛﻨﯿﻢ‪.‬‬

‫اﺟﺰاي ﻳﻚ اﺳﻜﺮﻳﭙﺖ‬

‫اﺳﻜﺮﻳﭙﺖ از ﭼﮫﺎر ﺟﺰء اﺻﻠﻲ ﺗﺸﻜﯿﻞ ﺷﺪه اﺳﺖ‪ :‬ﻣﺘﻐﯿﺮھﺎ‪ ،‬ﺗﻮاﺑﻊ‪ ،‬ﻣﻌﺎدﻻت و ﺗﻮﺿﯿﺤﺎت‪ .‬ﻣﺘﻐﯿﺮھﺎ درﺑﺮ ﮔﯿﺮﻧﺪه ﻣﻘﺎدﻳﺮي‬
‫ﻣﺎﻧﻨﺪ اﻋﺪاد ﻳﺎ ﻣﺘﻮن ﻲﻣﺑﺎﺷﻨﺪ‪ .‬ﺗﻮاﺑﻊ ﻛﺎري اﻧﺠﺎم ﻣﻲدھﻨﺪ ﻛﻪ ﻣﻌﻤﻮﻻ ً در ارﺗﺒﺎط ﺑﺎ ﻣﺘﻐﯿﺮھﺎ و ﻣﻌﺎدﻻت اﺳﺖ‪ .‬ﺗﻮﺿﯿﺤﺎت ﻧﯿﺰ در‬
‫زﻣﺎن اﺟﺮاي ﻛﺪ ﻧﺎدﻳﺪه ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮﻧﺪ و ﺑﻪ ﺷﻤﺎ اﻣﻜﺎن اﻳﺠﺎد ﻳﺎدداﺷﺖ در ﻣﻮرد ﻧﺤﻮهي ﻛﺎر ﻛﺪ ﻧﻮﺷﺘﻪ ﺷﺪه را ﻣﻲدھﻨﺪ ‪ .‬ﺎﺑ‬
‫اﺳﺘﻔﺎده از ﺗﻮﺿﯿﺤﺎت ﺣﺘﻲ ﻣﻲﺗﻮان ﺑﺨﺸﻲ از ﻛﺪ را ﻣﻮﻗﺘﺎ ً از ﻛﺎر اﻧﺪاﺧﺖ‪.‬‬
‫ﺗﻮاﺑﻊ‬

‫ﺗﻮاﺑﻊ ﻳﻮﻧﯿﺘﻲ را ﻣﻲﺗﻮان ﺑﻪ ﺳﻪ ﻧﻮع ﺗﻘﺴﯿﻢ ﻛﺮد‪ :‬ﻣﺮﺑﻮط ﺑﻪ ﺑﺎزي )ﺳﯿﺴﺘﻢ‪ ،‬ورودي‪ ،‬ﺷﺒﻜﻪ(‪ ،‬ﻣﺨﺼﻮص اﺷﯿﺎء و ﺗﻌﺮﻳﻒ‬
‫ﺷﺪه ﺗﻮﺳﻂ ﻛﺎرﺑﺮ‪.‬‬

‫اﮔﺮ ﺑﺮاي ﻛﺎر ﻋﻤﻠﻲ اﻳﻦ آﻣﻮزش ﻳﻮﻧﯿﺘﻲ ﺧﻮد را ﺑﺎز ﻣﻲﻛﻨﯿﺪ‪ ،‬ﻳﻚ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺑﺎز ﻛﻨﯿﺪ‪ ،‬ﻳﻚ ﻣﻜﻌﺐ ﺗﺮﺳﯿﻢ ﻛﻨﯿﺪ‪ .‬ﻳﻚ ﻛﺮه در‬
‫وﺳﻂ آن اﻳﺠﺎد ﻛﻨﯿﺪ و ﺑﻪ آﻧﮫﺎ ﺑﺎﻓﺖ ﺑﺪھﯿﺪ‪ .‬ﺳﭙﺲ ﻳﻚ ﻧﻮر ﻧﯿﺰ ﺑﺮاي اﺷﯿﺎء ﺗﻌﺮﻳﻒ ﻛﻨﯿﺪ و ﻓﺎﻳﻞ را ﺑﺎ ﻧﺎم ‪ TestScene1‬ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬
‫ﺳﭙﺲ ﻣﺮاﺣﻞ زﻳﺮ را دﻧﺒﺎل ﻛﻨﯿﺪ‪:‬‬

‫روي ‪ TestScene1‬در ﻧﻤﺎي ﭘﺮوژه ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪.‬‬ ‫‪-١‬‬


‫ﻳﻚ ‪ New Folder‬در ﻧﻤﺎي ﭘﺮوژه اﻳﺠﺎد ﻛﻨﯿﺪ‪.‬‬ ‫‪-٢‬‬
‫اﻳﻦ ﻓﻮﻟﺪر را ‪ My Scripts‬ﻧﺎﻣﮕﺬاري ﻛﻨﯿﺪ‪.‬‬ ‫‪-٣‬‬
‫در ﺣﺎﻟﻲ ﻛﻪ ﻓﻮﻟﺪر ﺟﺪﻳﺪ در ﺣﺎل اﻧﺘﺨﺎب اﺳﺖ‪ ،‬ﻛﻠﯿﻚ راﺳﺖ ﻛﻨﯿﺪ ﺗﺎ ﻣﻨﻮي ﻣﺮﺑﻮط ظﺎھﺮ ﺷﻮد‪ .‬از زﻳﺮﻣﻨﻮي ‪،Create‬‬ ‫‪-۴‬‬
‫ﮔﺰﻳﻨﻪي ‪ JavaScript‬را اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪.‬‬

‫ﻗﺎﻧﻮن‪ :‬در اﻳﻦ آﻣﻮزش‪ ،‬ھﺮﺑﺎر ﻛﻪ از ﺷﻤﺎ ﺧﻮاﺳﺘﻪ ﻣﻲﺷﻮد ﺗﺎ ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ اﻳﺠﺎد ﻛﻨﯿﺪ‪ ،‬ﻓﺮض ﻛﻨﯿﺪ ﻛﻪ اﻳﻦ اﺳﻜﺮﻳﭙﺖ ﻳﻚ‬
‫‪ JavaScript‬اﺳﺖ‪.‬‬

‫ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ ﺑﻨﺎم ‪ NewBehaviorScript‬ﺑﻪ ﻓﻮﻟﺪر ﺷﻤﺎ اﺿﺎﻓﻪ ﻣﻲﺷﻮد‪ .‬ﻣﻲﺗﻮاﻧﯿﺪ ﻣﺤﺘﻮﻳﺎت آن را در ‪Inspector‬‬
‫ﻣﺸﺎھﺪه ﻛﻨﯿﺪ‪ ،‬وﻟﻲ از آﻧﺠﺎ ﻗﺎﺑﻞ وﻳﺮاﻳﺶ ﻧﺨﻮاھﺪ ﺑﻮد‪.‬‬

‫ﺷﻜﻞ ‪ – ١‬اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ‬

‫ﻧﻜﺘﻪ‪ :‬ھﻤﯿﺸﻪ اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ ﺧﻮد را ﻗﺒﻞ از وﻳﺮاﻳﺶ آن‪ ،‬ﺗﻐﯿﯿﺮ ﻧﺎم دھﯿﺪ‪.‬‬

‫ﻧﺎم آن را ﺑﺎ ﻛﻠﯿﺪ روي ﻧﺎم در ﻧﻤﺎي ﭘﺮوژه ﺗﻐﯿﯿﺮ دھﯿﺪ‪.‬‬ ‫‪-۵‬‬


‫ﻧﺎم ‪ SimpleRotate‬را ﺑﺮاي اﺳﻜﺮﻳﭙﺖ ﺧﻮد اﻧﺘﺨﺎب ﻛﺮده و ﻛﻠﯿﺪ ‪ Enter‬را ﻓﺸﺎر دھﯿﺪ‪.‬‬ ‫‪-۶‬‬
‫ﺑﺮاي ﺑﺎز ﻛﺮدن ‪ UniSciTE‬ﻛﻪ وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ اﺳﺖ )در ﻣﻚ ‪ ،(Unitron‬ﻳﺎ روي ﻧﺎم اﺳﻜﺮﻳﭙﺖ در ﻧﻤﺎي ﭘﺮوژه دوﺑﺎر‬ ‫‪-٧‬‬
‫ﻛﻠﯿﻚ ﻛﻨﯿﺪ و ﻳﺎ اﻳﻨﻜﻪ از ﻛﻠﯿﺪ ‪ Edit‬در ﺑﺎﻻي ‪ Inspector‬اﺳﺘﻔﺎده ﻛﻨﯿﺪ‪.‬‬

‫ﻧﻜﺘﻪ‪ :‬اﮔﺮ از ﻳﻮﻧﯿﺘﻲ روي ﻣﻚ اﺳﺘﻔﺎده ﻣﻲﻛﻨﯿﺪ‪ ،‬وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ ‪ Unitron‬ﻧﺎم دارد‪ .‬رﻧﮓھﺎ و ﻗﻠﻢھﺎ ﺑﺎ ﺷﻜﻞھﺎي ﻣﺎ ﻛﻤﻲ‬
‫ﻣﺘﻔﺎوت ﺧﻮاھﻨﺪ ﺑﻮد‪.‬‬

‫ﺷﻜﻞ ‪ -٢‬اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ ﻛﻪ در وﻳﺮاﻳﺸﮕﺮ ﺑﺎز ﺷﺪه اﺳﺖ‪.‬‬


‫ھﻤﺎﻧﻄﻮر ﻛﻪ در ﺷﻜﻞ ‪ ٢‬ﻣﻲﺑﯿﻨﯿﺪ‪ ،‬اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ از ﻗﺒﻞ ﻳﻚ ﺗﻜﻪ ﻛﺪ در ﺧﻮد دارد ﻛﻪ ﻳﻚ ﺗﺎﺑﻊ ‪ Update‬ﺧﺎﻟﻲ اﺳﺖ‪.‬‬

‫{ )( ‪function Update‬‬

‫}‬

‫ﺗﺸﺮﻳﺢ ﻳﻚ ﺗﺎﺑﻊ‬

‫‪ function‬ﭼﯿﺴﺖ؟ ﻳﻚ ﺗﺎﺑﻊ ﻳﺎ ‪ function‬ﻛﻪ ﺑﺎ ﺣﺮوف ﻛﻮﭼﻚ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪ ،‬ﺣﺎوي ﻣﺠﻤﻮﻋﻪ اي از‬ ‫‪-‬‬
‫دﺳﺘﻮراﻟﻌﻤﻞھﺎﺳﺖ‪.‬‬
‫ﻧﺎم آن ﭼﯿﺴﺖ؟ ‪ .Update‬اﺳﺎﻣﻲ ﺗﻮاﺑﻊ ھﻤﯿﺸﻪ داراي ﺣﺮف اول ﺑﺰرگ ﻣﻲﺑﺎﺷﻨﺪ‪.‬‬ ‫‪-‬‬
‫آرﮔﻮﻣﺎنھﺎﻳﺶ ﻛﺪاﻣﻨﺪ؟ )( ‪ .‬اطﻼﻋﺎﺗﻲ ﻛﻪ ھﻨﮕﺎم ﻓﺮاﺧﻮاﻧﻲ ﺑﻪ ﺗﺎﺑﻊ داده ﻣﻲﺷﻮد‪ .‬در اﻳﻦ ﻣﻮرد‪ ،‬ھﯿﭻ دادهاي ﺑﻪ ﺗﺎﺑﻊ‬ ‫‪-‬‬
‫داده ﻧﻤﻲﺷﻮد و ﺑﻪ ھﻤﯿﻦ ﻋﻠﺖ ﭘﺮاﻧﺘﺰھﺎ ﺧﺎﻟﻲ ﻣﻲﺑﺎﺷﻨﺪ‪.‬‬
‫ﻣﺤﺘﻮﻳﺎﺗﺶ ﻛﺪاﻣﻨﺪ؟ }{ ‪ .‬ﻣﺤﺘﻮﻳﺎت ﻳﺎ دﺳﺘﻮراﻟﻌﻤﻞھﺎ درون آﻛﻮﻻدھﺎ ﻗﺮار ﻣﻲﮔﯿﺮﻧﺪ‪ .‬در اﻳﻦ ﺗﺎﺑﻊ‪ ،‬ھﻨﻮز ھﯿﭻ‬ ‫‪-‬‬
‫دﺳﺘﻮراﻟﻌﻤﻠﻲ وﺟﻮد ﻧﺪارد‪.‬‬

‫ﺗﺎﺑﻊ ‪ Update‬ﻳﻜﻲ از ﻣﮫﻤﺘﺮﻳﻦ ﺗﻮاﺑﻊ در ھﺮ ﻣﻮﺗﻮر ﺑﺎزي اﺳﺖ‪ .‬اﻳﻦ ﺗﺎﺑﻊ ﺳﯿﺴﺘﻤﻲ دﺳﺖﻛﻢ در ھﺮ ﻓﺮﻳﻢ ﭼﻚ ﻣﻲﺷﻮد ﺗﺎ‬
‫ﭼﯿﺰھﺎﻳﻲ ﻛﻪ ﺑﺎﻳﺪ اﺟﺮا ﺷﻮﻧﺪ‪ ،‬ﻣﺸﺨﺺ ﺷﻮد‪ .‬اﻳﻦ ﺗﺎﺑﻊ ﻣﻲﺗﻮاﻧﺪ ﻳﻚ ‪ Transform‬ﻣﺎﻧﻨﺪ ﭼﺮﺧﺶ ﻣﺪاوم اﻳﺠﺎد ﻛﻨﺪ ﻳﺎ ﻛﻨﺘﺮل ﻛﻨﺪ ﻛﻪ‬
‫آﻳﺎ ﺷﺮاﻳﻂ ﺧﺎﺻﻲ رخ داده اﺳﺖ ﻳﺎ ﻧﻪ و ﺑﺴﯿﺎري ﻣﻮارد دﻳﮕﺮ‪.‬‬

‫ﻣﻜﺎنﻧﻤﺎ را ﺑﻌﺪ از آﻛﻮﻻد ﻗﺮار دھﯿﺪ و ﻛﻠﯿﺪ ‪ Enter‬را ﭼﻨﺪ ﺑﺎر ﻓﺸﺎر دھﯿﺪ ﺗﺎ ﻓﻀﺎي ﻛﺎﻓﻲ ﺑﺮاي ﻛﺪﻧﻮﻳﺴﻲ ﺷﻤﺎ اﻳﺠﺎد‬ ‫‪-١‬‬
‫ﺷﻮد‪.‬‬
‫از درون ﺗﺎﺑﻊ )درون آﻛﻮﻻدھﺎ(‪ ،‬ﻳﻚ ﻓﺎﺻﻠﻪ ﺑﺎ ‪ Tab‬اﻳﺠﺎد ﻛﻨﯿﺪ و دﺳﺘﻮر زﻳﺮ را ﺗﺎﻳﭗ ﻛﻨﯿﺪ‪:‬‬ ‫‪-٢‬‬
‫;)‪transform.Rotate(0,5,0‬‬

‫ﻧﻜﺘﻪ‪ :‬ﺗﻮرﻓﺘﮕﻲ ﻳﺎ اﻳﺠﺎد ﻓﺎﺻﻠﻪ ﺑﺎ ‪ Tab‬ﺑﺨﺶ ﻻزم در رﺳﻢاﻟﺨﻂ ﻧﯿﺴﺖ‪ ،‬وﻟﻲ ﺧﻮاﻧﺪن اﺳﻜﺮﻳﭙﺖھﺎ را ﺑﺮاي ﺷﻤﺎ ﺳﺎدهﺗﺮ ﻣﻲﻛﻨﺪ‪.‬‬

‫ﺑﺨﺶھﺎي ﻣﺨﺘﻠﻒ اﻳﻦ ﺧﻂ ﻛﺪ ﺑﻪ اﻳﻦ ﺻﻮرﺗﻨﺪ‪:‬‬

‫‪ transform‬ﺑﺨﺸﻲ از ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺗﻌﺎرﻳﻒ اﺳﺖ ﻛﻪ ﻛﻨﺘﺮل ﻛﻨﻨﺪهي ﻧﺤﻮهي رﻓﺘﺎر ﻳﻚ‬ ‫‪-‬‬
‫ﺷﻲء اﺳﺖ‪.‬‬
‫‪ Rotate‬ﺗﺎﺑﻊ ﭼﺮﺧﺶ ﻳﺎ ‪ Rotate‬اﺳﺖ )دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ ﺣﺮف اول آن ﺑﺰرگ اﺳﺖ( ﻛﻪ‬ ‫‪-‬‬
‫ﻋﻤﻞ ﺧﺎﺻﻲ از ﻛﻼس ‪ transform‬را اﻧﺠﺎم ﻣﻲدھﺪ‪.‬‬
‫)‪ (0,5,0‬ﻣﺮﺑﻮط ﺑﻪ ﭘﺎراﻣﺘﺮھﺎي ﭼﺮﺧﺶ ‪ X‬و ‪ Y‬و ‪ Z‬اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ ﺑﻪ ﺗﺎﺑﻊ ‪ Rotate‬داده‬ ‫‪-‬‬
‫ﺷﻮد‪.‬‬
‫; ﻧﺸﺎﻧﮕﺮ اﻧﺘﮫﺎي ﻳﻚ ﺧﻂ ﻳﺎ ﻋﻤﻠﮕﺮ اﺳﺖ‪.‬‬ ‫‪-‬‬

‫در اﻳﻦ ﺧﻂ ﻛﺪ‪ ،‬ﻳﻚ ﻧﻘﻄﻪ ﻧﯿﺰ ﺑﻪ ﭼﺸﻢ ﻣﻲﺧﻮرد ﻛﻪ ﺑﻪ ﻛﻤﻚ آن ﺑﻪ ﺗﻮاﺑﻊ و ﻣﺘﻐﯿﺮھﺎي ﻣﻮﺟﻮد‬
‫ﺑﺮاي اﺷﯿﺎء و ﻋﻤﻠﻜﺮدھﺎي ﻣﺨﺘﻠﻒ دﺳﺘﺮﺳﻲ ﭘﯿﺪا ﻣﻲﻛﻨﯿﻢ‪.‬‬

‫ﭼﻮن ﻛﺪ ﺷﻤﺎ درون ﺗﺎﺑﻊ ‪ Update‬ﻗﺮار دارد‪ ،‬ﺷﻲء در ھﺮ ﻓﺮﻳﻢ ‪ ۵‬درﺟﻪ ﭼﺮﺧﺶ در راﺳﺘﺎي ﻣﺤﻮر‬
‫‪ Y‬ﺧﻮاھﺪ داﺷﺖ‪.‬‬

‫اﻛﻨﻮن اﺳﻜﺮﻳﭙﺖ ﺧﻮد را ﺑﺎ ﻛﻠﯿﻚ روي آﻳﻜﻮن ‪ Save‬ﻳﺎ از طﺮﻳﻖ ﻣﻨﻮي ‪File à Save‬‬ ‫‪-٣‬‬
‫ذﺧﯿﺮه ﻛﻨﯿﺪ‪ .‬اﺳﻜﺮﻳﭙﺖ ﺑﻪ ﻣﺤﺾ اﻳﻨﻜﻪ ﺷﻤﺎ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻳﻮﻧﯿﺘﻲ ﺑﺮﮔﺮدﻳﺪ‪ ،‬در ‪Inspector‬‬
‫ﺑﻪروز ﻣﻲﺷﻮد‪.‬‬
‫اﻛﻨﻮن وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ را ‪ Minimize‬ﻛﻨﯿﺪ )ﻧﺒﻨﺪﻳﺪ( و اﺳﻜﺮﻳﭙﺖ را از ﻧﻤﺎي ﭘﺮوژه ﺑﻪ‬ ‫‪-۴‬‬
‫روي ﻣﻜﻌﺐ واﻗﻊ در ﻧﻤﺎي ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺒﻲ )‪ (Hierarchy‬ﻳﺎ در ﺻﺤﻨﻪ اﺻﻠﻲ درگ ﻛﻨﯿﺪ‪.‬‬
‫ﻣﻜﻌﺐ را در ﻧﻤﺎي ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺒﻲ اﻧﺘﺨﺎب ﻛﺮده و ﺑﻪ اﺳﻜﺮﻳﭙﺖ ‪ SimpleRotate‬دﻗﺖ‬ ‫‪-۵‬‬
‫ﻛﻨﯿﺪ‪.‬‬
‫‪ -۶‬روي ﻛﻠﯿﺪ ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ ﺗﺎ ﻧﺘﯿﺠﻪ ﻛﺎر را ﻣﺸﺎھﺪه‬
‫ﻛﻨﯿﺪ‪ .‬وﻳﺮاﻳﺸﮕﺮ ﺗﯿﺮه ﺷﺪه و ﻣﻜﻌﺐ در ﭘﻨﺠﺮهھﺎي ﺻﺤﻨﻪ و ﺑﺎزي‬
‫ﺷﺮوع ﺑﻪ ﭼﺮﺧﺶ ﻣﻲﻛﻨﺪ‪.‬‬

‫ﺷﻜﻞ ‪ – ۴‬ﻛﻠﯿﺪ ‪ Play‬ﻓﺸﺮده ﺷﺪه اﺳﺖ‪.‬‬


‫‪ -٧‬اﻛﻨﻮن وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ را ﻣﺠﺪدا ً ﺑﺎز ﻛﺮده و ﻋﺪد ‪ ۵‬را ﺑﻪ ‪ ١‬ﺗﻐﯿﯿﺮ دھﯿﺪ‪ .‬ﻳﻌﻨﻲ ﻛﺪ ﺑﻪ ﺷﻜﻞ زﻳﺮ ﺧﻮاھﺪ ﺑﻮد‪:‬‬

‫;)‪transform.Rotate(0,1,0‬‬

‫ﺗﻐﯿﯿﺮات را ذﺧﯿﺮه ﻛﻨﯿﺪ و ﻧﺘﯿﺠﻪي ﻛﺎر را اﻣﺘﺤﺎن ﻛﻨﯿﺪ‪ .‬در اﻳﻦ ﺣﺎﻟﺖ ﻣﻜﻌﺐ آرامﺗﺮ ﻣﻲﭼﺮﺧﺪ‪.‬‬ ‫‪-٨‬‬

‫ﭼﻮن ﭼﺮﺧﺶ طﻮري ﺗﻨﻈﯿﻢ ﺷﺪه اﺳﺖ ﻛﻪ در ھﺮ ﻓﺮﻳﻢ اﺗﻔﺎق ﺑﯿﻔﺘﺪ‪ ،‬ھﺮ ﻛﺴﻲ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺮخ ﻓﺮﻳﻢ روي ﻛﺎﻣﭙﯿﻮﺗﺮ ﺧﻮد‬
‫ﺳﺮﻋﺖ ﻣﺘﻔﺎوﺗﻲ را ﺗﺠﺮﺑﻪ ﺧﻮاھﺪ ﻛﺮد‪.‬‬

‫ﻣﻔﮫﻮم ﻣﮫﻢ ﺑﻌﺪي در اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ﻳﻮﻧﯿﺘﻲ ‪ Time.deltaTime‬اﺳﺖ‪ Time.deltaTime .‬ﺑﻪ ﺷﻤﺎ اﻣﻜﺎن ﻣﺘﺤﺮكﺳﺎزي‬
‫اﺷﯿﺎء را ﺑﺮ اﺳﺎس ﺛﺎﻧﯿﻪ و ﻧﻪ ﺑﺮ اﺳﺎس ﻓﺮﻳﻢ ﻣﻲدھﺪ و ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ اﻧﯿﻤﯿﺸﻦ ﺷﻤﺎ در ﺗﻤﺎم ﻛﺎﻣﭙﯿﻮﺗﺮھﺎ ﻛﻪ ﻧﺮخ ﻓﺮﻳﻢ ﻣﺘﻔﺎوﺗﻲ‬
‫دارﻧﺪ‪ ،‬ﺑﻄﻮر ﻳﻜﺴﺎن ﭘﺨﺶ ﺧﻮاھﺪ ﺷﺪ‪ Time.deltaTime .‬ﻣﺘﻐﯿﺮي اﺳﺖ ﻛﻪ ﻣﯿﺰان زﻣﺎﻧﻲ را ﻛﻪ از آﺧﺮﻳﻦ ﻓﺮاﺧﻮاﻧﻲ ﺗﺎﺑﻊ ‪Update‬‬
‫ﮔﺬﺷﺘﻪ اﺳﺖ‪ ،‬ﺑﺮ ﻣﻲﮔﺮداﻧﺪ‪.‬‬

‫‪ -٩‬اﻛﻨﻮن اﺳﻜﺮﻳﭙﺖ ﻗﺒﻠﻲ را ﺑﻪ ﺻﻮرت زﻳﺮ ﻋﻮض ﻛﻨﯿﺪ‪:‬‬


‫;)‪transform.Rotate(0,5 * Time.deltaTime,0‬‬
‫اﻛﻨﻮن ﺑﺠﺎي ﭼﺮﺧﺶ ‪ ۵‬درﺟﻪ در ھﺮ ﻓﺮﻳﻢ‪ ۵ ،‬درﺟﻪ در ھﺮ ﺛﺎﻧﯿﻪ ﺟﺮﺧﺶ ﺧﻮاھﯿﻢ داﺷﺖ‪.‬‬
‫‪ -١٠‬روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪ .‬ﻗﻄﻌﺎ ً ﻣﺘﻮﺟﻪ ﺗﻐﯿﯿﺮ ﺳﺮﻋﺖ ﺷﺪهاﻳﺪ‪.‬‬
‫‪ -١١‬اﻛﻨﻮن درﺟﻪ را از ‪ ۵‬ﺑﻪ ﺣﺪود ‪ ۵٠‬ﺑﺮﺳﺎﻧﯿﺪ و اﺳﻜﺮﻳﭙﺖ ﺧﻮد را آزﻣﺎﻳﺶ ﻛﻨﯿﺪ‪.‬‬

‫ﻧﻜﺘﻪ‪ :‬ﺑﻪ ﻳﺎد داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﻛﻪ اﺳﻜﺮﻳﭙﺖ را ﺑﻌﺪ از ھﺮ ﺗﻐﯿﯿﺮ ذﺧﯿﺮه ﻛﻨﯿﺪ ﺗﺎ ﻗﺎدر ﺑﻪ ﻣﺸﺎھﺪهي ﻧﺘﯿﺠﻪي آن ﺑﺎﺷﯿﺪ‪.‬‬

‫اﻛﻨﻮن ﻗﺼﺪ دارﻳﻢ ﺗﺎ ﻳﻚ ‪ Translate‬ﻳﺎ ﺣﺮﻛﺖ اﺿﺎﻓﻪ ﻛﻨﯿﻢ و ﺑﺒﯿﻨﯿﻢ اﮔﺮ رﺳﻢاﻟﺨﻂ دﺳﺘﻮر ﺷﻤﺎ درﺳﺖ ﻧﺒﺎﺷﺪ‪ ،‬ﭼﻪ اﺗﻔﺎﻗﻲ‬
‫ﻣﻲاﻓﺘﺪ‪ .‬ﺑﻪ ‪ t‬ﻛﻮﭼﻚ در ‪ translate‬دﻗﺖ ﻛﻨﯿﺪ‪.‬‬

‫درون ﺗﺎﺑﻊ ‪ Update‬درﺳﺖ زﻳﺮ ﺧﻂ ﭼﺮﺧﺶ‪ ،‬دﺳﺘﻮراﻟﻌﻤﻞ زﻳﺮ را وارد ﻛﻨﯿﺪ‪:‬‬ ‫‪-١‬‬
‫;)‪transform.translate(2 * Time.deltaTimme,0,0‬‬
‫ﺑﻪ ﻣﺤﺾ ذﺧﯿﺮه ﻛﺮدن‪ ،‬ﭘﯿﻐﺎم ﺧﻄﺎﻳﻲ در ﺧﻂ وﺿﻌﯿﺖ ﭘﻨﺠﺮهي ﺑﺎزي ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪ .‬ﻣﻲﺗﻮاﻧﯿﺪ ﺑﺎ ﻛﻠﯿﻚ روي آن‬
‫ﻛﻨﺴﻮل را ﺑﺎز ﻛﻨﯿﺪ‪.‬‬

‫ﺷﻜﻞ ‪ – ۵‬ﺧﻄﺎي ﮔﺰارش ﺷﺪه در ﺧﻂ وﺿﻌﯿﺖ‬

‫ﺷﻜﻞ ‪ – ۶‬ﻛﻨﺴﻮل و ﭘﯿﻐﺎم ﺧﻄﺎ‬


‫در اﻳﻦ وﺿﻌﯿﺖ‪ ،‬ﺧﻄﺎ ﺑﻪ ﺳﺎدﮔﻲ ﻗﺎب ﺗﺸﺨﯿﺺ ﺑﻮده و ﭘﯿﺸﻨﮫﺎدي ﺑﺮاي‬
‫رﻓﻊ آن اراﺋﻪ ﺷﺪه اﺳﺖ‪.‬‬

‫اﻛﻨﻮن ‪ t‬ﻛﻮﭼﻚ را در اول ‪ translate‬ﺑﻪ ‪ T‬ﺗﺒﺪﻳﻞ ﻛﻨﯿﺪ و‬ ‫‪-٢‬‬


‫ذﺧﯿﺮه ﻛﻨﯿﺪ‪ .‬ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ﭘﯿﻐﺎم ﺧﻄﺎ از ﺑﯿﻦ رﻓﺘﻪ و‬
‫ﻛﻨﺴﻮل ﺧﺎﻟﻲ ﺧﻮاھﺪ ﺷﺪ‪.‬‬
‫ﻛﻨﺴﻮل را ﺑﺒﻨﺪﻳﺪ‬ ‫‪-٣‬‬
‫ﺗﻐﯿﯿﺮات را ذﺧﯿﺮه ﻛﺮده و ﺑﺎزي را اﺟﺮا ﻛﻨﯿﺪ‪.‬‬ ‫‪-۴‬‬

‫اﻛﻨﻮن اﺳﻜﺮﻳﭙﺖ ﺑﻪ ﻣﻜﻌﺐ ﺷﻤﺎ دﺳﺘﻮر ﻣﻲدھﺪ ﺗﺎ ‪ ٢‬ﻣﺘﺮ‬


‫ﺑﺮ ﺛﺎﻧﯿﻪ ﺣﺮﻛﺖ ﻛﻨﺪ‪ ،‬وﻟﻲ ﻣﻜﻌﺐ ﻣﻤﻜﻦ اﺳﺖ آﻧﮕﻮﻧﻪ ﻛﻪ ﺷﻤﺎ‬
‫اﻧﺘﻈﺎر دارﻳﺪ‪ ،‬رﻓﺘﺎر ﻧﻜﻨﺪ‪ .‬ظﺎھﺮا ً‪ ،‬ﭼﺮﺧﺶ اﺑﺘﺪا ارزﻳﺎﺑﻲ ﻣﻲﺷﻮد و‬
‫ﺳﭙﺲ ﻋﻤﻞ ﺣﺮﻛﺖ روي ﻧﻤﻮدارھﺎي ﻣﺤﻠﻲ ﻣﻜﻌﺐ اﻋﻤﺎل‬
‫ﻣﻲﺷﻮد‪.‬‬
‫اﮔﺮ ﻣﻲﺧﻮاھﯿﺪ ﺗﺎ ﻣﻜﻌﺐ را در ﺣﺎل ﺣﺮﻛﺖ در ﻳﻚ ﺧﻂ ﻣﺴﺘﻘﯿﻢ در ﻣﺴﯿﺮ ‪ X‬ﭼﺮﺧﺶ دھﯿﺪ‪ ،‬ﻣﻲﺗﻮاﻧﯿﺪ از ‪ GameObject‬ﻛﻤﻚ‬
‫ﺑﮕﯿﺮﻳﺪ‪ .‬در ﻳﻮﻧﯿﺘﻲ‪ GameObject ،‬ﺑﺮاي ﻣﺮﺗﺐ ﺳﺎزي ﻋﻤﻠﻜﺮد‪ ،‬ﺳﺎزﻣﺎﻧﺪھﻲ داراﻳﻲھﺎي ﺻﺤﻨﻪ و دﻳﮕﺮ اھﺪاف ﻣﻔﯿﺪ ﺑﻜﺎر ﻣﻲرود و‬
‫ﻣﻌﻤﻮﻻ ً آن را ‪ GO‬ﻣﻲﻧﺎﻣﻨﺪ‪.‬‬

‫ﻗﺒﻞ از ﺗﻨﻈﯿﻢ ‪ ، GO‬دو ﻋﻤﻞ ﻣﻮرد ﻧﻈﺮ ﺧﻮد را در اﺳﻜﺮﻳﭙﺖ ھﺎي ﺟﺪاﮔﺎﻧﻪاي ﺑﻨﻮﻳﺴﯿﺪ‪.‬‬

‫روي ﻛﻠﯿﺪ ‪ Play‬ﺑﺮاي ﺗﻮﻗﻒ ﭘﺨﺶ ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪.‬‬ ‫‪-١‬‬


‫از ﻣﻨﻮي ‪ Edit‬در وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ‪ Save As ،‬را اﻧﺘﺨﺎب ﻛﻨﯿﺪ و ﻧﻤﻮﻧﻪي اﻳﺠﺎد ﺷﺪه را ‪ SimpleMove.js‬ﻧﺎﻣﮕﺬاري‬ ‫‪-٢‬‬
‫ﻛﻨﯿﺪ‪.‬‬

‫ﭼﻮن ‪ SimpleRotate‬ﺗﻐﯿﯿﺮ ﻧﺎم داده ﺷﺪه‪ ،‬اﻛﻨﻮن ﺑﺎﻳﺪ ﻓﺎﻳﻞ اﺻﻠﻲ را در وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ دوﺑﺎره ﺑﺎز ﻛﻨﯿﺪ‪ .‬اﻛﻨﻮن ﻗﺎدر ﺑﻪ‬
‫ﻣﺸﺎھﺪهي ھﺮدو اﺳﻜﺮﻳﭙﺖ در ﻧﻤﺎي ﭘﺮوژه ﺧﻮاھﯿﺪ ﺑﻮد و ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ﻣﻲﺗﻮاﻧﯿﺪ آنھﺎ را از آﻧﺠﺎ ﺑﺎز ﻛﻨﯿﺪ‪.‬‬

‫اﺳﻜﺮﻳﺖ ‪ SimpleRotate.js‬را ﺑﺎز ﻛﻨﯿﺪ‪.‬‬ ‫‪-٣‬‬


‫اﻛﻨﻮن زﺑﺎﻧﻪ اي ﺑﺮاي ھﺮ اﺳﻜﺮﻳﭙﺖ در وﻳﺮاﻳﺸﮕﺮ دارﻳﺪ ﻛﻪ در ﺷﻜﻞ زﻳﺮ ﻗﺎﺑﻞ ﻣﺸﺎھﺪه اﺳﺖ‪.‬‬ ‫‪-۴‬‬

‫ﺷﻜﻞ ‪ -٨‬دو اﺳﻜﺮﻳﭙﺖ در وﻳﺮاﻳﺸﮕﺮ‬

‫در اﺳﻜﺮﻳﭙﺖ ‪ ،SimpleRotate.js‬دو ﺑﻚ اﺳﻠﺶ ﺑﻪ اﺑﺘﺪاي ﺧﻄﻲ ﻛﻪ ﺗﺎﺑﻊ ﺣﺮﻛﺖ را دارد‪ ،‬اﺿﺎﻓﻪ ﻛﻨﯿﺪ ﺑﻪ ﺷﻜﻞ زﻳﺮ‪:‬‬ ‫‪-١‬‬
‫;)‪//transform.Translate(2 * Time.deltaTime,0,0‬‬
‫ﺑﺎ اﻳﻦ ﻛﺎر‪ ،‬اﻳﻦ ﺧﻂ ﺳﺒﺰ ﺧﻮاھﺪ ﺷﺪ و ﻓﻮﻧﺖ آن ﻋﻮض ﺧﻮاھﺪ ﺷﺪ ﻛﻪ ﻧﺸﺎﻧﮕﺮ ﺗﺒﺪﻳﻞ اﻳﻦ ﺧﻂ از ﺣﺎﻟﺖ دﺳﺘﻮري ﺑﻪ‬
‫ﺣﺎﻟﺖ ﺗﻮﺿﯿﺤﻲ اﺳﺖ‪.‬‬
‫ﻧﻜﺘﻪ‪ :‬ﺷﻤﺎ ﺑﺎ اﻳﻦ ﻛﺎر از ﻣﻜﺎﻧﯿﺰم ﻣﺴﺘﻨﺪﺳﺎزي و ﺗﻮﺿﯿﺢ ﻧﻮﻳﺴﻲ اﺳﺘﻔﺎده ﻛﺮده اﻳﺪ ﺗﺎ ﺟﻠﻮي اﺟﺮا ﺷﺪن ﻛﺪ را ﺑﮕﯿﺮﻳﺪ‪.‬‬
‫ھﻤﭽﻨﯿﻦ از اﻳﻦ ﻛﺎر ﺑﺮاي ﻧﻮﺷﺘﻦ ﺗﻮﺿﯿﺤﺎت در ﻣﻮرد ﻋﻤﻠﻜﺮد ﻛﺪ اﺳﺘﻔﺎده ﻣﻲﻛﻨﯿﺪ‪ .‬ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ‪ ،‬ﺷﻤﺎ ﺑﺴﺎدﮔﻲ ﻛﺎرﻛﺮ‬
‫ﻛﺪ ﻣﻮرد ﻧﻈﺮ را ﺑﯿﺎد ﺧﻮاھﯿﺪ آورد‪ .‬ﺗﻮﺿﯿﺤﺎت ھﻤﭽﻨﯿﻦ ﻛﺪ ﻧﻮﺷﺘﻪ ﺷﺪهي ﺷﻤﺎ را ﺑﺮاي دﻳﮕﺮ ﻛﺎرﺑﺮان ﺧﻮاﻧﺎﺗﺮ ﻣﻲﻛﻨﺪ‪.‬‬
‫اﻳﻦ ﻛﺎر را در اﺳﻜﺮﻳﭙﺖ ‪ SimpleMove.js‬ﻧﯿﺰ اﻧﺠﺎم دھﯿﺪ و اﻳﻦ ﺑﺎر دﺳﺘﻮر ﭼﺮﺧﺶ را ﺗﺒﺪﻳﻞ ﺑﻪ ﺗﻮﺿﯿﺢ ﻛﻨﯿﺪ‪.‬‬ ‫‪-٢‬‬
‫;)‪//transform.Rotate(0,50 * Time.deltaTime,0‬‬
‫از ذﺧﯿﺮه ﺷﺪن ﺗﻐﯿﯿﺮات در ھﺮ دو اﺳﻜﺮﻳﭙﺖ اطﻤﯿﻨﺎن ﺣﺎﺻﻞ ﻛﻨﯿﺪ‪.‬‬ ‫‪-٣‬‬
‫وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ را ‪ Minimize‬ﻛﻨﯿﺪ‪.‬‬ ‫‪-۴‬‬
‫ﺑﻪ وﻳﺮاﻳﺸﮕﺮ ﻣﻌﻤﻮﻟﻲ ﺑﺮﮔﺮدﻳﺪ و از ﻣﻨﻮي ‪ ،GameObject‬ﮔﺰﻳﻨﻪي ‪ CreateEmpty‬را اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪.‬‬ ‫‪-۵‬‬
‫‪ GO‬اﻳﺠﺎد ﺷﺪه را ‪ Cube Parent‬ﻧﺎﻣﮕﺬاري ﻛﻨﯿﺪ )ﺷﻜﻞ ‪.(٩‬‬ ‫‪-۶‬‬
‫‪ -٧‬ﻣﻜﻌﺐ را روي ‪ Cube Parent‬ﻛﺸﯿﺪه و در ﻧﻤﺎي ‪ Hirearchy‬ﺑﯿﺎﻧﺪازﻳﺪ‪.‬‬
‫‪ -٨‬اﺳﻜﺮﻳﭙﺖ ‪ SimpleMove.js‬را از ﻧﻤﺎي ﭘﺮوژه روي ﺷﻲء ‪ Cube Parent‬در ﻧﻤﺎي‬
‫‪ Hierarchy‬ﻛﺸﯿﺪه و ﺑﯿﺎﻧﺪازﻳﺪ‪.‬‬

‫اﺳﻜﺮﻳﭙﺖ ‪ SimpleMove‬ﺑﺎ اﻧﺘﺨﺎب ‪ Cube Parent‬در ‪ Inspector‬ظﺎھﺮ ﻣﻲﺷﻮد )ﺷﻜﻞ ‪.(١٠‬‬


‫ﻣﻜﻌﺐ ﺑﻪ آراﻣﻲ ﻣﻲﭼﺮﺧﺪ و در ھﻤﯿﻦ ﺣﺎل ﺑﻪ ﻣﻘﺼﺪ ﺧﻮد در راﺳﺘﺎي ﻣﺤﻮر ﻣﺤﻠﻲ ‪X‬‬
‫ﺣﺮﻛﺖ ﻣﻲﻛﻨﺪ‪ .‬ﺷﺎﻳﺪ ﻻزم ﺑﺎﺷﺪ ﺗﺎ ﺑﺰرﮔﻨﻤﺎﻳﻲ ﺻﺤﻨﻪ را ﻛﺎھﺶ دھﯿﺪ ﺗﺎ اﻳﻦ ﻋﻤﻞ را ﺑﻪ‬
‫وﺿﻮح ﺑﺒﯿﻨﯿﺪ‪.‬‬

‫ﻣﺘﻐﯿﺮھﺎ‬

‫ﻛﺎرھﺎﻳﻲ ﻛﻪ ﺗﺎﻛﻨﻮن روي اﺳﻜﺮﻳﭙﺖھﺎ اﻧﺠﺎم دادﻳﻢ و ﺗﻐﯿﯿﺮات اﻳﺠﺎد ﺷﺪه در‬
‫ﺻﺤﻨﻪ را ذﺧﯿﺮه ﻛﻨﯿﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻛﺎر ﺑﺮاﺣﺘﻲ از ﺗﺮﻛﯿﺐ ﻛﻠﯿﺪھﺎي ‪ Ctrl+S‬ﻳﺎ ﮔﺰﻳﻨﻪي ‪ Save‬از‬
‫ﻣﻨﻮي ‪ File‬اﺳﺘﻔﺎده ﻛﻨﯿﺪ‪.‬‬

‫ﺷﺎﻳﺪ در ﻣﻮرد ﻛﺎر ﺑﺎ اﻧﯿﻤﯿﺸﻦ ﺑﺼﻮرت ﻛﺪﻧﻮﻳﺴﻲ ﻣﺤﺾ‪ ،‬اﺣﺴﺎس ﺧﻮﺑﻲ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﯿﺪ‪ .‬وﻟﻲ ﻧﮕﺮان ﻧﺒﺎﺷﯿﺪ! ﻗﺮار‬
‫اﺳﺖ از روشھﺎي ﻣﺘﻌﺪدي ﺑﺮاي ﻣﺘﺤﺮكﺳﺎزي اﺷﯿﺎء در ﻳﻚ ﺑﺎزي واﻗﻌﻲ اﺳﺘﻔﺎده ﻛﻨﯿﻢ‪ .‬ﻛﺪﻧﻮﻳﺴﻲ اوﻟﯿﻪ اي ﻛﻪ اﻧﺠﺎم دادﻳﻢ ﺗﺎ‬
‫ﺣﺮﻛﺖ و ﭼﺮﺧﺶ را اﻳﺠﺎد ﻛﻨﯿﻢ‪ ،‬اوﻟﯿﻦ ﺗﻼش ﺷﻤﺎ ﺑﺮاي ﻛﺪﻧﻮﻳﺴﻲ ﺑﻮده اﺳﺖ و ﻧﻘﺶ ﻣﮫﻤﻲ در آﺷﻨﺎﻳﻲ ﺑﺎ ﻛﺪﻧﻮﻳﺴﻲ داﺷﺖ‪.‬‬

‫اﻛﻨﻮن در اداﻣﻪ ﺑﻪ ﻣﺘﻐﯿﺮھﺎ ﻣﻲﭘﺮدازﻳﻢ‪ .‬ﻣﺘﻐﯿﺮھﺎ روﺷﻲ ﺑﺮاي ردﮔﯿﺮي وﺿﻌﯿﺖھﺎ‪ ،‬ارزشھﺎ‪ ،‬ﻣﻘﺎدﻳﺮ‪ ،‬ﻣﺘﻮن و ‪...‬‬
‫ﻣﻲﺑﺎﺷﻨﺪ‪ .‬ﻣﺘﻐﯿﺮ ﻣﻜﺎﻧﯿﺰﻣﻲ اﺳﺖ ﻛﻪ ﺗﻮﺳﻂ آن اطﻼﻋﺎت را ذﺧﯿﺮه ﻣﻲﻛﻨﯿﻢ‪ .‬در ﻳﻮﻧﯿﺘﻲ‪ ،‬ﻣﺘﻐﯿﺮھﺎ را ﻣﻲﺗﻮان در ‪Inspector‬‬
‫ﻣﺸﺎھﺪه ﻛﺮد‪ ،‬ﺑﻨﺎﺑﺮاﻳﻦ دﻳﮕﺮ ﻧﯿﺎزي ﺑﻪ ﺑﺎز ﻛﺮدن اﺳﻜﺮﻳﭙﺖ ﺑﺮاي اﻳﺠﺎد ﺗﻐﯿﯿﺮ ﻧﯿﺴﺖ‪ .‬ھﻤﭽﻨﯿﻦ ﺑﻪ اﻳﻦ روش ﻣﻲﺗﻮان اﺳﻜﺮﻳﭙﺖ را‬
‫ﺑﺼﻮرت ﻛﻠﻲ ﻧﻮﺷﺖ و اﻳﻦ اﺳﻜﺮﻳﭙﺖ را ﺑﺮاي اﺷﯿﺎء ﻣﺨﺘﻠﻒ و ﺑﺎ ﺗﻨﻈﯿﻤﺎت ﻣﺘﻔﺎوت ﺑﺮاي ھﺮﻳﻚ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار داد‪.‬‬

‫در ﺣﺎل ﺣﺎﺿﺮ اﮔﺮ ﺑﺨﻮاھﯿﺪ ﺳﺮﻋﺖ ﭼﺮﺧﺶ ﻣﻜﻌﺐ را ﺗﻐﯿﯿﺮ دھﯿﺪ‪ ،‬ﺑﺎﻳﺪ ﻋﺪد درون اﺳﻜﺮﻳﭙﺖ را ﺗﻐﯿﯿﺮ دھﯿﺪ‪ .‬ﺑﯿﺎﻳﯿﺪ ﻳﻚ‬
‫ﻣﺘﻐﯿﺮ را ﺟﺎﻳﮕﺰﻳﻦ اﻳﻦ ﻋﺪد ﻛﻨﯿﻢ‪.‬‬

‫ﻧﻜﺘﻪ‪ :‬ﻣﺘﻐﯿﺮھﺎ را ﺑﺎ اﺳﺎﻣﻲ ﻣﻌﻨﻲدار ﻧﺎﻣﮕﺬاري ﻛﻨﯿﺪ‪ ،‬وﻟﻲ اﻳﻦ اﺳﺎﻣﻲ را ﻛﻮﺗﺎه ﺑﻨﻮﻳﺴﯿﺪ‪ .‬اﻟﺒﺘﻪ ﻛﻪ ﻣﻲﺗﻮاﻧﯿﺪ از ﺗﻮﺿﯿﺤﺎت ﺑﺮاي‬
‫ﮔﻮﻳﺎﺗﺮ ﺷﺪن ﻛﺎر اﺳﺘﻔﺎده ﻛﻨﯿﺪ‪.‬‬

‫ﻗﺎﻧﻮن‪ :‬اﺳﺎﻣﻲ ﻣﺘﻐﯿﺮھﺎ ﻧﺒﺎﻳﺪ ﺑﺎ ﻳﻚ ﻋﺪد ﻳﺎ ﻛﺎراﻛﺘﺮ ﺧﺎص ﺷﺮوع ﺷﻮﻧﺪ و ﻧﺒﺎﻳﺪ در ﺑﯿﻦ ﺣﺮوف‪ ،‬ﻓﺎﺻﻠﻪ ﺑﺎﺷﺪ‪ .‬ھﻤﭽﻨﯿﻦ ﭼﻨﺪ ﻣﺘﻐﯿﺮ‬
‫رزرو ﺷﺪه وﺟﻮد دارد ﻛﻪ ﻧﺒﺎﻳﺪ از ﻧﺎم آنھﺎ اﺳﺘﻔﺎده ﻛﻨﯿﺪ‪ .‬اﻳﻦ ﻳﻚ اﻟﺰام ﻧﯿﺴﺖ‪ ،‬وﻟﻲ ﺑﮫﺘﺮ اﺳﺖ در ﻧﻮﺷﺘﻦ ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﺧﻮب‪،‬‬
‫ﻧﺎم ﻣﺘﻐﯿﺮ را ﺑﺎ ﺣﺮف ﻛﻮﭼﻚ آﻏﺎز ﻛﻨﯿﺪ‪ .‬وﻗﺘﻲ ﻛﻠﻤﺎت ﻧﺎم ﻣﺘﻐﯿﺮ ﺑﺎ ﺣﺮوف ﺑﺰرگ ﺑﺎﺷﻨﺪ‪ ،‬در ‪ Inspector‬ﻓﺎﺻﻠﻪ اﻳﺠﺎد ﻣﻲﺷﻮد‪.‬‬

‫ﻛﺪ ﻣﻮﺟﻮد در اﺳﻜﺮﻳﭙﺖ ‪ SimpleRotate‬را ﺑﺼﻮرت زﻳﺮ ﻋﻮض ﻛﻨﯿﺪ‪:‬‬

‫‪var myDegrees = 50‬‬

‫{ )( ‪function Update‬‬

‫;)‪transform.Rotate(0,myDegrees * Time.deltaTime,0‬‬

‫}‬

‫اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬

‫روي واﻟﺪ ‪ Cube‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ ﺗﺎ ﮔﺮوه آن ﺑﺎز ﺷﺪه و ﺑﻪ ﻓﺮزﻧﺪ آن ﻛﻪ ‪ Cube‬اﺳﺖ دﺳﺘﺮﺳﻲ ﭘﯿﺪا‬
‫ﻛﻨﯿﺪ‪.‬‬

‫‪ Cube‬را اﻧﺘﺨﺎب ﻛﺮده و در ‪ Inspector‬ﺑﺪﻧﺒﺎل ﻣﺘﻐﯿﺮ ﺟﺪﻳﺪي ﺑﮕﺮدﻳﺪ ﻛﻪ اﻛﻨﻮن ﻧﻤﺎﻳﺶ داده‬
‫ﻣﻲﺷﻮد‪.‬‬

‫دﻗﺖ ﻛﻨﯿﺪ ﻛﻨﯿﺪ از ﺟﺎﻳﻲ ﻛﻪ ﺣﺮف ﺑﺰرگ در ﻧﺎم ﻣﺘﻐﯿﺮ وارد ﺷﺪه‪ ،‬ﻳﻚ ﻓﺎﺻﻠﻪ درج ﺷﺪه اﺳﺖ ﺗﺎ‬
‫ﻧﺎم ﻣﺘﻐﯿﺮ راﺣﺖ ﺗﺮ ﺧﻮاﻧﺪه ﺷﻮد‪ .‬ﻛﺎراﻛﺘﺮ اول ﻧﯿﺰ ﺑﺰرگ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪.‬‬

‫روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪ .‬ھﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻲﺑﯿﻨﯿﺪ‪ ،‬ھﯿﭻ ﭼﯿﺰي ﺗﻐﯿﯿﺮ ﻧﻜﺮده اﺳﺖ‪.‬‬

‫در اﺳﻜﺮﻳﭙﺖ ‪ ،SimpleMove‬ﻋﺪد ‪ ٢‬را ﺑﻪ ‪ ٠/۵‬ﺗﺒﺪﻳﻞ ﻛﻨﯿﺪ ﺗﺎ اﻧﯿﻤﯿﺸﻦ ﺣﺮﻛﺖ آھﺴﺘﻪﺗﺮ ﺷﻮد و‬
‫ﻣﻜﻌﺐ در ﺻﺤﻨﻪ واﺿﺢﺗﺮ دﻳﺪه ﺷﻮد و اﻧﯿﻤﯿﺸﻦ طﻮﻻﻧﻲﺗﺮ ﺷﻮد‪.‬‬

‫اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ و ﻣﻜﻌﺐ را اﮔﺮاﻧﺘﺨﺎب ﻧﯿﺴﺖ‪ ،‬اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪.‬‬


‫روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪.‬‬

‫در ‪ ،Inspector‬ﻧﻪ در وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ‪ ،‬ﭘﺎراﻣﺘﺮ ‪ My Degree‬را از ‪ ۵٠‬ﺑﻪ ‪ ٢٠٠‬ﺗﻐﯿﯿﺮ دھﯿﺪ‪.‬‬

‫ﻣﻜﻌﺐ ﺳﺮﻳﻌﺘﺮ ﻣﻲ ﭼﺮﺧﺪ‪.‬‬

‫اﻛﻨﻮن دوﺑﺎره روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ ﺗﺎ ﺑﺎزي ﻣﺘﻮﻗﻒ ﺷﻮد‪ .‬دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﯿﺮ دوﺑﺎره ‪ ۵٠‬ﻣﻲﺷﻮد‪.‬‬

‫ﻗﺎﻧﻮن‪ :‬در ﻳﻮﻧﯿﺘﻲ‪ ،‬ھﺮ ﺗﻐﯿﯿﺮي ﻛﻪ در ‪ Inspector‬در زﻣﺎن اﺟﺮاي ﺑﺎزي داده ﺷﻮد‪ ،‬از ﺑﯿﻦ ﺧﻮاھﺪ رﻓﺖ‪ .‬ﺑﺪﻳﻦﺗﺮﺗﯿﺐ ﻣﻲﺗﻮاﻧﯿﺪ ﺑﺎ‬
‫آزﻣﻮن و ﺧﻄﺎ‪ ،‬ﻧﺘﯿﺠﻪ را ﻣﺴﺘﻘﯿﻤﺎ ً در ﺑﺎزي ﺑﺒﯿﻨﯿﺪ و ﻧﯿﺎز ﺑﻪ ﺗﻮﻗﻒ و ﺗﻐﯿﯿﺮ در ﻣﻘﺎدﻳﺮ ﻧﯿﺴﺖ‪ .‬اﻳﻦ ﻳﻌﻨﻲ ﺑﺮاي داﺋﻤﻲ ﻛﺮدن ﻣﻘﺪار ﻳﻚ‬
‫ﻣﺘﻐﯿﺮ‪ ،‬ﺑﺎﻳﺪ وارد ﺣﺎﻟﺖ وﻳﺮاﻳﺶ ﺷﻮﻳﺪ‪.‬‬

‫در وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ ﺑﺮاي ‪ ،SimpleRotate‬ﻣﻘﺪارﻣﺘﻐﯿﺮ را ﺑﻪ ‪ ١٠٠‬ﺗﻐﯿﯿﺮ دارده و اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ‪ .‬ﺧﻮاھﯿﺪ دﻳﺪ ﻛﻪ ﻣﻘﺪار‬
‫اﺻﻠﻲ ‪ ۵٠‬در ‪ Inspector‬ﻣﺎﻧﺪه اﺳﺖ‪.‬‬

‫روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪ .‬ﭼﺮﺧﺶ از ﻣﻘﺪار ﻛﻤﺘﺮ ﻣﻮﺟﻮد در ‪ Inspector‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ‪ .‬ﻣﻘﺪار ﻣﻮﺟﻮد در ‪ Inspector‬ھﻤﯿﺸﻪ ﻣﻘﺪم‬
‫ﺑﺮ ﻣﻘﺪاري اﺳﺖ ﻛﻪ در ﺧﻮد اﺳﻜﺮﻳﭙﺖ وﺟﻮد دارد‪.‬‬

‫ﻗﺎﻧﻮن‪ :‬وﻗﺘﻲ ﻣﺘﻐﯿﺮي در ‪ Inspector‬ﻧﻤﺎﻳﺶ داده ﺷﺪ‪ ،‬ھﻤﯿﺸﻪ ﻣﻘﺪم ﺑﺮ ﻣﻘﺪار اﺻﻠﻲ ﻣﻮﺟﻮد در اﺳﻜﺮﻳﭙﺘﻲ ﺧﻮاھﺪ ﺑﻮد ﻛﻪ ﻣﺘﻐﯿﺮ‬
‫در آن ﺗﻌﺮﻳﻒ و ﻣﻘﺪاردھﻲ اوﻟﯿﻪ ﺷﺪه ﺑﺎﺷﺪ‪.‬‬

‫ﭘﺨﺶ را ﻣﺘﻮﻗﻒ ﻛﻨﯿﺪ‪.‬‬

‫اﻛﻨﻮن ﻛﻪ دﻳﮕﺮ در ﺣﺎﻟﺖ ‪ Play‬ﻧﯿﺴﺘﯿﺪ‪ ،‬ﻣﻘﺪار ﭘﺎراﻣﺘﺮ را در ‪ Inspector‬ﺑﻪ ‪ ٢٠٠‬ﺗﻐﯿﯿﺮ دھﯿﺪ‪.‬‬

‫روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪ .‬ﭼﺮﺧﺶ ﺑﻪ ھﻤﺎن ﺳﺮﻋﺘﻲ ﻛﻪ ﻣﻮرد ﻧﻈﺮ ﺑﻮد‪ ،‬اﻧﺠﺎم ﺧﻮاھﺪ ﺷﺪ‪.‬‬

‫ذﺧﯿﺮه ﻛﺮدن ﭘﺮوژه و ﺻﺤﻨﻪ را ﻓﺮاﻣﻮش ﻧﻜﻨﯿﺪ‪.‬‬

‫ﺗﺬﻛﺮ‪ :‬اﮔﺮ ﭼﺮﺧﺶ ﻳﻚ ﺷﻲء را ﺑﺴﯿﺎر ﺳﺮﻳﻊ درﻧﻈﺮ ﺑﮕﯿﺮﻳﺪ‪ ،‬ﺷﺎﻳﺪ ﺷﻲء درﺳﺖ دﻳﺪه ﻧﺸﻮد ﻳﺎ در ﻣﺎﺷﯿﻦھﺎي ﺿﻌﯿﻒ ﻛﻨﺪ ﺷﺪه‬
‫و ﺑﺮﻋﻜﺲ ﺣﺮﻛﺖ ﻛﻨﺪ‪.‬‬

‫ﭼﻨﺪ ﻧﻜﺘﻪي دﻳﮕﺮ ﻧﯿﺰ وﺟﻮد دارد ﻛﻪ ﺑﺎﻳﺪ در ﻣﻮرد ﻣﺘﻐﯿﺮھﺎ ﺑﺪاﻧﯿﺪ‪ .‬ﺑﻄﻮرﻳﻜﻪ ذﻛﺮ ﺷﺪ‪ ،‬ﭼﻨﺪ ﻧﻮع ﻣﺨﺘﻠﻒ وﺟﻮد دارد‪ .‬در‬
‫اﺳﻜﺮﻳﭙﺖ ﭼﺮﺧﺶ‪ ،‬ﻣﺎ ﻣﻘﺪار ‪ myDegree‬را ﺑﺮاﺑﺮ ﺑﺎ ‪ ۵٠‬ﻗﺮار دادﻳﻢ‪ .‬ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ‪ ،‬ﻣﺘﻐﯿﺮ ﻣﺎ ﺑﻄﻮر اﺗﻮﻣﺎﺗﯿﻚ ﺑﺼﻮرت ﻋﺪدي ﻳﺎ از ﻧﻮع‬
‫‪ int‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد‪ .‬اﮔﺮ از ‪ 50.0‬اﺳﺘﻔﺎده ﻣﻲﻛﺮدﻳﺪ‪ ،‬ﻣﺘﻐﯿﺮ ﺑﺼﻮرت ﻣﻤﯿﺰ ﺷﻨﺎور ﻳﺎ ‪ float‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﺪ‪ .‬ﺑﺴﯿﺎري از‬
‫ﻣﺘﻐﯿﺮھﺎ ﻓﻘﻂ ﺑﺮاي ﻧﻮع ﻣﺨﺼﻮص ﺧﻮد ﻣﺸﺨﺺ ﻣﻲﺷﻮﻧﺪ و ﻣﻘﺪار در آنھﺎ ﺑﻌﺪا ً ذﺧﯿﺮه ﻣﻲﺷﻮد‪ .‬ﭼﻨﺪ ﻣﺘﻐﯿﺮ دﻳﮕﺮ را ﻧﯿﺰ ﺑﻪ‬
‫اﺳﻜﺮﻳﭙﺖ ‪ SimpleMove‬اﺿﺎﻓﻪ ﻣﻲﻛﻨﯿﻢ‪.‬‬

‫در ﺑﺎﻻي اﺳﻜﺮﻳﭙﺖ ‪ ،SimpleMove‬ﺧﻄﻮط زﻳﺮ را اﺿﺎﻓﻪ ﻛﻨﯿﺪ‪:‬‬ ‫‪-١‬‬


‫;‪var mySpeed : float‬‬
‫;"‪var someString : String = "This is a test‬‬
‫;‪var someSetting : Boolean = true‬‬
‫;‪var someObject : GameObject‬‬
‫اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ و واﻟﺪ ‪ Cube‬را اﻧﺘﺨﺎب ﻛﻨﯿﺪ ﺗﺎ اﺿﺎﻓﺎت ﺟﺪﻳﺪ را در ‪ Inspector‬ﺑﺒﯿﻨﯿﺪ‪.‬‬ ‫‪-٢‬‬
‫‪ -٣‬ﺧﻂ اول‪ ،‬ﻣﺘﻐﯿﺮي از ﻧﻮع ﻣﻤﯿﺰ ﺷﻨﺎور ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﺪ‪ ،‬وﻟﻲ ﻣﻘﺪار آن را ﺗﻌﯿﯿﻦ ﻧﻤﻲﺪﻨﻛ‪.‬‬
‫‪ -۴‬ﺧﻂ دوم‪ ،‬ﻣﺘﻐﯿﺮي از ﻧﻮع رﺷﺘﻪ ﻣﺘﻨﻲ را ﺗﻌﺮﻳﻒ و ﻣﻘﺪاردھﻲ ﻣﻲﺪﻨﻛ‪ .‬رﺷﺘﻪھﺎ ھﻤﯿﺸﻪ داراي ﻋﻼﻣﺖ ﻛﻮﺗﯿﺸﻦ‬
‫ﻲﻣﺑﺎﺷﻨﺪ و در وﻳﺮاﻳﺸﮕﺮ ﻳﻮﻧﯿﺘﻲ ﺑﻨﻔﺶ رﻧﮓ دﻳﺪه ﻣﻲﺪﻧﻮﺷ‪.‬‬

‫ﺗﺬﻛﺮ‪ :‬اﮔﺮ ﻋﻼﻣﺎت ﻛﻮﺗﯿﺸﻦ را از درون ﻳﻚ ﭘﺮدازﺷﮕﺮ ﻣﺘﻦ )ﻣﺎﻧﻨﺪ ورد( ﻛﭙﻲ و ﭘﯿﺴﺖ ﻛﻨﯿﺪ‪ ،‬ﻛﺎراﻛﺘﺮھﺎ آﻧﻄﻮر ﻛﻪ اﻧﺘﻈﺎر دارﻳﺪ‪،‬‬
‫ﻧﻤﺎﻳﺶ داده ﻧﻤﻲﺷﻮﻧﺪ‪ .‬اﮔﺮ ﺧﻄﺎﻳﻲ اﻳﺠﺎد ﺷﺪ‪ ،‬ﺳﻌﻲ ﻛﻨﯿﺪ آنھﺎ را در وﻳﺮاﻳﺸﮕﺮ دوﺑﺎره ﺗﺎﻳﭗ ﻛﻨﯿﺪ‪.‬‬

‫‪ -۵‬ﺧﻂ ﺑﻌﺪي‪ ،‬ﻣﺘﻐﯿﺮي از ﻧﻮع ﺑﻮﻟﯿﻦ ﻳﺎ ﻣﻨﻄﻘﻲ )درﺳﺖ و ﻧﺎدرﺳﺖ( اﻳﺠﺎد ﻛﺮده و ﻣﻘﺪار آن را درﺳﺖ ﻗﺮار ﻣﻲ دھﺪ‪ .‬در‬
‫‪ Inspector‬ﻣﺘﻐﯿﺮ ﺑﻮﻟﯿﻦ ﺑﺼﻮرت ﻳﻚ ﭼﻚﺑﺎﻛﺲ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬

‫ﻧﻜﺘﻪ‪ :‬ﺗﺎ زﻣﺎﻧﻲ ﻛﻪ ارزش ﻳﻚ ﻣﺘﻐﯿﺮ ﻳﻚ ﻣﻘﺪار ﻣﺸﺨﺺ ﺑﺎﺷﺪ‪ ،‬ﻣﻌﺮﻓﻲ ﻧﻮع ﻣﺘﻐﯿﺮ اﺧﺘﯿﺎري اﺳﺖ‪ .‬اﮔﺮ ﺷﻤﺎ ﻧﻮع ﻣﺘﻐﯿﺮ را‬
‫ﺗﻌﯿﯿﻦ ﻛﻨﯿﺪ‪ ،‬ﻛﺎر ﻣﻮﺗﻮر را در ﺗﺼﻤﯿﻢ ﮔﯿﺮي ﺑﺮاي ﺗﻌﯿﯿﻦ ﻧﻮع ﻣﺘﻐﯿﺮ ﻛﻢ ﻣﻲﻛﻨﯿﺪ‪ .‬ﺑﺮاي ﺑﺴﺘﺮھﺎي ﻣﻮﺑﺎﻳﻞ ﻣﺎﻧﻨﺪ ‪ iOS‬ﺎﻳ اﻧﺪروﻳﺪ‪،‬‬
‫ﺣﺘﻤﺎ ً ﺑﺎﻳﺪ ﻧﻮع ﻣﺘﻐﯿﺮ را ﺗﻌﯿﯿﻦ ﻛﻨﯿﺪ‪ .‬ﻣﺎ در اﻳﻦ آﻣﻮزش ھﺮ دو ﺣﺎﻟﺖ را اﻧﺠﺎم ﻣﻲدھﯿﻢ ﺗﺎ ﺑﺎ ھﺮ دو روش آﺷﻨﺎ ﺷﻮﻳﺪ‪.‬‬

‫دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ ﺗﻤﺎم ﻣﺘﻐﯿﺮھﺎ ﺑﺎ ﻋﺒﺎرت ﻛﻠﯿﺪي ‪ var‬آﻏﺎز ﻣﻲﺷﻮﻧﺪ‪ .‬در ﻳﻮﻧﯿﺘﻲ‪ var ،‬ﺑﻌﻨﻮان ﻳﻚ ﻣﺘﻐﯿﺮ ﻋﺎم ﻓﺮض ﻣﻲﺷﻮد‪.‬‬
‫ﺑﻌﺒﺎرت دﻳﮕﺮ‪ ،‬ﺑﺮاي ‪ Inspector‬ﻧﻤﺎﻳﺎن اﺳﺖ‪.‬‬

‫‪ someSetting‬را از ﺣﺎﻟﺖ ‪ var‬ﺖﻟ ﺣ ﻪﺑ ‪ private var‬ﺗﺒﺪﻳﻞ ﻛﻨﯿﺪ‪.‬‬ ‫‪-۶‬‬


‫اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬ ‫‪-٧‬‬
‫روي وﻳﺮاﻳﺸﮕﺮ ﻛﻠﯿﻚ ﻛﻨﯿﺪ ﺗﺎ ‪ Inspector‬آﭘﺪﻳﺖ ﺷﻮد‪.‬‬ ‫‪-٨‬‬
‫ﺧﻮاھﯿﺪ دﻳﺪ ﻛﻪ ﭘﺎراﻣﺘﺮ ‪ someSetting‬دﻳﮕﺮ در ‪ Inspector‬ﻧﻤﺎﻳﺶ داده ﻧﻤﻲﺷﻮد‪.‬‬
‫ﻋﺒﺎرت ‪ var someObject : GameObject‬در ﻛﻨﺎر اﻧﻮاع ﻣﻌﻤﻮل ﻛﻪ در ﺑﺴﯿﺎري از زﺑﺎنھﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ وﺟﻮد دارد‪،‬‬ ‫‪-٩‬‬
‫ﻳﻮﻧﯿﺘﻲ ﺑﻪ ﺷﻤﺎ اﻣﻜﺎن ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺘﻐﯿﺮ از ﻧﻮع ‪ GameObject‬را ﻣﻲدھﺪ ﻛﻪ ﺣﺘﻲ ﻣﻲﺗﻮان اﻳﻦ ﻣﺘﻐﯿﺮ را ﺗﺎ ﺣﺪ‬
‫ﺧﺼﻮﺻﯿﺎﺗﻲ ﻣﺎﻧﻨﺪ اﻧﺘﻘﺎل ﻳﺎ دﻳﮕﺮ ﺧﺼﻮﺻﯿﺎت اﺧﺘﺼﺎﺻﻲ ﺗﻌﺮﻳﻒ ﻛﺮد ﻳﺎ اﻳﻨﻜﻪ ﺣﺘﻲ از ﻧﻮع ﻳﻚ ﺷﻲء ﺗﻌﺮﻳﻒ ﻛﺮد )ﻣﺎﻧﻨﺪ‬
‫‪ Camera‬ﺎ ﻳ ‪.(Light‬‬
‫ﺑﺮاي اﻳﻨﻜﻪ اﺳﻜﺮﻳﭙﺖ ﻗﺎدر ﺑﻪ دﺳﺘﺮﺳﻲ ﺑﻪ ﻣﺘﻐﯿﺮھﺎ و ﺗﻮاﺑﻊ ﺷﻲء دﻳﮕﺮ ﺑﺎﺷﺪ‪ ،‬ﺑﺎﻳﺪ ﺑﺼﻮرت ﻣﻘﺪار ﻳﻚ ﻣﺘﻐﯿﺮ ﺗﻌﯿﯿﻦ‬
‫ﺷﻮد‪ .‬ﺑﺎ اﻳﻦ ﺣﺎل‪ ،‬ﭼﻮن ﻧﺎم ﻳﻚ ﺷﻲء ﻓﻘﻂ ﻳﻜﻲ از ﺧﺼﻮﺻﯿﺎت آن اﺳﺖ‪ ،‬ﺷﻲء ﺑﺎﻳﺪ ﺑﺼﻮرت ﭘﻮﺷﯿﺪهﺗﺮي ﻣﻮرد‬
‫دﺳﺘﺮﺳﻲ ﻗﺮار ﮔﯿﺮد‪.‬‬
‫ﺳﻌﻲ ﻛﻨﯿﺪ ﻧﻮر ﻳﺎ دورﺑﯿﻦ ﻣﻮﺟﻮد در ﺻﺤﻨﻪ را از ﻧﻤﺎي ‪ Hierarchy‬ﺑﻪ ﭘﺎراﻣﺘﺮھﺎي ‪ Some Object‬در ‪ Inspector‬ﺑﻜﺸﯿﺪ‪.‬‬ ‫‪-١٠‬‬
‫وﻗﺘﻲ اﻳﻦ ﻋﻤﻞ اﻧﺠﺎم ﺷﺪ‪ ،‬اﺳﻜﺮﻳﭙﺖ ﺑﻪ ﭘﺎراﻣﺘﺮھﺎي آن ﺷﻲء دﺳﺘﺮﺳﻲ ﺧﻮاھﺪ داﺷﺖ و اﻳﻦ ﺷﺎﻣﻞ ﭘﺎراﻣﺘﺮھﺎي‬
‫ﻓﺮزﻧﺪ آن ﻧﯿﺰ ﻲﻣﺪﺷﺎﺑ‪.‬‬
‫ﻧﯿﺎزي ﺑﻪ ﻛﺎر ﺟﺪاﮔﺎﻧﻪ ﺑﺎ واﻟﺪﻳﻦ و ﻓﺮزﻧﺪان ﻧﯿﺴﺖ‪ ،‬ﭼﻮن اﻳﻦ دﺳﺘﺮﺳﻲ ﺑﻪ روش ﺧﺎﺻﻲ اﻧﺠﺎم ﻣﻲﺷﻮد‪.‬‬
‫ﺻﺤﻨﻪ و ﭘﺮوژه را ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬ ‫‪-١١‬‬

‫اﻧﺘﺨﺎب ﻳﻚ ﺷﻲء در ﺑﺎزي‬

‫ﺷﺎﻳﺪ ھﻨﻮز دارﻳﺪ اوﻟﯿﻦ ﺗﺠﺮﺑﻪي اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ﺧﻮدﺗﻮﻧﻮ ﻣﺮور ﻣﻲﻛﻨﯿﺪ‪ ،‬وﻟﻲ ﺑﺮاي ﻣﺪﺗﻲ ذھﻦ ﺧﻮد را آزاد ﻛﻨﯿﺪ ﺗﺎ‬
‫ﺑﻪ ﻳﻜﻲ از ﺑﺰرﮔﺘﺮﻳﻦ ﺗﻔﺎوتھﺎي ﺑﯿﻦ ﺑﺎزيھﺎي ‪) FPS‬ﺷﻠﯿﻚ ﻛﻨﻨﺪه اول ﺷﺨﺺ( و ﺑﺎزيھﺎي ﻣﺎﺟﺮاﻳﻲ ﻛﻠﯿﻜﻲ ﺑﭙﺮدازﻳﻢ‪ .‬در اﻳﺎم‬
‫ﮔﺬﺷﺘﻪ‪ ،‬ﺗﻌﺎﻣﻞ ﻋﻤﻮﻣﺎ ً ﺑﺮ اﺳﺎس ﺗﺨﻤﯿﻦ ﺑﻮد‪ :‬ﺷﻤﺎ ﺑﺎ اﺳﻠﺤﻪي ﺧﻮد ﺑﻪ ﻛﻠﯿﺪ آﺳﺎﻧﺴﻮر ﻣﻲزدﻳﺪ و در ﺑﺎز ﻣﻲﺷﺪ‪ .‬وارد ﻣﺤﺪودهي‬
‫دﺷﻤﻦ ﻣﻲﺷﺪﻳﺪ و دﺷﻤﻦ ﺷﺮوع ﺑﻪ ﺷﻠﯿﻚ ﻣﻲﻛﺮد‪ .‬ﻳﺎ ﺑﺎ آرﻲﭘﺟﻲ ﺧﻮد ﺑﻪ ﭼﻨﺪ ﺟﻌﺒﻪ ﺷﻠﯿﻚ ﻣﻲﻛﺮدﻳﺪ و ﺟﻌﺒﻪھﺎ ﻣﻨﻔﺠﺮ‬
‫ﻲﻣﺪﻧﺪﺷ ‪.‬‬

‫در ﺑﺎزيھﺎي ﻣﺎﺟﺮاﻳﻲ ﻛﻼﺳﯿﻚ‪ ،‬ﻣﻌﻤﻮﻻ ً ﻣﻜﺎن ﻧﻤﺎ ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ﺗﻌﺎﻣﻞ ﻣﻲﺷﻮد و ﺧﺒﺮي از ﺑﺮﺧﻮرد‪ ،‬ﻓﯿﺰﻳﻚ و ﻧﻮرﭘﺮدازي ﻧﺒﻮد‪.‬‬

‫ﻪﻨﻳﺰﮔ ‪ Help‬اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ را ﺑﺎز ﻛﻨﯿﺪ )‪(Help à Scripting Refrence‬‬ ‫‪-١‬‬


‫ﺑﺪﻧﺒﺎل ﻋﺒﺎرت ‪ On Mouse Down‬ﺑﮕﺮدﻳﺪ‬ ‫‪-٢‬‬
‫‪ ۵٧‬ﻧﺘﯿﺠﻪ ﺧﻮاھﯿﺪ دﻳﺪ‪ .‬ﺑﺎ ﮔﺸﺖ و ﮔﺬار ﻣﯿﺎن آنھﺎ‪ ،‬ﻣﻲﺗﻮان دﻳﺪ ﻛﻪ ﻧﺘﯿﺠﻪي دوم ‪ ،‬ﮔﺰﻳﻨﻪي ﻣﻮرد ﻧﻈﺮ اﺳﺖ‪.‬‬
‫روي ‪ MonoBehavior.OnMouseDown‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ‬ ‫‪-٣‬‬
‫ﻗﺼﺪ دارﻳﻢ ﺗﺎ ﺑﺮاي اﻳﻦ دﺳﺘﻮر ﻳﻚ ‪ JavaScript‬ﺟﺪﻳﺪ ﺑﻨﻮﻳﺴﯿﻢ‪ .‬ﻣﻲﺗﻮاﻧﯿﺪ آن را ﺑﻪ ﻳﻜﻲ از اﺳﻜﺮﻳﭙﺖھﺎي ﻣﻮﺟﻮد اﺿﺎﻓﻪ‬
‫ﻛﻨﯿﺪ‪.‬‬
‫ﻓﻮﻟﺪر ‪ MyScript‬را اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪ ،‬ﻛﻠﯿﻚ راﺳﺖ ﻛﺮده و ﻳﻚ ﺟﺎوااﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ اﻳﺠﺎد ﻛﻨﯿﺪ‪.‬‬ ‫‪-۴‬‬
‫ﻧﺎم اﺳﻜﺮﻳﭙﺖ ﺧﻮد را ‪ MousePick‬ﮔﺬاﺷﺘﻪ و آن را در وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ ﺑﺎز ﻛﻨﯿﺪ‪.‬‬ ‫‪-۵‬‬
‫ﻧﯿﺎزي ﺑﻪ ﺗﺎﺑﻊ ‪ Update‬در اﻳﻦ اﺳﻜﺮﻳﭙﺖ ﻧﺪارﻳﺪ‪ ،‬ﭘﺲ آن را ﺑﻪ ‪ OnMouseDown‬ﺗﻐﯿﯿﺮ ﻧﺎم دھ ﯿﺪ‪.‬‬ ‫‪-۶‬‬

‫ﻪﻧﻮﻤﻧي ﻣﻮﺟﻮد در ‪ Help‬ﻛﺪي را ﻧﺸﺎن ﻣﻲ دھﺪ ﻛﻪ ﻳﻚ ﺻﺤﻨﻪي ﺟﺪﻳﺪ را ﺑﺎرﮔﺬاري ﻣﻲﺪ ﻨﻛ ‪ .‬ﺑﺮﺧﻼف ﺗﺎﺑﻊ ‪ ،Update‬ﺗﺎﺑﻊ‬
‫‪ OnMouseDown‬ﺗﻨﮫﺎ زﻣﺎﻧﻲ ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﺷﻮد ﻛﻪ اﺗﻔﺎق رخ دھﺪ‪.‬‬
‫ﻳﻚ روش ﻣﻌﻤﻮل ﺑﺮاي ﻛﻨﺘﺮل ﻋﻤﻠﻜﺮد ﻣﻮردﻧﻈﺮ اﻳﻦ اﺳﺖ ﻛﻪ از ﺑﺮﻧﺎﻣﻪ ﺑﺨﻮاھﯿﻢ ﺗﺎ ﭘﯿﻐﺎﻣﻲ را در ﻛﻨﺴﻮل ﭼﺎپ ﻛﻨﺪ‪ .‬در ‪،Help‬‬
‫ﺑﺪﻧﺒﺎل ‪ print to console‬ﺑﮕﺮدﻳﺪ‪ .‬ﺑﺎ ﻧﮕﺎھﻲ ﺳﺮﻳﻊ ﺑﻪ ﻧﺘﺎﻳﺞ‪ ،‬ﺧﻮاھﯿﺪ دﻳﺪ ﻛﻪ ‪ Debug.Log‬ﭘﯿﻐﺎﻣﻲ را در ﻛﻨﺴﻮل ﻗﺮار ﻣﻲدھﺪ‪ .‬آن‬
‫را اﻧﺘﺨﺎب ﻛﻨﯿﺪ و ﺑﻪ رﺳﻢاﻟﺨﻂ آن دﻗﺖ ﻛﻨﯿﺪ‪ .‬ﺑﺴﯿﺎر ﺳﺎده اﺳﺖ‪ .‬ھﻤﭽﻨﯿﻦ از ‪ MonoBehaviour.print‬ﻧﯿﺰ ﻳﺎدداﺷﺖ ﺑﺮداري ﻛﻨﯿﺪ‬
‫ﺗﺎ ﺑﻌﺪھﺎ از آن ﺑﺮاي اﻳﺠﺎد ﻧﺘﯿﺠﻪ اي ﻣﺸﺎﺑﻪ ‪ Debug.Log‬اﺳﺘﻔﺎده ﻛﻨﯿﺪ‪.‬‬

‫ﺧﻂ زﻳﺮ را داﺧﻞ ﺗﺎﺑﻊ ‪ OnMouseDown‬اﺿﺎﻓﻪ ﻛﻨﯿﺪ‪:‬‬ ‫‪-٧‬‬


‫;)"‪Debug.Log("This object was picked‬‬
‫اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬ ‫‪-٨‬‬
‫ﺗﻮﺟﻪ ﻛﻨﯿﺪ ﻛﻪ ﺗﻮﺿﯿﺢ ﮔﻮﻳﺎي اﻳﻦ اﺳﺖ ﻛﻪ ﺗﺎﺑﻊ زﻣﺎﻧﻲ ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﺷﻮد ﻛﻪ ﻛﺎرﺑﺮ ﻛﻠﯿﺪ ﻣﺎوس را وﻗﺘﻲ ﻛﻪ ﻣﻜﺎن ﻧﻤﺎ‬
‫روي ‪ GUIElement‬ﻳﺎ ‪ Collider‬ﻗﺮار دارد‪ ،‬ﻓﺸﺎر دھﺪ‪ .‬در ﺣﺎل ﺣﺎظﺮ ﺷﻤﺎ ھﯿﭻ ﻋﻨﺼﺮي از ﻧﻮع ‪ GUI‬ﻳﺎ راﺑﻂ ﮔﺮاﻓﯿﻜﻲ‬
‫ﻛﺎرﺑﺮ در ﺻﺤﻨﻪي ﺧﻮد ﻧﺪارﻳﺪ‪ ،‬ﭘﺲ ﺑﺎﻳﺪ ﻳﻚ ‪ Collider‬داﺷﺘﻪ ﺑﺎﺷﯿﺪ‪.‬‬
‫‪ Cube‬را اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪.‬‬ ‫‪-٩‬‬
‫در ‪ ،Inspector‬ﺧﻮاھﯿﺪ دﻳﺪ ﻛﻪ اﻳﻦ ﺷﻲء ﻗﺒ ﻼ ً ﻳﻚ ‪ Collider‬داﺷﺘﻪ اﺳﺖ‪.‬‬

‫ﻧﻜﺘﻪ‪ :‬اﺷﯿﺎء اوﻟﯿﻪ )اﺣﺠﺎم اﻗﻠﯿﺪﺳﻲ( در زﻣﺎن اﻳﺠﺎد داراي ‪ Collider‬ﻣﻲﺑﺎﺷﻨﺪ‪.‬‬

‫ﺑﺮاي اﻳﻨﻜﻪ اﻧﺘﺨﺎب ﻣﻜﻌﺐ ﺳﺎدهﺗﺮ ﺷﻮد‪ ،‬اﺳﻜﺮﻳﭙﺖ ‪ SimpleMove‬را روي واﻟﺪ ﻣﻜﻌﺐ ﻏﯿﺮﻓﻌﺎل ﻛﻨﯿﺪ و ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ﻣﻜﻌﺐ از ﻧﻤﺎي‬
‫ﺑﺎزي ﺑﯿﺮون ﻧﻤﻲرود‪.‬‬

‫‪ -١٠‬واﻟﺪ ﻣﻜﻌﺐ را اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪.‬‬


‫‪ -١١‬ﺗﯿﻚ ﮔﺰﻳﻨﻪي ‪ SimpleMove‬را ﺑﺮدارﻳﺪ ﺗﺎ اﺳﻜﺮﻳﭙﺖ ﻏﯿﺮﻓﻌﺎل ﺷﻮد‪.‬‬

‫‪ -١٢‬اﻛﻨﻮن اﺳﻜﺮﻳﭙﺖ ‪ MousePick‬را روي ﻣﻜﻌﺐ و در ﻧﻤﺎي ‪ Hierarchy‬درگ ﻛﻨﯿﺪ‪.‬‬


‫‪ -١٣‬روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ و ﻣﻜﻌﺐ را اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪.‬‬
‫ﭘﯿﻐﺎﻣﻲ در ﺧﻂ وﺿﻌﯿﺖ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد ﻛﻪ ﺣﺎوي ﭘﯿﻐﺎم ﺷﻤﺎﺳﺖ‪.‬‬

‫ﻧﻜﺘﻪ‪ :‬اﮔﺮ ھﻨﮕﺎم اﻧﺘﺨﺎب ﻣﻜﻌﺐ اﺗﻔﺎﻗﻲ ﻧﯿﻔﺘﺪ‪ ،‬ﺑﺮرﺳﻲ ﻛﻨﯿﺪ ﻛﻪ آﻳﺎ اﺳﻜﺮﻳﭙﺖ ‪ MousePick‬را روي ﻣﻜﻌﺐ اﻋﻤﺎل ﻛﺮده ﺑﺎﺷﯿﺪ‪ ،‬ﻧﻪ‬
‫روي واﻟﺪ ﻣﻜﻌﺐ ﭼﻮن واﻟﺪ داراي ‪ Collider‬ﻧﯿﺴﺖ‪.‬‬

‫‪ -١۴‬ﻛﻨﺴﻮل را ﺑﺎ ﻛﻠﯿﻚ روي ﺧﻂ وﺿﻌﯿﺖ ﺑﺎز ﻛﻨﯿﺪ‪.‬‬


‫ھﺮﺑﺎر ﻛﻪ روي ﻣﻜﻌﺐ ﻛﻠﯿﻚ ﻣﻲﻛﻨﯿﺪ‪ ،‬ﭘﯿﻐﺎم روي ﻛﻨﺴﻮل ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬
‫ﺷﻜﻞ ‪ -١۶‬ﻛﻨﺴﻮل ﭘﺲ از ﭼﻨﺪ ﺑﺎر اﻧﺘﺨﺎب ﺷﻲء‬
‫ﺷﻲء ﺣﺘﻤﺎ ً ﻻزم ﻧﯿﺴﺖ ﻛﻪ ﻣﺮﺋﻲ و رﻧﺪر ﺷﺪه ﺑﺎﺷﺪ‪ .‬ﺑﺎ اﻳﻦ وﺿﻌﯿﺖ ﺷﻤﺎ ﻣﻲﺗﻮاﻧﯿﺪ ﺧﻼﻗﯿﺖھﺎي زﻳﺎدي در ﻣﺤﯿﻂ‬
‫ﺑﺎزي اﻧﺠﺎم دھﯿﺪ‪.‬‬
‫‪ -١۵‬ﻣﻜﻌﺐ را اﻧﺘﺨﺎب ﻛﻨﯿﺪ و دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ ﺷﻲء ﺷﻤﺎ در ﻛﺠﺎي ﺻﻔﺤﻪي ﺑﺎزي ﻗﺮار دارد‪.‬‬
‫‪ -١۶‬در ‪ ،Inspector‬ﮔﺰﻳﻨﻪي ‪ Mesh Renderer‬را ﻏﯿﺮﻓﻌﺎل ﻛﻨﯿﺪ‪.‬‬

‫ﻣﻜﻌﺐ از ﭘﻨﺠﺮهي ﺑﺎزي ﻣﺤﻮ ﻣﻲﺷﻮد‪ .‬در ﭘﻨﺠﺮهي ‪ ،Scene‬ھﻨﻮز ھﻢ ﻣﻲﺗﻮاﻧﯿﺪ ﺟﻌﺒﻪي ﺳﺒﺰ رﻧﮓ دورﺗﺎدور ﻣﻜﻌﺐ را ﺑﺒﯿﻨﯿﺪ‪.‬‬

‫ﺷﻜﻞ ‪ -١٧‬ﮔﺰﻳﻨﻪي ‪ Mesh Renderer‬ﻛﻪ ﻏﯿﺮﻓﻌﺎل ﺷﺪه اﺳﺖ‪.‬‬

‫‪ -١٧‬ﻧﺎﺣﯿﻪ اي از ﭘﻨﺠﺮهي ﺑﺎزي را ﻣﻜﻌﺐ در آن ﺑﻮد اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪.‬‬


‫ﺑﺎزھﻢ ﭘﯿﻐﺎم ﻗﺒﻞ در ﻧﻮار وﺿﻌﯿﺖ دﻳﺪه ﻣﻲﺷﻮد‪.‬‬

‫ﺷﻜﻞ ‪ -١٨‬ﻣﻜﻌﺐ ﻧﺎﻣﺮﺋﻲ )رﻧﺪر ﻧﺸﺪه( ﻛﻪ ھﻨﻮزﻗﺎﺑﻞ اﻧﺘﺨﺎب اﺳﺖ‬


‫‪ -١٨‬ﮔﺰﻳﻨﻪي ‪ Mesh Renderer‬را دوﺑﺎره ﻓﻌﺎل ﻛﻨﯿﺪ‪.‬‬
‫‪ -١٩‬اﻳﻦ ﺑﺎر‪ ،‬ﻛﻞ ﺷﻲء را ﺑﺎ ﻏﯿﺮﻓﻌﺎل ﻛﺮدن ﭼﻚ ﺑﺎﻛﺲ آن در ‪ Inspector‬ﻏﯿﺮﻓﻌﺎل ﻛﻨﯿﺪ‪.‬‬
‫ﺷﻜﻞ ‪ -١٩‬ﻏﯿﺮﻓﻌﺎل ﻛﺮدن ﻣﻜﻌﺐ در ‪Inspector‬‬

‫ﺗﻮﺟﻪ ﻛﻨﯿﺪ ﻛﻪ ‪ Collider‬دﻳﮕﺮ در ﭘﻨﺠﺮهي ﺻﺤﻨﻪ ﻧﻤﺎﻳﺶ داده ﻧﻤﻲﺷﻮد و ﺷﻲء در ‪ Hierarchy‬ﺑﻪ رﻧﮓ ﺧﺎﻛﺴﺘﺮي درآﻣﺪه اﺳﺖ‪.‬‬

‫ﺷﻜﻞ ‪ -٢٠‬ﻣﻜﻌﺐ ﻏﯿﺮﻓﻌﺎل ﺷﺪه ﺑﻪ رﻧﮓ ﺧﺎﻛﺴﺘﺮي درآﻣﺪه اﺳﺖ‬

‫‪ -٢٠‬ﺳﻌﻲ ﻛﻨﯿﺪ ﻛﻪ دوﺑﺎره در ﻣﺤﻞ ﻗﺒﻠﻲ ﻣﻜﻌﺐ در ﻧﻤﺎي ﺑﺎزي ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪.‬‬

‫ھﯿﭻ اﺗﻔﺎي ﻧﻤﻲاﻓﺘﺪ‪.‬‬

‫‪ -٢١‬ﭘﺨﺶ را ﻣﺘﻮﻗﻒ ﻛﻨﯿﺪ و ﻛﻨﺴﻮل را ﺑﺒﻨﺪﻳﺪ‪.‬‬


‫‪ -٢٢‬ﺻﺤﻨﻪ و ﭘﺮوژه را ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬

‫ﺷﻤﺎرش ﻛﻠﯿﻚھﺎي ﻣﺎوس‬

‫در ﺑﺎزي ﻣﺎﺟﺮاﻳﻲ ﻛﻠﯿﻜﻲ ﺷﻤﺎ‪ ،‬ﺑﺮﺧﻲ اﺷﯿﺎء ﺑﺎﻳﺪ ﺑﯿﺶ از ﻳﻚ ﺑﺎر اﻧﺘﺨﺎب ﺷﻮﻧﺪ ﺗﺎ ﺷﻲء ﺑﻪ وﺿﻌﯿﺖ ﺑﻌﺪي ﺧﻮد ﺑﺮود‪ .‬اﻳﻦ ﺑﺎر‬
‫ﺷﻤﺎ ﻣﺘﻐﯿﺮي اﺿﺎﻓﻪ ﻣﻲﻛﻨﯿﺪ ﻛﻪ ﺗﻌﺪاد اﻧﺘﺨﺎبھﺎي ﺷﻲء را ﻣﻲ ﺷﻤﺎرد‪.‬‬

‫اﺳﻜﺮﻳﭙﺖ ‪ MousePick‬را در وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ ﺑﺎز ﻛﻨﯿﺪ‪.‬‬ ‫‪-١‬‬


‫در ﺑﺎﻻي اﺳﻜﺮﻳﭙﺖ ‪ ،MousePick‬ﺧﻂ زﻳﺮ را اﺿﺎﻓﻪ ﻛﻨﯿﺪ‪:‬‬ ‫‪-٢‬‬
‫;‪private var pickNum = 0‬‬
‫ﺳﭙﺲ ﺑﺎﻳﺪ ﺧﻄﻲ ﺑﻪ ﺗﺎﺑﻊ ‪ OnMouseDown‬اﺿﺎﻓﻪ ﻛﻨﯿﺪ ﻛﻪ ﺑﺎ ھﺮﺑﺎر ﻓﺮاﺧﻮاﻧﻲ اﻳﻦ ﺗﺎﺑﻊ‪ pickNum ،‬را ﻳﻚ واﺣﺪ اﻓﺰاﻳﺶ‬
‫دھﺪ‪.‬‬
‫ﺧﻂ زﻳﺮ را در ﺑﺎﻻي دﺳﺘﻮر ‪ Debug.Log‬ﻗﺮار دھﯿﺪ‪:‬‬ ‫‪-٣‬‬
‫‪pickNum = pickNum + 1; // increment the number of times the object was picked‬‬
‫ﺗﻮﺿﯿﺤﺎت داده ﺷﺪه‪ ،‬ﻛﺎر دﺳﺘﻮر را ﻣﺸﺨﺺ ﻣﻲﻛﻨﻨﺪ‪.‬‬
‫ھﻤﭽﻨﯿﻦ ﻣﻲﺗﻮاﻧﯿﺪ از ‪ Debug.Log‬ﺑﺮاي ﮔﺰارش ﮔﯿﺮي از ﻋﺪد ﺑﺎﻻ اﺳﺘﻔﺎده ﻛﻨﯿﺪ‪ .‬از رﺳﻢ اﻟﺨﻂ ‪ print‬ﺑﺮاي ﮔﺮﻓﺘﻦ‬
‫ھﻤﺎن ﺧﺮوﺟﻲ اﺳﺘﻔﺎده ﻛﻨﯿﺪ‪ .‬دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ ‪ print‬ﺑﺎ ﺣﺮوف ﻛﻮﭼﻚ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪ .‬ھﻤﭽﻨﯿﻦ ﺗﻮﺟﻪ ﻛﻨﯿﺪ ﻛﻪ ﻣﺘﻐﯿﺮ را‬
‫ﺑﻪ ﭘﯿﻐﺎم ﺧﻮد اﺿﺎﻓﻪ ﻛﻨﯿﺪ و ﺑﺮاي اﻳﻦ ﻛﺎر ﺑﺎﻳﺪ رﺷﺘﻪھﺎ را از ھﻢ ﺟﺪا ﻛﻨﯿﺪ‪.‬‬
‫ﺧﻂ ‪ Debug.Log‬را ﺑﺼﻮرت زﻳﺮ ﺑﺎزﻧﻮﻳﺴﻲ ﻛﻨﯿﺪ‪:‬‬ ‫‪-۴‬‬
‫;)"‪print("This object was picked" + pickNum + "times.‬‬
‫اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬ ‫‪-۵‬‬
‫روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ ﺗﺎ ﺑﺨﺶ ﺷﺮوع ﺷﻮد و ﺷﻤﺎ ﻧﯿﺰ ﺷﺮوع ﺑﻪ اﻧﺘﺨﺎب ﻣﻜﻌﺐ ﻛﻨﯿﺪ‪.‬‬ ‫‪-۶‬‬
‫ﺑﺎ ھﺮ ﺑﺎر اﻧﺘﺨﺎب و ﻛﻠﯿﻚ ﺷﻤﺎ‪ ،‬ﭘﯿﻐﺎم ﻧﯿﺰ ﺑﻪروز ﻣﻲﺷﻮد‪.‬‬

‫ﮔﺎھﻲ ﻣﻤﻜﻦ اﺳﺖ دﺳﺘﻮراﻟﻌﻤﻞ اﻓﺰاﻳﺶ را ﺑﺼﻮرت دﻳﮕﺮي ﺑﺒﯿﻨﯿﺪ‪.‬‬


‫‪pickNum = pickNum + 1‬‬
‫را ﻣﻲﺗﻮان ﺑﺼﻮرت ;‪ pickNum +=1‬ﻧﻮﺷﺖ‪.‬‬
‫‪ -٧‬ﭘﺲ اﺳﻜﺮﻳﭙﺖ را ﺑﻪ اﻳﻦ ﺻﻮرت ﻋﻮض ﻛﻨﯿﺪ‪.‬‬
‫‪pickNum += 1; //increment the number of times the object was picked‬‬
‫‪ -٨‬اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬
‫‪ -٩‬روي ‪ Play‬ﻛﻠﯿﻚ ﻛﻨﯿﺪ و ﻛﺎر ﺧﻮد را ﺗﺴﺖ ﻛﻨﯿﺪ‪.‬‬
‫ﻧﺘﯿﺠﻪ ھﻤﺎن اﺳﺖ‪.‬‬

‫ﺷﺮاﻳﻂ و وﺿﻌﯿﺖ‬

‫ﻛﻠﯿﺪ اﻳﺠﺎد ﺗﻌﺎﻣﻞ ﺗﻮاﻧﺎﻳﻲ ﻣﺸﺨﺺ ﻛﺮدن ﺷﺮاﻳﻂ در ﻣﻮﻗﻌﯿﺖھﺎﻳﻲ اﺳﺖ ﭘﯿﺶ ﻣﻲاﻳﺪ‪ .‬ﺣﺘﻲ در ﺑﺎزيھﺎي ﺗﯿﺮاﻧﺪازي ﺳﻨﺘﻲ ﻧﯿﺰ‪،‬‬
‫ﻳﻚ ﺷﻲء ﻣﻤﻜﻦ اﺳﺖ ﺗﻌﺪاد ﻣﺸﺨﺼﻲ ﺗﯿﺮ ﺑﺨﻮرد ﺗﺎ از ﺑﯿﻦ ﺑﺮود‪ .‬ھﺮﺑﺎر ﻛﻪ ﺷﻲء ﺗﯿﺮ ﻣﻲ ﺧﻮرد‪ ،‬ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺪ ﭼﻚ ﻛﻨﺪ ﻛﻪ آﻳﺎ‬
‫ﺷﺮاﻳﻂ ﻣﺸﺨﺼﻲ ﭘﯿﺶ آﻣﺪه اﺳﺖ ﻛﻪ ﺑﺮ اﺳﺎس آن ﺗﺼﻤﯿﻢ ﮔﯿﺮي ﺷﻮد‪ .‬ھﺮﻳﻚ از اﻳﻦ ﺷﺮاﻳﻂ را ﻣﻲﺗﻮان ﻳﻚ وﺿﻌﯿﺖ ﻧﺎﻣﯿﺪ‪.‬‬

‫در ﺑﺎزيھﺎي ﻛﻠﯿﻜﻲ ﺳﻨﺘﻲ‪ ،‬وﺿﻌﯿﺖ اھﻤﯿﺖ ﺧﺎﺻﻲ ﭘﯿﺪا ﻣﻲﻛﻨﺪ‪ .‬ﻣﻌﻤﻮﻻ ً‪ ،‬ﺗﻘﺮﻳﺒﺎ ً ھﺮ ﭼﯿﺰي ﻛﻪ ﺑﺎ آن ارﺗﺒﺎط ﺑﺮﻗﺮار ﻣﯿﻜﻨﯿﺪ داراي‬
‫وﺿﻌﯿﺘﻲ اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ ھﻤﻮاره از آن آﮔﺎه ﺑﺎﺷﺪ‪ .‬وﻗﺘﻲ روي در ﻛﻠﯿﻚ ﻣﻲﻛﻨﯿﺪ‪ ،‬در ﺑﺎﻳﺪ ﺑﺪاﻧﺪ ﻛﻪ آﻳﺎ ﻗﻔﻞ ﺷﺪه اﺳﺖ ﻳﺎ ﻧﻪ و ﻳﺎ‬
‫اﺻﻼ ً ﺑﺎز اﺳﺖ ﻳﺎ ﺑﺴﺘﻪ ﺗﺎ ﻧﺴﺒﺖ ﺑﻪ ﻣﺤﺮﻛﻲ ﻛﻪ از طﺮف ﺷﻤﺎ اﻋﻤﺎل ﺷﺪه اﺳﺖ‪ ،‬ﺑﻪ درﺳﺘﻲ ﭘﺎﺳﺦ ﺑﮕﻮﻳﺪ‪.‬‬

‫ﻛﺎر را ﺑﺎ ﻣﻜﻌﺐ ﺳﺎدهي ﺷﻤﺎ اداﻣﻪ ﻣﻲدھﯿﻢ و دو ﺳﯿﺴﺘﻢ وﺿﻌﯿﺖ اوﻟﯿﻪ ﺑﺮاي آن ﺗﻨﻈﯿﻢ ﻣﻲﻛﻨﯿﻢ ﺗﺎ ﭼﺮﺧﺶ را روﺷﻦ و‬
‫ﺧﺎﻣﻮش ﻛﻨﺪ‪ .‬ﭼﻮن ﻣﻲﺧﻮاھﯿﺪ ﭼﺮﺧﺶ را ﻛﻨﺘﺮل ﻛﻨﯿﺪ‪ ،‬ﺑﺎﻳﺪ ﻳﻚ ﺗﺎﺑﻊ ‪ OnMouseDown‬ﺑﻪ اﺳﻜﺮﻳﭙﺖ ﭼﺮﺧﺶ اﺿﺎﻓﻪ ﻛﻨﯿﻢ‪.‬‬

‫ﺑﺮاي اﻳﻦ ﻛﺎر از ﻳﻚ ﻣﺘﻐﯿﺮ ﺧﺼﻮﺻﻲ )‪ (private var‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﯿﻢ ﻛﻪ در ‪ Inspector‬دﻳﺪه ﻧﺸﻮد‪ .‬از ﻧﻈﺮ ﺗﺌﻮري‪ ،‬ﺑﺎﻳﺪ از ﻳﻚ ﻧﻮع‬
‫ﺑﻮﻟﯿﻦ ﺑﺮاي ﻣﺘﻐﯿﺮ ﺧﻮد اﺳﺘﻔﺎده ﻛﻨﯿﺪ ﻛﻪ ﻓﻘﻂ دو وﺿﻌﯿﺖ دارد )روﺷﻦ‪/‬ﺧﺎﻣﻮش ﻳﺎ درﺳﺖ‪/‬ﻏﻠﻂ( و ﺣﺎﻓﻈﻪي ﻛﻤﺘﺮي اﺳﺘﻔﺎده‬
‫ﻣﻲﻛﻨﺪ‪ .‬ھﺮﭼﻨﺪ‪ ،‬ﭼﻮن ﺑﺴﯿﺎري از اﻛﺸﻦھﺎ داراي دو وﺿﻌﯿﺖ ھﺴﺘﻨﺪ‪ ،‬ﺑﮫﺘﺮ اﺳﺖ در ﻣﻮرد وﺿﻌﯿﺖھﺎ ﺑﺼﻮرت ﻋﺪدي ﻓﻜﺮ ﻛﻨﯿﻢ و‬
‫از اﻋﺪاد اﺳﺘﻔﺎده ﻛﻨﯿﻢ‪.‬‬

‫‪ -١‬اﺳﻜﺮﻳﭙﺖ ‪ SimpleRotate‬را ﺑﺎز ﻛﻨﯿﺪ‪.‬‬


‫‪ -٢‬ﻣﺘﻐﯿﺮ زﻳﺮ و ﺗﻮﺿﯿﺢ ھﻤﺮاه آن را ﺑﻪ اﺳﻜﺮﻳﭙﺖ اﺿﺎﻓﻪ ﻛﻨﯿﺪ‪.‬‬
‫‪private var rotationState = 1; // this variable keeps track of the state of the rotation whether it is off‬‬
‫‪or on- 1 in on, 0 is off‬‬
‫ﻧﻜﺘﻪ‪ :‬ﺗﺮﺗﯿﺐ ﻟﯿﺴﺖ ﺷﺪن ﻣﺘﻐﯿﺮھﺎ و ﺗﻮاﺑﻊ در اﺳﻜﺮﻳﭙﺖ ﺣﯿﺎﺗﻲ ﻧﯿﺴﺖ‪ ،‬وﻟﻲ ﻳﻚ ﻗﺎﻋﺪهي ﻋﻤﻮﻣﻲ اﻳﻦ اﺳﺖ ﻛﻪ‬
‫ﻣﺘﻐﯿﺮھﺎي ﻣﻌﻤﻮﻟﻲ در ﺑﺎﻻ )ﭼﻮن در ‪ Inspector‬ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻧﺪ( و ﻣﺘﻐﯿﺮھﺎي ﺧﺼﻮﺻﻲ ﺑﻌﺪ از ﻋﻤﻮﻣﻲھﺎ ﻗﺮار‬
‫ﻣﻲﮔﯿﺮﻧﺪ‪.‬‬
‫‪ -٣‬ﺗﺎﺑﻊ زﻳﺮ را در ﭘﺎﻳﯿﻦ ﺗﺎﺑﻊ ‪ Update‬اﺿﺎﻓﻪ ﻛﻨﯿﺪ‪:‬‬
‫{ )( ‪function OnMouseDown‬‬
‫{ )‪if (rotationState == 1‬‬
‫;‪rotationState = 0‬‬
‫}‬
‫{ )‪else if (rotationState == 0‬‬
‫;‪rotationState = 1‬‬
‫}‬
‫;)‪print("State = " + rotationState‬‬

‫}‬
‫اﺳﻜﺮﻳﭙﺖ ﺗﻐﯿﯿﺮ ﻳﺎﻓﺘﻪ را ﺑﺎ ﻋﻨﻮان ‪ SimpleRotateToggle.js‬ذﺧﯿﺮه ﻛﻨﯿﺪ‪.‬‬ ‫‪-۴‬‬

‫ﻧﻜﺘﻪ‪ :‬ھﻨﮕﺎم اﺳﺘﻔﺎده از ‪ Save As‬ﺑﺮاي ذﺧﯿﺮهي ﻳﻚ اﺳﻜﺮﻳﭙﺖ در ﻛﺎﻣﭙﯿﻮﺗﺮ‪ ،‬اطﻤﯿﻨﺎن ﺣﺎﺻﻞ ﻛﻨﯿﺪ ﻛﻪ ﭘﺴﻮﻧﺪ ‪ js‬ﺑﻪ آن اﺿﺎﻓﻪ‬
‫ﺷﺪه ﺑﺎﺷﺪ ﺗﺎ وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ ﻣﺘﻮﺟﻪ ﻓﺮﻣﺖ ﻣﻮرد اﺳﺘﻔﺎده ﺷﻤﺎ ھﻨﮕﺎم ذﺧﯿﺮه ﺳﺎزي و ﺧﻮاﻧﺪن ﺷﻮد‪.‬‬

‫ﺑﻪ ﺟﺎي ﺣﺬف اﺳﻜﺮﻳﭙﺖ ‪ SimpleRotate‬ﻣﻮﺟﻮد و اﺿﺎﻓﻪ ﻛﺮدن ﻧﺴﺨﻪي ﺟﺪﻳﺪ‪ ،‬ﻣﻲﺗﻮاﻧﯿﺪ اﺳﻜﺮﻳﭙﺖ را در ‪ Inspector‬ﻣﺠﺪدا ً‬
‫ﺗﺨﺼﯿﺺ دھﯿﺪ‪ .‬اﻳﻦ روش داراي اﻳﻦ ﻣﺰﻳﺖ اﺳﺖ ﻛﻪ ﻣﻘﺎدﻳﺮ ﻣﺘﻐﯿﺮھﺎ از ﺑﯿﻦ ﻧﻤﻲروﻧﺪ‪.‬‬

‫واﻟﺪ ﻣﻜﻌﺐ )‪ (Cube Parent‬را در ﻧﻤﺎي ‪ Hierarchy‬ﺑﺎز ﻛﻨﯿﺪ و ﻣﻜﻌﺐ را اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪.‬‬ ‫‪-١‬‬
‫روي آﻳﻜﻮن ‪ Browse‬در ﻛﻨﺎر اﺳﻜﺮﻳﭙﺖ ﺑﺎرﮔﺬاري ﺷﺪه ﻛﻠﯿﻚ ﻛﻨﯿﺪ‪.‬‬ ‫‪-٢‬‬

‫ﻛﺎوﺷﮕﺮ ‪) Asset‬داراﻳﻲھﺎ( اﺳﻜﺮﻳﭙﺖھﺎي ﻣﻮﺟﻮد را ﺑﺮاي ﭘﺮوژهي ﺷﻤﺎ ﻟﯿﺴﺖ ﻣﻲﻛﻨﺪ‪.‬‬

‫ﺷﻜﻞ ‪ -٢٢‬ﺟﺎﻳﮕﺰﻳﻨﻲ ﻳﻚ ﻛﺎﻣﭙﻮﻧﻨﺖ اﺳﻜﺮﻳﭙﺖ ﻣﻮﺟﻮد‬

‫ﺷﻜﻞ ‪ -٢٣‬اﺳﻜﺮﻳﭙﺖھﺎي ﻣﻮﺟﻮد‬

‫اﺳﻜﺮﻳﭙﺖ ‪ SimpleRotateToggle‬را اﻧﺘﺨﺎب ﻛﻨﯿﺪ‪ .‬ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ اﻳﻦ اﺳﻜﺮﻳﭙﺖ ﺟﺎﻳﮕﺰﻳﻦ ﻣﻲﺷﻮد وﻟﻲ ‪myDegree‬‬ ‫‪-٣‬‬
‫دﺳﺖ ﻧﺨﻮرده ﺑﺎﻗﻲ ﻣﻲﻣﺎﻧﺪ‪.‬‬
‫ﻧﮕﺎھﻲ ﺑﻪ ﺷﺮط‬

‫)‪if (rotationState == 1‬‬

‫درون ﭘﺮاﻧﺘﺰھﺎ ﻋﺒﺎرﺗﻲ اﺳﺖ ﻛﻪ ﺷﺮط آن ﺑﺎﻳﺪ ﺑﺮﻗﺮار ﺑﺎﺷﺪ ﺗﺎ ﺑﻘﯿﻪ دﺳﺘﻮرات ﻛﻪ درون آﻛﻮﻻد ﻗﺮار دارﻧﺪ‪ ،‬اﺟﺮا ﺷﻮﻧﺪ‪ .‬ﻪﺟ ﻮﺘ ﻣ ًﺎﻤ ﺘﺣ‬
‫دو ﻋﻼﻣﺖ ﺗﺴﺎوي ﺷﺪهاﻳﺪ‪ .‬اﻳﻦ ﻋﻼﻣﺖ‪ ،‬ﻋﻤﻠﮕﺮ ﺗﺴﺎوي ﻧﺎم دارد و ﻛﺎر آن ﺑﺮرﺳﻲ ﻣﺴﺎوي ﺑﻮدن ﻣﺘﻐﯿﺮ ‪ rotationState‬ﺑﺎ ﻣﻘﺪار‬
‫‪ ١‬اﺳﺖ‪ .‬اﮔﺮ ﭼﻨﯿﻦ ﺑﺎﺷﺪ‪ ،‬ﺷﺮط ﺑﺮﻗﺮار اﺳﺖ و دﺳﺘﻮرات داﺧﻞ آﻛﻮﻻد اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪ .‬ﻳﻌﻨﻲ ﻣﻘﺪار ‪ rotationState‬ﺑﺮاﺑﺮ ﺑﺎ ‪٠‬‬
‫ﻮﺧاھﺪ ﺷﺪ‪ .‬دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ اﮔﺮ ﻓﻘﻂ از ﻳﻚ ﻋﻼﻣﺖ ﻣﺴﺎوي اﺳﺘﻔﺎده ﻛﻨﯿﻢ‪ ،‬ﻋﻤﻠﮕﺮ ﺗﺨﺼﯿﺺ را ﺑﻜﺎر ﺑﺮدهاﻳﻢ‪ .‬ﺷﺮط ﺑﺮﻗﺮار ﻧﺒﺎﺷﺪ‪،‬‬
‫وارد ﻗﺴﻤﺖ ‪ else if‬ﻲﻣﺷﻮﻳﻢ‪ .‬در اﻳﻨﺠﺎ ﻣﻘﺪار ‪ rotationState‬ﺑﺮاﺑﺮ ﺑﺎ ‪ ١‬ﻗﺮار داده ﻣﻲﺷﻮد‪ .‬ﭘﺲ از اﻳﻨﻜﻪ وﺿﻌﯿﺖ ﺷﻨﺎﺳﺎﻳﻲ و‬
‫ﻪﺑروز ﺷﺪ‪ ،‬روي ﻛﻨﺴﻮل ﻧﻤﺎﻳﺶ داده ﺧﻮاھﺪ ﺷﺪ‪.‬‬

‫ﺗﺮﺗﯿﺐ ارزﻳﺎﺑﻲ‬

‫در اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ‪ ،‬ﺑﺮاي ارزﻳﺎﺑﻲ ﻗﻮاﻧﯿﻦ ﻣﻌﺎدﻻت رﻳﺎﺿﻲ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﯿﺮد‪ .‬ﺿﺮب و ﺗﻘﺴﯿﻢ اول ﭘﺮدازش ﻣﻲﺷﻮﻧﺪ‪،‬‬
‫ﺳﭙﺲ ﺟﻤﻊ و ﺗﻔﺮﻳﻖ و ﻧﮫﺎﻳﺘﺎ ً ﻣﻘﺎﻳﺴﻪھﺎﻳﻲ ﻣﺎﻧﻨﺪ ‪ and / or‬و ‪ ....‬اﮔﺮ ﭼﯿﺰي درون ﭘﺮاﻧﺘﺰ ﺑﺎﺷﺪ‪ ،‬ﻗﺒﻞ از ھﻤﻪ ﭘﺮدازش ﻣﻲﺷﻮد‪.‬‬
‫در ﻣﻮرد ﭘﺮاﻧﺘﺰھﺎي ﺗﻮدرﺗﻮ ﻧﯿﺰ داﺧﻠﻲﺗﺮﻳﻦ ﭘﺮاﻧﺘﺰ اول ﭘﺮدازش ﻣﻲﺷﻮد‪.‬‬

‫در اﻳﻦ ﻧﻮﺷﺘﻪ‪ ،‬ﺳﻌﻲ ﺷﺪ ﻣﺒﺎﻧﻲ اوﻟﯿﻪي ﻛﺎر ﺑﺎ اﺳﻜﺮﻳﭙﺖھﺎ در ﻳﻮﻧﯿﺘﻲ ﺑﻪ ﺳﺎدهﺗﺮﻳﻦ روش آﻣﻮزش داده ﺷﻮد‪ .‬در آﻣﻮزشھﺎي‬
‫ﺑﻌﺪي‪ ،‬در ﻛﻨﺎر دﻳﮕﺮ آﻣﻮزشھﺎ‪ ،‬اﺳﻜﺮﻳﭙﺖﻧﻮﻳﺴﻲ را ﻧﯿﺰ ﻛﺎﻣﻞﺗﺮ ﻳﺎد ﺧﻮاھﯿﻢ ﮔﺮﻓﺖ‪.‬‬

‫‪ :.‬اﻧﺘﺸﺎر اﻳﻦ ﻣﻄﻠﺐ ﺑﻪ ھﺮ روش ﻛﺎﻣﻼ ً آزاد ﺑﻮده و ﺗﻨﮫﺎ ﻣﺤﺪودﻳﺖ ﻣﻮﺟﻮد ذﻛﺮ ﻣﻨﺒﻊ ﻣﻄﻠﺐ ﻳﻌﻨﻲ وﺑﻼگ دﻧﯿﺎي‬
‫زﻳﺒﺎي ﻛﺎﻣﭙﯿﻮﺗﺮ ﺑﻪ آدرس ‪ http://dialup.persianblog.ir‬اﺳﺖ‪ .‬ھﺮﮔﻮﻧﻪ ﻧﻈﺮ‪ ،‬اﻧﺘﻘﺎد و ﭘﯿﺸﻨﮫﺎد ﺷﻤﺎ در ﻣﻮرد اﻳﻦ‬
‫ﻣﻄﻠﺐ ﻳﺎ ﻣﻄﺎﻟﺐ ﻣﻮرد ﻧﯿﺎز دﻳﮕﺮ‪ ،‬راھﻨﻤﺎي ﻣﻦ در ارﺗﻘﺎء ﺳﻄﺢ ﻣﻄﺎﻟﺐ و اراﺋﻪي ﻣﻄﺎﻟﺐ ﻣﻔﯿﺪﺗﺮ اﺳﺖ ‪.:‬‬

You might also like