You are on page 1of 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