Professional Documents
Culture Documents
IR
Unity 3D
Game Engine
ﻗﻠﺐ ﻳﻚ ﺑﺎزي ﺗﻌﺎﻣﻠﻲ در اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ آن اﺳﺖ .در ﻳﻮﻧﯿﺘﻲ ،ھﻤﻪ ﭼﯿﺰ ﺑﺎﻳﺪ اﺳﻜﺮﻳﭙﺖ ﺷﻮد .ﺧﻮﺷﺒﺨﺘﺎﻧﻪ،
اﺳﻜﺮﻳﭙﺖھﺎي آﻣﺎده اي را ﻣﻲﺗﻮان از ﻣﻨﺎﺑﻊ ﻣﺨﺘﻠﻒ درﻳﺎﻓﺖ ﻛﺮد .ھﻤﺮاه ﻳﻮﻧﯿﺘﻲ ﻣﺠﻤﻮﻋﻪاي ﺑﺰرگ از اﺳﻜﺮﻳﭙﺖھﺎي ﻣﻔﯿﺪ اراﺋﻪ
ﺷﺪه اﺳﺖ ﺗﺎ ﺷﻤﺎ را ﻣﺴﻠﺢ و آﻣﺎده ﻛﺎر ﻛﻨﺪ .ﻗﺴﻤﺖ Helpﻣﻤﻠﻮ از ﻣﺜﺎلھﺎ و اﺳﻨﯿﭙﺖ )ﺗﻜﻪ ﻛﺪ( اﺳﺖ .ھﻤﭽﻨﯿﻦ ﻳﻚ ﺑﺨﺶ
ﻛﺎﻣﻞ در ﻣﻮرد اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ دارد Unity Forum ،Unity 3D Wiki .و ، Unity Answersﻣﻨﺎﺑﻊ ﺧﻮﺑﻲ ﺑﺮاي ﺑﺪﺳﺖ آوردن
اﺳﻜﺮﻳﭙﺖھﺎ ﻣﻲﺑﺎﺷﻨﺪ .ﻣﺤﻞ دﻳﮕﺮي ﻛﻪ ﻣﻲﺗﻮاﻧﯿﺪ ﺑﺮاي اﺳﻜﺮﻳﭙﺖﻧﻮﻳﺴﻲ ﺑﻪ آن ﻣﺮاﺟﻌﻪ ﻛﻨﯿﺪ ،آﻣﻮزشھﺎﻳﻲ اﺳﺖ ﻛﻪ از وب
ﺳﺎﻳﺖ ﻳﻮﻧﯿﺘﻲ ﻗﺎﺑﻞ داﻧﻠﻮد ﻣﻲﺑﺎﺷﻨﺪ .ﺑﺴﯿﺎري از اﻳﻦ آﻣﻮزشھﺎ ،ﺑﺨﻮﺑﻲ ﻧﺤﻮهي ﻛﺎر ﻛﺪھﺎ را ﺗﻮﺿﯿﺢ ﻣﻲدھﻨﺪ .ﺗﻮﺟﻪ داﺷﺘﻪ
ﺑﺎﺷﯿﺪ ﻛﻪ اﺳﻜﺮﻳﭙﺖھﺎي ﻳﻮﻧﯿﺘﻲ را ﻣﻲﺗﻮان ﺑﻪ زﺑﺎنھﺎي C# ،JavaScriptو Booﻧﻮﺷﺖ ،وﻟﻲ آﻣﻮزشھﺎي ﻳﻮﻧﯿﺘﻲ ﺑﻄﻮر رﺳﻤﻲ
از JavaScriptﺑﺮاي اﻳﻦ ﻛﺎر اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ و ﻣﻦ ﻧﯿﺰ از اﻳﻦ روﻳﻪ ﺗﺒﻌﯿﺖ ﺧﻮاھﻢ ﻛﺮد.
ھﺪف از اﻳﻦ آﻣﻮزش ،ﻳﺎد دادن اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ﺑﻄﻮر ﻛﺎﻣﻞ ﻧﯿﺴﺖ ،ﺑﻠﻜﻪ ھﺪف اﻳﻦ اﺳﺖ ﻛﻪ ﺷﻤﺎ ﺑﺘﻮاﻧﯿﺪ
اﺳﻜﺮﻳﭙﺖھﺎﻳﻲ را ﻛﻪ ﭘﯿﺪا ﻣﻲﻛﻨﯿﺪ ﺑﮫﺘﺮ ﺑﺨﻮاﻧﯿﺪ و ﺷﻨﺎﺧﺘﻲ اوﻟﯿﻪ از ﻛﺎرﻛﺮد اﻳﻦ ﻛﺪھﺎ ﺑﺪﺳﺖ آورﻳﺪ .ﺑﺴﯿﺎري از اﺳﻜﺮﻳﭙﺖھﺎ
ﻮﺨﺑﺑﻲ ﻣﺴﺘﻨﺪﺳﺎزي ﺷﺪهاﻧﺪ ،وﻟﻲ ﺑﺮﺧﻲ دﻳﮕﺮ اﻳﻨﮕﻮﻧﻪ ﻧﯿﺴﺘﻨﺪ و ﺑﻨﺎﺑﺮاﻳﻦ ،ﻣﻦ ﺑﺨﺶھﺎي ﻛﻠﯿﺪي را ﻛﻢ ﻛﻢ ﺑﻪ ﺷﻤﺎ آﻣﻮزش
ﻲﻣ دھﻢ ﺗﺎ ﺑﻪ راﺣﺖﺗﺮﻳﻦ روش اﺳﻜﺮﻳﭙﺖھﺎ را ﺑﺨﻮاﻧﯿﺪ .ﺑﯿﺎد داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﻛﻪ اﺳﻜﺮﻳﭙﺖﻧﻮﻳﺴﻲ ﺑﯿﺸﺘﺮ ﻣﻨﻄﻖ و رﺳﻢ اﻟﺨﻂ
اﺳﺖ و ﻣﻨﻄﻖ ﭼﯿﺰي اﺳﺖ ﻛﻪ ﺗﻌﺎﻣﻞ را ﺑﻪ ﭘﯿﺶ ﻣﻲﺑﺮد.
اﺳﻜﺮﻳﭙﺖ ﭼﯿﺴﺖ؟
اﺳﻜﺮﻳﺖ را ﺑﻪ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ اي از دﺳﺘﻮراﻟﻌﻤﻞھﺎ ﻓﺮض ﻛﻨﯿﺪ .ﻣﺜﻼ ً ﺷﻤﺎ آﺧﺮ ھﻔﺘﻪ ﺑﺮاي ﻣﮫﻤﺎﻧﻲ ﻗﺮار اﺳﺖ ﺑﻪ ﺑﺎغ
ﻢﻋ ﻗﺰي ﺑﺮوﻳﺪ .اﮔﺮ آدرس را ﺑﻠﺪ ﻧﺒﺎﺷﯿﺪ ،از Googleﺎ ﻳ MapQuestﺑﺮاي دﻳﺪن ﻣﺴﯿﺮ اﺳﺘﻔﺎده ﻣﻲﻛﻨﯿﺪ و آن را ﭼﺎپ ﻣﻲﻛﻨﯿﺪ و
ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ،ﻣﺴﯿﺮ را ﺑﻄﻮر ﻛﺎﻣﻞ در دﺳﺖ دارﻳﺪ .در ﺻﺤﺒﺘﻲ ﻛﻪ ﺑﺎ ﻋﻢﻗﺰي دارﻳﺪ ،از ﺷﻤﺎ ﺧﻮاﺳﺘﻪ ﻣﻲﺷﻮد ﺗﺎ ﺗﻨﻘﻼﺗﻲ ﺑﺮاي
ﻣﮫﻤﺎﻧﻲ ﺧﺮﻳﺪاري ﻛﻨﯿﺪ .ﺷﻤﺎ ھﻢ روي ﻧﻘﺸﻪاي ﻛﻪ در دﺳﺖ دارﻳﺪ ،آﻧﭽﻪ را ﻛﻪ ﺑﺎﻳﺪ ﺧﺮﻳﺪاري ﺷﻮد ،ﻳﺎدداﺷﺖ ﻣﻲﻛﻨﯿﺪ ﺗﺎ ﺳﺮ
راه از ﻓﺮوﺷﮕﺎه ﺧﺮﻳﺪاري ﻛﻨﯿﺪ .ھﻤﭽﻨﯿﻦ ﺧﻮاھﺮ ﺷﻤﺎ ﺑﻪ ﺷﻤﺎ ﻣﻲﮔﻮﻳﺪ ﻛﻪ وﻗﺘﻲ ﺑﻪ آﻧﺠﺎ رﺳﯿﺪﻳﺪ ،ﻣﺎﺷﯿﻦ را دورﺗﺮ ﭘﺎرك ﻛﻨﯿﺪ ﺗﺎ
ھﻤﻪ ﺑﺘﻮاﻧﻨﺪ وارد ﺑﺎغ ﺷﻮﻧﺪ .ﺑﺮادرﺗﺎن ھﻢ ﻣﻲﮔﻮﻳﺪ ﻛﻪ ﭼﺎدر ﻣﺎﺷﯿﻦ را ﻓﺮاﻣﻮش ﻧﻜﻨﯿﺪ ،ﭼﻮن ﻣﺮغ و ﺧﺮوسھﺎي ﻋﻢﻗﺰي ﻣﻤﻜﻦ
اﺳﺖ روي ﻣﺎﺷﯿﻦ ﺷﻤﺎ ﺧﺮاﺑﻜﺎري ﻛﻨﻨﺪ .ﺑﺮاي اﻳﻨﻜﻪ اﻳﻦ ﻣﻄﺎﻟﺐ را ﻧﯿﺰ ﻓﺮاﻣﻮش ﻧﻜﻨﯿﺪ ،در ﭘﺸﺖ ﻛﺎﻏﺬ ﻧﻘﺸﻪ ،آنھﺎ را ﻳﺎدداﺷﺖ
ﻲﻣﻛﻨﯿﺪ و ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ﻳﻚ اﺳﻜﺮﻳﭙﺖ اﻳﺠﺎد ﺷﺪه اﺳﺖ.
اﺳﻜﺮﻳﭙﺖھﺎ ،ﻣﻲﺗﻮاﻧﻨﺪ ﺣﺎوي ھﺮ ﻣﯿﺰان اطﻼﻋﺎت و دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺎﺷﻨﺪ .اﻳﻦ ﺑﺴﺘﮕﻲ ﺑﻪ ﺷﻤﺎ دارد ﻛﻪ ﭼﮕﻮﻧﻪ
اﺳﻜﺮﻳﭙﺖھﺎي ﺧﻮد را ﻣﺮﺗﺐ ﻧﮕﮫﺪارﻳﺪ ﺗﺎ ﻣﻮﺗﻮر ﺑﺎزي ﺑﺪاﻧﺪ ﻛﻪ ﭼﻪ ﻣﻮﻗﻊ از دﺳﺘﻮراﻟﻌﻤﻞھﺎ اﺳﺘﻔﺎده ﻛﻨﺪ.
ﭼﺎﻟﺶ دﻳﮕﺮ در ﻣﻮرد اﺳﻜﺮﻳﭙﺖ ،ﻣﺤﻠﻲ اﺳﺖ ﻛﻪ آن را ﻗﺮار ﻣﻲدھﯿﺪ .در ﻣﻮرد ﺑﺮﺧﻲ اﺳﻜﺮﻳﭙﺖھﺎ ،ﻣﺎﻧﻨﺪ
دﺳﺘﻮراﻟﻌﻤﻞھﺎي ﺑﺎز و ﺑﺴﺘﻪ ﻛﺮدن ﻳﻚ در ،اﻧﺘﺨﺎب ﺑﺴﯿﺎر ﺳﺎده اﺳﺖ .اﻳﻦ اﺳﻜﺮﻳﭙﺖ در ھﺮ ﺟﺎﻳﻲ از ﺑﺎزي ﻛﻪ دري وﺟﻮد داﺷﺘﻪ
ﺑﺎﺷﺪ ،ﻻزم اﺳﺖ .ﺑﻪ ھﻤﯿﻦ ﺗﺮﺗﯿﺐ ،اﺳﻜﺮﻳﭙﺘﻲ ﻛﻪ ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﺗﺎ ﻲ ﺣﺎ ﺴﻤﺗ از آب ﺑﯿﺮون آﻣﺪه و ﺑﻪ ﺑﺎزﻳﻜﻦ ﺣﻤﻠﻪ ﻛﻨﺪ،
ﻣﺸﺨﺼﺎ ً در ﺟﺎﻳﻲ ﻗﺮار ﻣﻲﮔﯿﺮد ﻛﻪ ﺗﻤﺴﺎح ﻗﺮار دارد .اﺳﻜﺮﻳﭙﺖھﺎي دﻳﮕﺮ ،ﺷﺎﻳﺪ اﺻﻼ ً ﺑﻪ ﭼﯿﺰ ﺧﺎﺻﻲ ﻣﺮﺑﻮط ﻧﺒﺎﺷﻨﺪ ،ﻣﺎﻧﻨﺪ
اﺳﻜﺮﻳﭙﺘﻲ ﻛﻪ روز را ﺷﺐ ﻣﻲﻛﻨﺪ .ﺷﺎﻳﺪ اﺳﻜﺮﻳﭙﺘﻲ وﺿﻌﯿﺖ اﺷﯿﺎء ﻣﺨﺘﻠﻔﻲ را در ﺑﺎزي ﻋﻮض ﻛﻨﺪ ،وﻟﻲ ﺑﺴﺘﮕﻲ ﺑﻪ زﻣﺎن
داﺷﺘﻪ ﺑﺎﺷﺪ ،ﻧﻪ ﺗﻌﺎﻣﻞ ﺑﺎ ﻛﺎرﺑﺮ .در ﭼﻨﯿﻦ ﻣﻮاردي ،ﻣﻲﺗﻮاﻧﯿﺪ ﻳﻚ GameObjectﺧﺎﻟﻲ ﺑﺴﺎزﻳﺪ ﻛﻪ درﺑﺮ ﮔﯿﺮﻧﺪه اﺳﻜﺮﻳﭙﺖ ﻣﻮردﻧﻈﺮ
ﺪﺷﺎ ﺎﻤﺷ.
در ﻳﻮﻧﯿﺘﻲ ،ﻣﻲﺗﻮاﻧﯿﻢ اﺷﯿﺎء را ﺑﺎ ھﺮ ﺗﻌﺪاد اﺳﻜﺮﻳﭙﺘﻲ ﻛﻪ ﺑﺨﻮاھﯿﻢ ،دﺳﺘﻜﺎري ﻛﻨﯿﻢ .ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﻣﻲﺗﻮاﻧﺪ در ﻛﻨﺎر
GameObjectي ﻛﻪ دﺳﺘﻜﺎر ﻣﻲﺪ ﻧﺎ ﺑ ﺪﻨﻛ ﻳﺎ ﻣﺜﻼ ً ﻣﺎﻧﻨﺪ ﻛﻠﯿﺪ ﺑﺮق ،ﻣﻤﻜﻦ اﺳﺖ ﻋﻤﻠﻲ را روي ﺷﻲء ﻣﺘﻔﺎوﺗﻲ ﻣﺎﻧﻨﺪ ﻻﻣﭗ
اﻧﺠﺎم دھﺪ .اﮔﺮ ﻳﻚ ﺷﻲء داراي ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﺑﺎﺷﺪ ﻛﻪ ﺷﺎﻣﻞ ﺗﻤﺎم اطﻼﻋﺎت و دﺳﺘﻮراﻟﻌﻤﻞھﺎي ﻣﻮرد ﻧﯿﺎز آن ﺷﻲء ﺑﺎﺷﺪ ،اﻳﻦ
اﺳﻜﺮﻳﭙﺖ ﺑﺴﯿﺎر ﺧﺎص ﺧﻮاھﺪ ﺑﻮد و ﻗﺎﺑﻠﯿﺖ اﺳﺘﻔﺎده ﻣﺠﺪد ﺧﻮد را از دﺳﺖ ﺧﻮاھﺪ داد .درﺳﺖ ﻣﺎﻧﻨﺪ ﻟﺒﺎس ﻳﻚ دﺧﺘﺮ ﺟﻮان.
دﺧﺘﺮان ﻟﺒﺎس ،ﻛﻔﺶ ،ﻛﻼه ،ﺟﻮراب و ...را دﺳﺘﻪ ﺑﻨﺪي ﻣﻲﻛﻨﻨﺪ و ﺑﻪ اﺻﻄﻼح ﺑﺎھﻢ ﺳﺖ ﻣﻲﻛﻨﻨﺪ .ﻣﺜﻼ ً ﺻﻮرﺗﻲھﺎ ﺑﺎھﻢ،
ﺳﺒﺰھﺎ ﺑﺎھﻢ و ....وﻟﻲ ﺑﺎ اﻳﻦ ﻛﺎر دﻳﮕﺮ اﻧﻌﻄﺎف ﻗﺒﻠﻲ ﺑﺮاي ﺗﺮﻛﯿﺐ اﻳﻦ رﻧﮓھﺎ و ﻟﺒﺎسھﺎ وﺟﻮد ﻧﺨﻮاھﺪ داﺷﺖ .اﺳﻜﺮﻳﭙﺖ ﺧﻮب،
اﺳﻜﺮﻳﭙﺘﻲ اﺳﺖ ﻛﻪ ﺑﺘﻮان ﺑﺎرھﺎ و ﺑﺎرھﺎ از آن اﺳﺘﻔﺎده ﻛﺮد .ﻗﺒﻞ از اﻳﻨﻜﻪ از دﺳﺖ ﺗﺌﻮريھﺎي اﺳﻜﺮﻳﭙﺖﻧﻮﻳﺴﻲ ﺳﺮﮔﯿﺠﻪ
ﺑﮕﯿﺮﻳﺪ ،ﺻﺤﺒﺖ را ﻛﻮﺗﺎه ﻛﺮده و ﺷﺮوع ﺑﻪ ﺳﺎﺧﺖ ﭼﻨﺪ اﺳﻜﺮﻳﭙﺖ ﺳﺎده ﻣﻲﻛﻨﯿﻢ.
اﺟﺰاي ﻳﻚ اﺳﻜﺮﻳﭙﺖ
اﺳﻜﺮﻳﭙﺖ از ﭼﮫﺎر ﺟﺰء اﺻﻠﻲ ﺗﺸﻜﯿﻞ ﺷﺪه اﺳﺖ :ﻣﺘﻐﯿﺮھﺎ ،ﺗﻮاﺑﻊ ،ﻣﻌﺎدﻻت و ﺗﻮﺿﯿﺤﺎت .ﻣﺘﻐﯿﺮھﺎ درﺑﺮ ﮔﯿﺮﻧﺪه ﻣﻘﺎدﻳﺮي
ﻣﺎﻧﻨﺪ اﻋﺪاد ﻳﺎ ﻣﺘﻮن ﻲﻣﺑﺎﺷﻨﺪ .ﺗﻮاﺑﻊ ﻛﺎري اﻧﺠﺎم ﻣﻲدھﻨﺪ ﻛﻪ ﻣﻌﻤﻮﻻ ً در ارﺗﺒﺎط ﺑﺎ ﻣﺘﻐﯿﺮھﺎ و ﻣﻌﺎدﻻت اﺳﺖ .ﺗﻮﺿﯿﺤﺎت ﻧﯿﺰ در
زﻣﺎن اﺟﺮاي ﻛﺪ ﻧﺎدﻳﺪه ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮﻧﺪ و ﺑﻪ ﺷﻤﺎ اﻣﻜﺎن اﻳﺠﺎد ﻳﺎدداﺷﺖ در ﻣﻮرد ﻧﺤﻮهي ﻛﺎر ﻛﺪ ﻧﻮﺷﺘﻪ ﺷﺪه را ﻣﻲدھﻨﺪ .ﺎﺑ
اﺳﺘﻔﺎده از ﺗﻮﺿﯿﺤﺎت ﺣﺘﻲ ﻣﻲﺗﻮان ﺑﺨﺸﻲ از ﻛﺪ را ﻣﻮﻗﺘﺎ ً از ﻛﺎر اﻧﺪاﺧﺖ.
ﺗﻮاﺑﻊ
ﺗﻮاﺑﻊ ﻳﻮﻧﯿﺘﻲ را ﻣﻲﺗﻮان ﺑﻪ ﺳﻪ ﻧﻮع ﺗﻘﺴﯿﻢ ﻛﺮد :ﻣﺮﺑﻮط ﺑﻪ ﺑﺎزي )ﺳﯿﺴﺘﻢ ،ورودي ،ﺷﺒﻜﻪ( ،ﻣﺨﺼﻮص اﺷﯿﺎء و ﺗﻌﺮﻳﻒ
ﺷﺪه ﺗﻮﺳﻂ ﻛﺎرﺑﺮ.
اﮔﺮ ﺑﺮاي ﻛﺎر ﻋﻤﻠﻲ اﻳﻦ آﻣﻮزش ﻳﻮﻧﯿﺘﻲ ﺧﻮد را ﺑﺎز ﻣﻲﻛﻨﯿﺪ ،ﻳﻚ ﻓﺎﻳﻞ ﺟﺪﻳﺪ ﺑﺎز ﻛﻨﯿﺪ ،ﻳﻚ ﻣﻜﻌﺐ ﺗﺮﺳﯿﻢ ﻛﻨﯿﺪ .ﻳﻚ ﻛﺮه در
وﺳﻂ آن اﻳﺠﺎد ﻛﻨﯿﺪ و ﺑﻪ آﻧﮫﺎ ﺑﺎﻓﺖ ﺑﺪھﯿﺪ .ﺳﭙﺲ ﻳﻚ ﻧﻮر ﻧﯿﺰ ﺑﺮاي اﺷﯿﺎء ﺗﻌﺮﻳﻒ ﻛﻨﯿﺪ و ﻓﺎﻳﻞ را ﺑﺎ ﻧﺎم TestScene1ذﺧﯿﺮه ﻛﻨﯿﺪ.
ﺳﭙﺲ ﻣﺮاﺣﻞ زﻳﺮ را دﻧﺒﺎل ﻛﻨﯿﺪ:
ﻗﺎﻧﻮن :در اﻳﻦ آﻣﻮزش ،ھﺮﺑﺎر ﻛﻪ از ﺷﻤﺎ ﺧﻮاﺳﺘﻪ ﻣﻲﺷﻮد ﺗﺎ ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ اﻳﺠﺎد ﻛﻨﯿﺪ ،ﻓﺮض ﻛﻨﯿﺪ ﻛﻪ اﻳﻦ اﺳﻜﺮﻳﭙﺖ ﻳﻚ
JavaScriptاﺳﺖ.
ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ ﺑﻨﺎم NewBehaviorScriptﺑﻪ ﻓﻮﻟﺪر ﺷﻤﺎ اﺿﺎﻓﻪ ﻣﻲﺷﻮد .ﻣﻲﺗﻮاﻧﯿﺪ ﻣﺤﺘﻮﻳﺎت آن را در Inspector
ﻣﺸﺎھﺪه ﻛﻨﯿﺪ ،وﻟﻲ از آﻧﺠﺎ ﻗﺎﺑﻞ وﻳﺮاﻳﺶ ﻧﺨﻮاھﺪ ﺑﻮد.
ﻧﻜﺘﻪ :ھﻤﯿﺸﻪ اﺳﻜﺮﻳﭙﺖ ﺟﺪﻳﺪ ﺧﻮد را ﻗﺒﻞ از وﻳﺮاﻳﺶ آن ،ﺗﻐﯿﯿﺮ ﻧﺎم دھﯿﺪ.
ﻧﻜﺘﻪ :اﮔﺮ از ﻳﻮﻧﯿﺘﻲ روي ﻣﻚ اﺳﺘﻔﺎده ﻣﻲﻛﻨﯿﺪ ،وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ Unitronﻧﺎم دارد .رﻧﮓھﺎ و ﻗﻠﻢھﺎ ﺑﺎ ﺷﻜﻞھﺎي ﻣﺎ ﻛﻤﻲ
ﻣﺘﻔﺎوت ﺧﻮاھﻨﺪ ﺑﻮد.
{ )( 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ﻛﻠﯿﻚ ﻛﻨﯿﺪ ﺗﺎ ﻧﺘﯿﺠﻪ ﻛﺎر را ﻣﺸﺎھﺪه
ﻛﻨﯿﺪ .وﻳﺮاﻳﺸﮕﺮ ﺗﯿﺮه ﺷﺪه و ﻣﻜﻌﺐ در ﭘﻨﺠﺮهھﺎي ﺻﺤﻨﻪ و ﺑﺎزي
ﺷﺮوع ﺑﻪ ﭼﺮﺧﺶ ﻣﻲﻛﻨﺪ.
;)transform.Rotate(0,1,0
ﺗﻐﯿﯿﺮات را ذﺧﯿﺮه ﻛﻨﯿﺪ و ﻧﺘﯿﺠﻪي ﻛﺎر را اﻣﺘﺤﺎن ﻛﻨﯿﺪ .در اﻳﻦ ﺣﺎﻟﺖ ﻣﻜﻌﺐ آرامﺗﺮ ﻣﻲﭼﺮﺧﺪ. -٨
ﭼﻮن ﭼﺮﺧﺶ طﻮري ﺗﻨﻈﯿﻢ ﺷﺪه اﺳﺖ ﻛﻪ در ھﺮ ﻓﺮﻳﻢ اﺗﻔﺎق ﺑﯿﻔﺘﺪ ،ھﺮ ﻛﺴﻲ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﺮخ ﻓﺮﻳﻢ روي ﻛﺎﻣﭙﯿﻮﺗﺮ ﺧﻮد
ﺳﺮﻋﺖ ﻣﺘﻔﺎوﺗﻲ را ﺗﺠﺮﺑﻪ ﺧﻮاھﺪ ﻛﺮد.
ﻣﻔﮫﻮم ﻣﮫﻢ ﺑﻌﺪي در اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ﻳﻮﻧﯿﺘﻲ Time.deltaTimeاﺳﺖ Time.deltaTime .ﺑﻪ ﺷﻤﺎ اﻣﻜﺎن ﻣﺘﺤﺮكﺳﺎزي
اﺷﯿﺎء را ﺑﺮ اﺳﺎس ﺛﺎﻧﯿﻪ و ﻧﻪ ﺑﺮ اﺳﺎس ﻓﺮﻳﻢ ﻣﻲدھﺪ و ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ اﻧﯿﻤﯿﺸﻦ ﺷﻤﺎ در ﺗﻤﺎم ﻛﺎﻣﭙﯿﻮﺗﺮھﺎ ﻛﻪ ﻧﺮخ ﻓﺮﻳﻢ ﻣﺘﻔﺎوﺗﻲ
دارﻧﺪ ،ﺑﻄﻮر ﻳﻜﺴﺎن ﭘﺨﺶ ﺧﻮاھﺪ ﺷﺪ Time.deltaTime .ﻣﺘﻐﯿﺮي اﺳﺖ ﻛﻪ ﻣﯿﺰان زﻣﺎﻧﻲ را ﻛﻪ از آﺧﺮﻳﻦ ﻓﺮاﺧﻮاﻧﻲ ﺗﺎﺑﻊ Update
ﮔﺬﺷﺘﻪ اﺳﺖ ،ﺑﺮ ﻣﻲﮔﺮداﻧﺪ.
ﻧﻜﺘﻪ :ﺑﻪ ﻳﺎد داﺷﺘﻪ ﺑﺎﺷﯿﺪ ﻛﻪ اﺳﻜﺮﻳﭙﺖ را ﺑﻌﺪ از ھﺮ ﺗﻐﯿﯿﺮ ذﺧﯿﺮه ﻛﻨﯿﺪ ﺗﺎ ﻗﺎدر ﺑﻪ ﻣﺸﺎھﺪهي ﻧﺘﯿﺠﻪي آن ﺑﺎﺷﯿﺪ.
اﻛﻨﻮن ﻗﺼﺪ دارﻳﻢ ﺗﺎ ﻳﻚ Translateﻳﺎ ﺣﺮﻛﺖ اﺿﺎﻓﻪ ﻛﻨﯿﻢ و ﺑﺒﯿﻨﯿﻢ اﮔﺮ رﺳﻢاﻟﺨﻂ دﺳﺘﻮر ﺷﻤﺎ درﺳﺖ ﻧﺒﺎﺷﺪ ،ﭼﻪ اﺗﻔﺎﻗﻲ
ﻣﻲاﻓﺘﺪ .ﺑﻪ tﻛﻮﭼﻚ در translateدﻗﺖ ﻛﻨﯿﺪ.
درون ﺗﺎﺑﻊ Updateدرﺳﺖ زﻳﺮ ﺧﻂ ﭼﺮﺧﺶ ،دﺳﺘﻮراﻟﻌﻤﻞ زﻳﺮ را وارد ﻛﻨﯿﺪ: -١
;)transform.translate(2 * Time.deltaTimme,0,0
ﺑﻪ ﻣﺤﺾ ذﺧﯿﺮه ﻛﺮدن ،ﭘﯿﻐﺎم ﺧﻄﺎﻳﻲ در ﺧﻂ وﺿﻌﯿﺖ ﭘﻨﺠﺮهي ﺑﺎزي ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد .ﻣﻲﺗﻮاﻧﯿﺪ ﺑﺎ ﻛﻠﯿﻚ روي آن
ﻛﻨﺴﻮل را ﺑﺎز ﻛﻨﯿﺪ.
ﻗﺒﻞ از ﺗﻨﻈﯿﻢ ، GOدو ﻋﻤﻞ ﻣﻮرد ﻧﻈﺮ ﺧﻮد را در اﺳﻜﺮﻳﭙﺖ ھﺎي ﺟﺪاﮔﺎﻧﻪاي ﺑﻨﻮﻳﺴﯿﺪ.
ﭼﻮن SimpleRotateﺗﻐﯿﯿﺮ ﻧﺎم داده ﺷﺪه ،اﻛﻨﻮن ﺑﺎﻳﺪ ﻓﺎﻳﻞ اﺻﻠﻲ را در وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ دوﺑﺎره ﺑﺎز ﻛﻨﯿﺪ .اﻛﻨﻮن ﻗﺎدر ﺑﻪ
ﻣﺸﺎھﺪهي ھﺮدو اﺳﻜﺮﻳﭙﺖ در ﻧﻤﺎي ﭘﺮوژه ﺧﻮاھﯿﺪ ﺑﻮد و ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ﻣﻲﺗﻮاﻧﯿﺪ آنھﺎ را از آﻧﺠﺎ ﺑﺎز ﻛﻨﯿﺪ.
در اﺳﻜﺮﻳﭙﺖ ،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ﻛﺸﯿﺪه و ﺑﯿﺎﻧﺪازﻳﺪ.
ﻣﺘﻐﯿﺮھﺎ
ﻛﺎرھﺎﻳﻲ ﻛﻪ ﺗﺎﻛﻨﻮن روي اﺳﻜﺮﻳﭙﺖھﺎ اﻧﺠﺎم دادﻳﻢ و ﺗﻐﯿﯿﺮات اﻳﺠﺎد ﺷﺪه در
ﺻﺤﻨﻪ را ذﺧﯿﺮه ﻛﻨﯿﺪ .ﺑﺮاي اﻳﻦ ﻛﺎر ﺑﺮاﺣﺘﻲ از ﺗﺮﻛﯿﺐ ﻛﻠﯿﺪھﺎي Ctrl+Sﻳﺎ ﮔﺰﻳﻨﻪي Saveاز
ﻣﻨﻮي Fileاﺳﺘﻔﺎده ﻛﻨﯿﺪ.
ﺷﺎﻳﺪ در ﻣﻮرد ﻛﺎر ﺑﺎ اﻧﯿﻤﯿﺸﻦ ﺑﺼﻮرت ﻛﺪﻧﻮﻳﺴﻲ ﻣﺤﺾ ،اﺣﺴﺎس ﺧﻮﺑﻲ ﻧﺪاﺷﺘﻪ ﺑﺎﺷﯿﺪ .وﻟﻲ ﻧﮕﺮان ﻧﺒﺎﺷﯿﺪ! ﻗﺮار
اﺳﺖ از روشھﺎي ﻣﺘﻌﺪدي ﺑﺮاي ﻣﺘﺤﺮكﺳﺎزي اﺷﯿﺎء در ﻳﻚ ﺑﺎزي واﻗﻌﻲ اﺳﺘﻔﺎده ﻛﻨﯿﻢ .ﻛﺪﻧﻮﻳﺴﻲ اوﻟﯿﻪ اي ﻛﻪ اﻧﺠﺎم دادﻳﻢ ﺗﺎ
ﺣﺮﻛﺖ و ﭼﺮﺧﺶ را اﻳﺠﺎد ﻛﻨﯿﻢ ،اوﻟﯿﻦ ﺗﻼش ﺷﻤﺎ ﺑﺮاي ﻛﺪﻧﻮﻳﺴﻲ ﺑﻮده اﺳﺖ و ﻧﻘﺶ ﻣﮫﻤﻲ در آﺷﻨﺎﻳﻲ ﺑﺎ ﻛﺪﻧﻮﻳﺴﻲ داﺷﺖ.
اﻛﻨﻮن در اداﻣﻪ ﺑﻪ ﻣﺘﻐﯿﺮھﺎ ﻣﻲﭘﺮدازﻳﻢ .ﻣﺘﻐﯿﺮھﺎ روﺷﻲ ﺑﺮاي ردﮔﯿﺮي وﺿﻌﯿﺖھﺎ ،ارزشھﺎ ،ﻣﻘﺎدﻳﺮ ،ﻣﺘﻮن و ...
ﻣﻲﺑﺎﺷﻨﺪ .ﻣﺘﻐﯿﺮ ﻣﻜﺎﻧﯿﺰﻣﻲ اﺳﺖ ﻛﻪ ﺗﻮﺳﻂ آن اطﻼﻋﺎت را ذﺧﯿﺮه ﻣﻲﻛﻨﯿﻢ .در ﻳﻮﻧﯿﺘﻲ ،ﻣﺘﻐﯿﺮھﺎ را ﻣﻲﺗﻮان در Inspector
ﻣﺸﺎھﺪه ﻛﺮد ،ﺑﻨﺎﺑﺮاﻳﻦ دﻳﮕﺮ ﻧﯿﺎزي ﺑﻪ ﺑﺎز ﻛﺮدن اﺳﻜﺮﻳﭙﺖ ﺑﺮاي اﻳﺠﺎد ﺗﻐﯿﯿﺮ ﻧﯿﺴﺖ .ھﻤﭽﻨﯿﻦ ﺑﻪ اﻳﻦ روش ﻣﻲﺗﻮان اﺳﻜﺮﻳﭙﺖ را
ﺑﺼﻮرت ﻛﻠﻲ ﻧﻮﺷﺖ و اﻳﻦ اﺳﻜﺮﻳﭙﺖ را ﺑﺮاي اﺷﯿﺎء ﻣﺨﺘﻠﻒ و ﺑﺎ ﺗﻨﻈﯿﻤﺎت ﻣﺘﻔﺎوت ﺑﺮاي ھﺮﻳﻚ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار داد.
در ﺣﺎل ﺣﺎﺿﺮ اﮔﺮ ﺑﺨﻮاھﯿﺪ ﺳﺮﻋﺖ ﭼﺮﺧﺶ ﻣﻜﻌﺐ را ﺗﻐﯿﯿﺮ دھﯿﺪ ،ﺑﺎﻳﺪ ﻋﺪد درون اﺳﻜﺮﻳﭙﺖ را ﺗﻐﯿﯿﺮ دھﯿﺪ .ﺑﯿﺎﻳﯿﺪ ﻳﻚ
ﻣﺘﻐﯿﺮ را ﺟﺎﻳﮕﺰﻳﻦ اﻳﻦ ﻋﺪد ﻛﻨﯿﻢ.
ﻧﻜﺘﻪ :ﻣﺘﻐﯿﺮھﺎ را ﺑﺎ اﺳﺎﻣﻲ ﻣﻌﻨﻲدار ﻧﺎﻣﮕﺬاري ﻛﻨﯿﺪ ،وﻟﻲ اﻳﻦ اﺳﺎﻣﻲ را ﻛﻮﺗﺎه ﺑﻨﻮﻳﺴﯿﺪ .اﻟﺒﺘﻪ ﻛﻪ ﻣﻲﺗﻮاﻧﯿﺪ از ﺗﻮﺿﯿﺤﺎت ﺑﺮاي
ﮔﻮﻳﺎﺗﺮ ﺷﺪن ﻛﺎر اﺳﺘﻔﺎده ﻛﻨﯿﺪ.
ﻗﺎﻧﻮن :اﺳﺎﻣﻲ ﻣﺘﻐﯿﺮھﺎ ﻧﺒﺎﻳﺪ ﺑﺎ ﻳﻚ ﻋﺪد ﻳﺎ ﻛﺎراﻛﺘﺮ ﺧﺎص ﺷﺮوع ﺷﻮﻧﺪ و ﻧﺒﺎﻳﺪ در ﺑﯿﻦ ﺣﺮوف ،ﻓﺎﺻﻠﻪ ﺑﺎﺷﺪ .ھﻤﭽﻨﯿﻦ ﭼﻨﺪ ﻣﺘﻐﯿﺮ
رزرو ﺷﺪه وﺟﻮد دارد ﻛﻪ ﻧﺒﺎﻳﺪ از ﻧﺎم آنھﺎ اﺳﺘﻔﺎده ﻛﻨﯿﺪ .اﻳﻦ ﻳﻚ اﻟﺰام ﻧﯿﺴﺖ ،وﻟﻲ ﺑﮫﺘﺮ اﺳﺖ در ﻧﻮﺷﺘﻦ ﻳﻚ اﺳﻜﺮﻳﭙﺖ ﺧﻮب،
ﻧﺎم ﻣﺘﻐﯿﺮ را ﺑﺎ ﺣﺮف ﻛﻮﭼﻚ آﻏﺎز ﻛﻨﯿﺪ .وﻗﺘﻲ ﻛﻠﻤﺎت ﻧﺎم ﻣﺘﻐﯿﺮ ﺑﺎ ﺣﺮوف ﺑﺰرگ ﺑﺎﺷﻨﺪ ،در Inspectorﻓﺎﺻﻠﻪ اﻳﺠﺎد ﻣﻲﺷﻮد.
{ )( function Update
;)transform.Rotate(0,myDegrees * Time.deltaTime,0
}
روي واﻟﺪ Cubeﻛﻠﯿﻚ ﻛﻨﯿﺪ ﺗﺎ ﮔﺮوه آن ﺑﺎز ﺷﺪه و ﺑﻪ ﻓﺮزﻧﺪ آن ﻛﻪ Cubeاﺳﺖ دﺳﺘﺮﺳﻲ ﭘﯿﺪا
ﻛﻨﯿﺪ.
Cubeرا اﻧﺘﺨﺎب ﻛﺮده و در Inspectorﺑﺪﻧﺒﺎل ﻣﺘﻐﯿﺮ ﺟﺪﻳﺪي ﺑﮕﺮدﻳﺪ ﻛﻪ اﻛﻨﻮن ﻧﻤﺎﻳﺶ داده
ﻣﻲﺷﻮد.
دﻗﺖ ﻛﻨﯿﺪ ﻛﻨﯿﺪ از ﺟﺎﻳﻲ ﻛﻪ ﺣﺮف ﺑﺰرگ در ﻧﺎم ﻣﺘﻐﯿﺮ وارد ﺷﺪه ،ﻳﻚ ﻓﺎﺻﻠﻪ درج ﺷﺪه اﺳﺖ ﺗﺎ
ﻧﺎم ﻣﺘﻐﯿﺮ راﺣﺖ ﺗﺮ ﺧﻮاﻧﺪه ﺷﻮد .ﻛﺎراﻛﺘﺮ اول ﻧﯿﺰ ﺑﺰرگ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد.
روي Playﻛﻠﯿﻚ ﻛﻨﯿﺪ .ھﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻲﺑﯿﻨﯿﺪ ،ھﯿﭻ ﭼﯿﺰي ﺗﻐﯿﯿﺮ ﻧﻜﺮده اﺳﺖ.
در اﺳﻜﺮﻳﭙﺖ ،SimpleMoveﻋﺪد ٢را ﺑﻪ ٠/۵ﺗﺒﺪﻳﻞ ﻛﻨﯿﺪ ﺗﺎ اﻧﯿﻤﯿﺸﻦ ﺣﺮﻛﺖ آھﺴﺘﻪﺗﺮ ﺷﻮد و
ﻣﻜﻌﺐ در ﺻﺤﻨﻪ واﺿﺢﺗﺮ دﻳﺪه ﺷﻮد و اﻧﯿﻤﯿﺸﻦ طﻮﻻﻧﻲﺗﺮ ﺷﻮد.
اﻛﻨﻮن دوﺑﺎره روي Playﻛﻠﯿﻚ ﻛﻨﯿﺪ ﺗﺎ ﺑﺎزي ﻣﺘﻮﻗﻒ ﺷﻮد .دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ ﻣﻘﺪار ﻣﺘﻐﯿﺮ دوﺑﺎره ۵٠ﻣﻲﺷﻮد.
ﻗﺎﻧﻮن :در ﻳﻮﻧﯿﺘﻲ ،ھﺮ ﺗﻐﯿﯿﺮي ﻛﻪ در Inspectorدر زﻣﺎن اﺟﺮاي ﺑﺎزي داده ﺷﻮد ،از ﺑﯿﻦ ﺧﻮاھﺪ رﻓﺖ .ﺑﺪﻳﻦﺗﺮﺗﯿﺐ ﻣﻲﺗﻮاﻧﯿﺪ ﺑﺎ
آزﻣﻮن و ﺧﻄﺎ ،ﻧﺘﯿﺠﻪ را ﻣﺴﺘﻘﯿﻤﺎ ً در ﺑﺎزي ﺑﺒﯿﻨﯿﺪ و ﻧﯿﺎز ﺑﻪ ﺗﻮﻗﻒ و ﺗﻐﯿﯿﺮ در ﻣﻘﺎدﻳﺮ ﻧﯿﺴﺖ .اﻳﻦ ﻳﻌﻨﻲ ﺑﺮاي داﺋﻤﻲ ﻛﺮدن ﻣﻘﺪار ﻳﻚ
ﻣﺘﻐﯿﺮ ،ﺑﺎﻳﺪ وارد ﺣﺎﻟﺖ وﻳﺮاﻳﺶ ﺷﻮﻳﺪ.
در وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ ﺑﺮاي ،SimpleRotateﻣﻘﺪارﻣﺘﻐﯿﺮ را ﺑﻪ ١٠٠ﺗﻐﯿﯿﺮ دارده و اﺳﻜﺮﻳﭙﺖ را ذﺧﯿﺮه ﻛﻨﯿﺪ .ﺧﻮاھﯿﺪ دﻳﺪ ﻛﻪ ﻣﻘﺪار
اﺻﻠﻲ ۵٠در Inspectorﻣﺎﻧﺪه اﺳﺖ.
روي Playﻛﻠﯿﻚ ﻛﻨﯿﺪ .ﭼﺮﺧﺶ از ﻣﻘﺪار ﻛﻤﺘﺮ ﻣﻮﺟﻮد در Inspectorاﺳﺘﻔﺎده ﻣﻲﻛﻨﺪ .ﻣﻘﺪار ﻣﻮﺟﻮد در Inspectorھﻤﯿﺸﻪ ﻣﻘﺪم
ﺑﺮ ﻣﻘﺪاري اﺳﺖ ﻛﻪ در ﺧﻮد اﺳﻜﺮﻳﭙﺖ وﺟﻮد دارد.
ﻗﺎﻧﻮن :وﻗﺘﻲ ﻣﺘﻐﯿﺮي در Inspectorﻧﻤﺎﻳﺶ داده ﺷﺪ ،ھﻤﯿﺸﻪ ﻣﻘﺪم ﺑﺮ ﻣﻘﺪار اﺻﻠﻲ ﻣﻮﺟﻮد در اﺳﻜﺮﻳﭙﺘﻲ ﺧﻮاھﺪ ﺑﻮد ﻛﻪ ﻣﺘﻐﯿﺮ
در آن ﺗﻌﺮﻳﻒ و ﻣﻘﺪاردھﻲ اوﻟﯿﻪ ﺷﺪه ﺑﺎﺷﺪ.
روي Playﻛﻠﯿﻚ ﻛﻨﯿﺪ .ﭼﺮﺧﺶ ﺑﻪ ھﻤﺎن ﺳﺮﻋﺘﻲ ﻛﻪ ﻣﻮرد ﻧﻈﺮ ﺑﻮد ،اﻧﺠﺎم ﺧﻮاھﺪ ﺷﺪ.
ﺗﺬﻛﺮ :اﮔﺮ ﭼﺮﺧﺶ ﻳﻚ ﺷﻲء را ﺑﺴﯿﺎر ﺳﺮﻳﻊ درﻧﻈﺮ ﺑﮕﯿﺮﻳﺪ ،ﺷﺎﻳﺪ ﺷﻲء درﺳﺖ دﻳﺪه ﻧﺸﻮد ﻳﺎ در ﻣﺎﺷﯿﻦھﺎي ﺿﻌﯿﻒ ﻛﻨﺪ ﺷﺪه
و ﺑﺮﻋﻜﺲ ﺣﺮﻛﺖ ﻛﻨﺪ.
ﭼﻨﺪ ﻧﻜﺘﻪي دﻳﮕﺮ ﻧﯿﺰ وﺟﻮد دارد ﻛﻪ ﺑﺎﻳﺪ در ﻣﻮرد ﻣﺘﻐﯿﺮھﺎ ﺑﺪاﻧﯿﺪ .ﺑﻄﻮرﻳﻜﻪ ذﻛﺮ ﺷﺪ ،ﭼﻨﺪ ﻧﻮع ﻣﺨﺘﻠﻒ وﺟﻮد دارد .در
اﺳﻜﺮﻳﭙﺖ ﭼﺮﺧﺶ ،ﻣﺎ ﻣﻘﺪار myDegreeرا ﺑﺮاﺑﺮ ﺑﺎ ۵٠ﻗﺮار دادﻳﻢ .ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ،ﻣﺘﻐﯿﺮ ﻣﺎ ﺑﻄﻮر اﺗﻮﻣﺎﺗﯿﻚ ﺑﺼﻮرت ﻋﺪدي ﻳﺎ از ﻧﻮع
intدر ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد .اﮔﺮ از 50.0اﺳﺘﻔﺎده ﻣﻲﻛﺮدﻳﺪ ،ﻣﺘﻐﯿﺮ ﺑﺼﻮرت ﻣﻤﯿﺰ ﺷﻨﺎور ﻳﺎ floatدر ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﺪ .ﺑﺴﯿﺎري از
ﻣﺘﻐﯿﺮھﺎ ﻓﻘﻂ ﺑﺮاي ﻧﻮع ﻣﺨﺼﻮص ﺧﻮد ﻣﺸﺨﺺ ﻣﻲﺷﻮﻧﺪ و ﻣﻘﺪار در آنھﺎ ﺑﻌﺪا ً ذﺧﯿﺮه ﻣﻲﺷﻮد .ﭼﻨﺪ ﻣﺘﻐﯿﺮ دﻳﮕﺮ را ﻧﯿﺰ ﺑﻪ
اﺳﻜﺮﻳﭙﺖ SimpleMoveاﺿﺎﻓﻪ ﻣﻲﻛﻨﯿﻢ.
ﺗﺬﻛﺮ :اﮔﺮ ﻋﻼﻣﺎت ﻛﻮﺗﯿﺸﻦ را از درون ﻳﻚ ﭘﺮدازﺷﮕﺮ ﻣﺘﻦ )ﻣﺎﻧﻨﺪ ورد( ﻛﭙﻲ و ﭘﯿﺴﺖ ﻛﻨﯿﺪ ،ﻛﺎراﻛﺘﺮھﺎ آﻧﻄﻮر ﻛﻪ اﻧﺘﻈﺎر دارﻳﺪ،
ﻧﻤﺎﻳﺶ داده ﻧﻤﻲﺷﻮﻧﺪ .اﮔﺮ ﺧﻄﺎﻳﻲ اﻳﺠﺎد ﺷﺪ ،ﺳﻌﻲ ﻛﻨﯿﺪ آنھﺎ را در وﻳﺮاﻳﺸﮕﺮ دوﺑﺎره ﺗﺎﻳﭗ ﻛﻨﯿﺪ.
-۵ﺧﻂ ﺑﻌﺪي ،ﻣﺘﻐﯿﺮي از ﻧﻮع ﺑﻮﻟﯿﻦ ﻳﺎ ﻣﻨﻄﻘﻲ )درﺳﺖ و ﻧﺎدرﺳﺖ( اﻳﺠﺎد ﻛﺮده و ﻣﻘﺪار آن را درﺳﺖ ﻗﺮار ﻣﻲ دھﺪ .در
Inspectorﻣﺘﻐﯿﺮ ﺑﻮﻟﯿﻦ ﺑﺼﻮرت ﻳﻚ ﭼﻚﺑﺎﻛﺲ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد.
ﻧﻜﺘﻪ :ﺗﺎ زﻣﺎﻧﻲ ﻛﻪ ارزش ﻳﻚ ﻣﺘﻐﯿﺮ ﻳﻚ ﻣﻘﺪار ﻣﺸﺨﺺ ﺑﺎﺷﺪ ،ﻣﻌﺮﻓﻲ ﻧﻮع ﻣﺘﻐﯿﺮ اﺧﺘﯿﺎري اﺳﺖ .اﮔﺮ ﺷﻤﺎ ﻧﻮع ﻣﺘﻐﯿﺮ را
ﺗﻌﯿﯿﻦ ﻛﻨﯿﺪ ،ﻛﺎر ﻣﻮﺗﻮر را در ﺗﺼﻤﯿﻢ ﮔﯿﺮي ﺑﺮاي ﺗﻌﯿﯿﻦ ﻧﻮع ﻣﺘﻐﯿﺮ ﻛﻢ ﻣﻲﻛﻨﯿﺪ .ﺑﺮاي ﺑﺴﺘﺮھﺎي ﻣﻮﺑﺎﻳﻞ ﻣﺎﻧﻨﺪ iOSﺎﻳ اﻧﺪروﻳﺪ،
ﺣﺘﻤﺎ ً ﺑﺎﻳﺪ ﻧﻮع ﻣﺘﻐﯿﺮ را ﺗﻌﯿﯿﻦ ﻛﻨﯿﺪ .ﻣﺎ در اﻳﻦ آﻣﻮزش ھﺮ دو ﺣﺎﻟﺖ را اﻧﺠﺎم ﻣﻲدھﯿﻢ ﺗﺎ ﺑﺎ ھﺮ دو روش آﺷﻨﺎ ﺷﻮﻳﺪ.
دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ ﺗﻤﺎم ﻣﺘﻐﯿﺮھﺎ ﺑﺎ ﻋﺒﺎرت ﻛﻠﯿﺪي varآﻏﺎز ﻣﻲﺷﻮﻧﺪ .در ﻳﻮﻧﯿﺘﻲ var ،ﺑﻌﻨﻮان ﻳﻚ ﻣﺘﻐﯿﺮ ﻋﺎم ﻓﺮض ﻣﻲﺷﻮد.
ﺑﻌﺒﺎرت دﻳﮕﺮ ،ﺑﺮاي Inspectorﻧﻤﺎﻳﺎن اﺳﺖ.
ﺷﺎﻳﺪ ھﻨﻮز دارﻳﺪ اوﻟﯿﻦ ﺗﺠﺮﺑﻪي اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ﺧﻮدﺗﻮﻧﻮ ﻣﺮور ﻣﻲﻛﻨﯿﺪ ،وﻟﻲ ﺑﺮاي ﻣﺪﺗﻲ ذھﻦ ﺧﻮد را آزاد ﻛﻨﯿﺪ ﺗﺎ
ﺑﻪ ﻳﻜﻲ از ﺑﺰرﮔﺘﺮﻳﻦ ﺗﻔﺎوتھﺎي ﺑﯿﻦ ﺑﺎزيھﺎي ) FPSﺷﻠﯿﻚ ﻛﻨﻨﺪه اول ﺷﺨﺺ( و ﺑﺎزيھﺎي ﻣﺎﺟﺮاﻳﻲ ﻛﻠﯿﻜﻲ ﺑﭙﺮدازﻳﻢ .در اﻳﺎم
ﮔﺬﺷﺘﻪ ،ﺗﻌﺎﻣﻞ ﻋﻤﻮﻣﺎ ً ﺑﺮ اﺳﺎس ﺗﺨﻤﯿﻦ ﺑﻮد :ﺷﻤﺎ ﺑﺎ اﺳﻠﺤﻪي ﺧﻮد ﺑﻪ ﻛﻠﯿﺪ آﺳﺎﻧﺴﻮر ﻣﻲزدﻳﺪ و در ﺑﺎز ﻣﻲﺷﺪ .وارد ﻣﺤﺪودهي
دﺷﻤﻦ ﻣﻲﺷﺪﻳﺪ و دﺷﻤﻦ ﺷﺮوع ﺑﻪ ﺷﻠﯿﻚ ﻣﻲﻛﺮد .ﻳﺎ ﺑﺎ آرﻲﭘﺟﻲ ﺧﻮد ﺑﻪ ﭼﻨﺪ ﺟﻌﺒﻪ ﺷﻠﯿﻚ ﻣﻲﻛﺮدﻳﺪ و ﺟﻌﺒﻪھﺎ ﻣﻨﻔﺠﺮ
ﻲﻣﺪﻧﺪﺷ .
در ﺑﺎزيھﺎي ﻣﺎﺟﺮاﻳﻲ ﻛﻼﺳﯿﻚ ،ﻣﻌﻤﻮﻻ ً ﻣﻜﺎن ﻧﻤﺎ ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ﺗﻌﺎﻣﻞ ﻣﻲﺷﻮد و ﺧﺒﺮي از ﺑﺮﺧﻮرد ،ﻓﯿﺰﻳﻚ و ﻧﻮرﭘﺮدازي ﻧﺒﻮد.
ﻪﻧﻮﻤﻧي ﻣﻮﺟﻮد در Helpﻛﺪي را ﻧﺸﺎن ﻣﻲ دھﺪ ﻛﻪ ﻳﻚ ﺻﺤﻨﻪي ﺟﺪﻳﺪ را ﺑﺎرﮔﺬاري ﻣﻲﺪ ﻨﻛ .ﺑﺮﺧﻼف ﺗﺎﺑﻊ ،Updateﺗﺎﺑﻊ
OnMouseDownﺗﻨﮫﺎ زﻣﺎﻧﻲ ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﺷﻮد ﻛﻪ اﺗﻔﺎق رخ دھﺪ.
ﻳﻚ روش ﻣﻌﻤﻮل ﺑﺮاي ﻛﻨﺘﺮل ﻋﻤﻠﻜﺮد ﻣﻮردﻧﻈﺮ اﻳﻦ اﺳﺖ ﻛﻪ از ﺑﺮﻧﺎﻣﻪ ﺑﺨﻮاھﯿﻢ ﺗﺎ ﭘﯿﻐﺎﻣﻲ را در ﻛﻨﺴﻮل ﭼﺎپ ﻛﻨﺪ .در ،Help
ﺑﺪﻧﺒﺎل print to consoleﺑﮕﺮدﻳﺪ .ﺑﺎ ﻧﮕﺎھﻲ ﺳﺮﻳﻊ ﺑﻪ ﻧﺘﺎﻳﺞ ،ﺧﻮاھﯿﺪ دﻳﺪ ﻛﻪ Debug.Logﭘﯿﻐﺎﻣﻲ را در ﻛﻨﺴﻮل ﻗﺮار ﻣﻲدھﺪ .آن
را اﻧﺘﺨﺎب ﻛﻨﯿﺪ و ﺑﻪ رﺳﻢاﻟﺨﻂ آن دﻗﺖ ﻛﻨﯿﺪ .ﺑﺴﯿﺎر ﺳﺎده اﺳﺖ .ھﻤﭽﻨﯿﻦ از MonoBehaviour.printﻧﯿﺰ ﻳﺎدداﺷﺖ ﺑﺮداري ﻛﻨﯿﺪ
ﺗﺎ ﺑﻌﺪھﺎ از آن ﺑﺮاي اﻳﺠﺎد ﻧﺘﯿﺠﻪ اي ﻣﺸﺎﺑﻪ Debug.Logاﺳﺘﻔﺎده ﻛﻨﯿﺪ.
ﺑﺮاي اﻳﻨﻜﻪ اﻧﺘﺨﺎب ﻣﻜﻌﺐ ﺳﺎدهﺗﺮ ﺷﻮد ،اﺳﻜﺮﻳﭙﺖ SimpleMoveرا روي واﻟﺪ ﻣﻜﻌﺐ ﻏﯿﺮﻓﻌﺎل ﻛﻨﯿﺪ و ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ ﻣﻜﻌﺐ از ﻧﻤﺎي
ﺑﺎزي ﺑﯿﺮون ﻧﻤﻲرود.
ﻧﻜﺘﻪ :اﮔﺮ ھﻨﮕﺎم اﻧﺘﺨﺎب ﻣﻜﻌﺐ اﺗﻔﺎﻗﻲ ﻧﯿﻔﺘﺪ ،ﺑﺮرﺳﻲ ﻛﻨﯿﺪ ﻛﻪ آﻳﺎ اﺳﻜﺮﻳﭙﺖ MousePickرا روي ﻣﻜﻌﺐ اﻋﻤﺎل ﻛﺮده ﺑﺎﺷﯿﺪ ،ﻧﻪ
روي واﻟﺪ ﻣﻜﻌﺐ ﭼﻮن واﻟﺪ داراي Colliderﻧﯿﺴﺖ.
ﻣﻜﻌﺐ از ﭘﻨﺠﺮهي ﺑﺎزي ﻣﺤﻮ ﻣﻲﺷﻮد .در ﭘﻨﺠﺮهي ،Sceneھﻨﻮز ھﻢ ﻣﻲﺗﻮاﻧﯿﺪ ﺟﻌﺒﻪي ﺳﺒﺰ رﻧﮓ دورﺗﺎدور ﻣﻜﻌﺐ را ﺑﺒﯿﻨﯿﺪ.
ﺗﻮﺟﻪ ﻛﻨﯿﺪ ﻛﻪ Colliderدﻳﮕﺮ در ﭘﻨﺠﺮهي ﺻﺤﻨﻪ ﻧﻤﺎﻳﺶ داده ﻧﻤﻲﺷﻮد و ﺷﻲء در Hierarchyﺑﻪ رﻧﮓ ﺧﺎﻛﺴﺘﺮي درآﻣﺪه اﺳﺖ.
-٢٠ﺳﻌﻲ ﻛﻨﯿﺪ ﻛﻪ دوﺑﺎره در ﻣﺤﻞ ﻗﺒﻠﻲ ﻣﻜﻌﺐ در ﻧﻤﺎي ﺑﺎزي ﻛﻠﯿﻚ ﻛﻨﯿﺪ.
در ﺑﺎزي ﻣﺎﺟﺮاﻳﻲ ﻛﻠﯿﻜﻲ ﺷﻤﺎ ،ﺑﺮﺧﻲ اﺷﯿﺎء ﺑﺎﻳﺪ ﺑﯿﺶ از ﻳﻚ ﺑﺎر اﻧﺘﺨﺎب ﺷﻮﻧﺪ ﺗﺎ ﺷﻲء ﺑﻪ وﺿﻌﯿﺖ ﺑﻌﺪي ﺧﻮد ﺑﺮود .اﻳﻦ ﺑﺎر
ﺷﻤﺎ ﻣﺘﻐﯿﺮي اﺿﺎﻓﻪ ﻣﻲﻛﻨﯿﺪ ﻛﻪ ﺗﻌﺪاد اﻧﺘﺨﺎبھﺎي ﺷﻲء را ﻣﻲ ﺷﻤﺎرد.
ﺷﺮاﻳﻂ و وﺿﻌﯿﺖ
ﻛﻠﯿﺪ اﻳﺠﺎد ﺗﻌﺎﻣﻞ ﺗﻮاﻧﺎﻳﻲ ﻣﺸﺨﺺ ﻛﺮدن ﺷﺮاﻳﻂ در ﻣﻮﻗﻌﯿﺖھﺎﻳﻲ اﺳﺖ ﭘﯿﺶ ﻣﻲاﻳﺪ .ﺣﺘﻲ در ﺑﺎزيھﺎي ﺗﯿﺮاﻧﺪازي ﺳﻨﺘﻲ ﻧﯿﺰ،
ﻳﻚ ﺷﻲء ﻣﻤﻜﻦ اﺳﺖ ﺗﻌﺪاد ﻣﺸﺨﺼﻲ ﺗﯿﺮ ﺑﺨﻮرد ﺗﺎ از ﺑﯿﻦ ﺑﺮود .ھﺮﺑﺎر ﻛﻪ ﺷﻲء ﺗﯿﺮ ﻣﻲ ﺧﻮرد ،ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺪ ﭼﻚ ﻛﻨﺪ ﻛﻪ آﻳﺎ
ﺷﺮاﻳﻂ ﻣﺸﺨﺼﻲ ﭘﯿﺶ آﻣﺪه اﺳﺖ ﻛﻪ ﺑﺮ اﺳﺎس آن ﺗﺼﻤﯿﻢ ﮔﯿﺮي ﺷﻮد .ھﺮﻳﻚ از اﻳﻦ ﺷﺮاﻳﻂ را ﻣﻲﺗﻮان ﻳﻚ وﺿﻌﯿﺖ ﻧﺎﻣﯿﺪ.
در ﺑﺎزيھﺎي ﻛﻠﯿﻜﻲ ﺳﻨﺘﻲ ،وﺿﻌﯿﺖ اھﻤﯿﺖ ﺧﺎﺻﻲ ﭘﯿﺪا ﻣﻲﻛﻨﺪ .ﻣﻌﻤﻮﻻ ً ،ﺗﻘﺮﻳﺒﺎ ً ھﺮ ﭼﯿﺰي ﻛﻪ ﺑﺎ آن ارﺗﺒﺎط ﺑﺮﻗﺮار ﻣﯿﻜﻨﯿﺪ داراي
وﺿﻌﯿﺘﻲ اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ ھﻤﻮاره از آن آﮔﺎه ﺑﺎﺷﺪ .وﻗﺘﻲ روي در ﻛﻠﯿﻚ ﻣﻲﻛﻨﯿﺪ ،در ﺑﺎﻳﺪ ﺑﺪاﻧﺪ ﻛﻪ آﻳﺎ ﻗﻔﻞ ﺷﺪه اﺳﺖ ﻳﺎ ﻧﻪ و ﻳﺎ
اﺻﻼ ً ﺑﺎز اﺳﺖ ﻳﺎ ﺑﺴﺘﻪ ﺗﺎ ﻧﺴﺒﺖ ﺑﻪ ﻣﺤﺮﻛﻲ ﻛﻪ از طﺮف ﺷﻤﺎ اﻋﻤﺎل ﺷﺪه اﺳﺖ ،ﺑﻪ درﺳﺘﻲ ﭘﺎﺳﺦ ﺑﮕﻮﻳﺪ.
ﻛﺎر را ﺑﺎ ﻣﻜﻌﺐ ﺳﺎدهي ﺷﻤﺎ اداﻣﻪ ﻣﻲدھﯿﻢ و دو ﺳﯿﺴﺘﻢ وﺿﻌﯿﺖ اوﻟﯿﻪ ﺑﺮاي آن ﺗﻨﻈﯿﻢ ﻣﻲﻛﻨﯿﻢ ﺗﺎ ﭼﺮﺧﺶ را روﺷﻦ و
ﺧﺎﻣﻮش ﻛﻨﺪ .ﭼﻮن ﻣﻲﺧﻮاھﯿﺪ ﭼﺮﺧﺶ را ﻛﻨﺘﺮل ﻛﻨﯿﺪ ،ﺑﺎﻳﺪ ﻳﻚ ﺗﺎﺑﻊ OnMouseDownﺑﻪ اﺳﻜﺮﻳﭙﺖ ﭼﺮﺧﺶ اﺿﺎﻓﻪ ﻛﻨﯿﻢ.
ﺑﺮاي اﻳﻦ ﻛﺎر از ﻳﻚ ﻣﺘﻐﯿﺮ ﺧﺼﻮﺻﻲ ) (private varاﺳﺘﻔﺎده ﻣﻲﻛﻨﯿﻢ ﻛﻪ در Inspectorدﻳﺪه ﻧﺸﻮد .از ﻧﻈﺮ ﺗﺌﻮري ،ﺑﺎﻳﺪ از ﻳﻚ ﻧﻮع
ﺑﻮﻟﯿﻦ ﺑﺮاي ﻣﺘﻐﯿﺮ ﺧﻮد اﺳﺘﻔﺎده ﻛﻨﯿﺪ ﻛﻪ ﻓﻘﻂ دو وﺿﻌﯿﺖ دارد )روﺷﻦ/ﺧﺎﻣﻮش ﻳﺎ درﺳﺖ/ﻏﻠﻂ( و ﺣﺎﻓﻈﻪي ﻛﻤﺘﺮي اﺳﺘﻔﺎده
ﻣﻲﻛﻨﺪ .ھﺮﭼﻨﺪ ،ﭼﻮن ﺑﺴﯿﺎري از اﻛﺸﻦھﺎ داراي دو وﺿﻌﯿﺖ ھﺴﺘﻨﺪ ،ﺑﮫﺘﺮ اﺳﺖ در ﻣﻮرد وﺿﻌﯿﺖھﺎ ﺑﺼﻮرت ﻋﺪدي ﻓﻜﺮ ﻛﻨﯿﻢ و
از اﻋﺪاد اﺳﺘﻔﺎده ﻛﻨﯿﻢ.
}
اﺳﻜﺮﻳﭙﺖ ﺗﻐﯿﯿﺮ ﻳﺎﻓﺘﻪ را ﺑﺎ ﻋﻨﻮان SimpleRotateToggle.jsذﺧﯿﺮه ﻛﻨﯿﺪ. -۴
ﻧﻜﺘﻪ :ھﻨﮕﺎم اﺳﺘﻔﺎده از Save Asﺑﺮاي ذﺧﯿﺮهي ﻳﻚ اﺳﻜﺮﻳﭙﺖ در ﻛﺎﻣﭙﯿﻮﺗﺮ ،اطﻤﯿﻨﺎن ﺣﺎﺻﻞ ﻛﻨﯿﺪ ﻛﻪ ﭘﺴﻮﻧﺪ jsﺑﻪ آن اﺿﺎﻓﻪ
ﺷﺪه ﺑﺎﺷﺪ ﺗﺎ وﻳﺮاﻳﺸﮕﺮ اﺳﻜﺮﻳﭙﺖ ﻣﺘﻮﺟﻪ ﻓﺮﻣﺖ ﻣﻮرد اﺳﺘﻔﺎده ﺷﻤﺎ ھﻨﮕﺎم ذﺧﯿﺮه ﺳﺎزي و ﺧﻮاﻧﺪن ﺷﻮد.
ﺑﻪ ﺟﺎي ﺣﺬف اﺳﻜﺮﻳﭙﺖ SimpleRotateﻣﻮﺟﻮد و اﺿﺎﻓﻪ ﻛﺮدن ﻧﺴﺨﻪي ﺟﺪﻳﺪ ،ﻣﻲﺗﻮاﻧﯿﺪ اﺳﻜﺮﻳﭙﺖ را در Inspectorﻣﺠﺪدا ً
ﺗﺨﺼﯿﺺ دھﯿﺪ .اﻳﻦ روش داراي اﻳﻦ ﻣﺰﻳﺖ اﺳﺖ ﻛﻪ ﻣﻘﺎدﻳﺮ ﻣﺘﻐﯿﺮھﺎ از ﺑﯿﻦ ﻧﻤﻲروﻧﺪ.
واﻟﺪ ﻣﻜﻌﺐ ) (Cube Parentرا در ﻧﻤﺎي Hierarchyﺑﺎز ﻛﻨﯿﺪ و ﻣﻜﻌﺐ را اﻧﺘﺨﺎب ﻛﻨﯿﺪ. -١
روي آﻳﻜﻮن Browseدر ﻛﻨﺎر اﺳﻜﺮﻳﭙﺖ ﺑﺎرﮔﺬاري ﺷﺪه ﻛﻠﯿﻚ ﻛﻨﯿﺪ. -٢
اﺳﻜﺮﻳﭙﺖ SimpleRotateToggleرا اﻧﺘﺨﺎب ﻛﻨﯿﺪ .ﺑﺪﻳﻦ ﺗﺮﺗﯿﺐ اﻳﻦ اﺳﻜﺮﻳﭙﺖ ﺟﺎﻳﮕﺰﻳﻦ ﻣﻲﺷﻮد وﻟﻲ myDegree -٣
دﺳﺖ ﻧﺨﻮرده ﺑﺎﻗﻲ ﻣﻲﻣﺎﻧﺪ.
ﻧﮕﺎھﻲ ﺑﻪ ﺷﺮط
درون ﭘﺮاﻧﺘﺰھﺎ ﻋﺒﺎرﺗﻲ اﺳﺖ ﻛﻪ ﺷﺮط آن ﺑﺎﻳﺪ ﺑﺮﻗﺮار ﺑﺎﺷﺪ ﺗﺎ ﺑﻘﯿﻪ دﺳﺘﻮرات ﻛﻪ درون آﻛﻮﻻد ﻗﺮار دارﻧﺪ ،اﺟﺮا ﺷﻮﻧﺪ .ﻪﺟ ﻮﺘ ﻣ ًﺎﻤ ﺘﺣ
دو ﻋﻼﻣﺖ ﺗﺴﺎوي ﺷﺪهاﻳﺪ .اﻳﻦ ﻋﻼﻣﺖ ،ﻋﻤﻠﮕﺮ ﺗﺴﺎوي ﻧﺎم دارد و ﻛﺎر آن ﺑﺮرﺳﻲ ﻣﺴﺎوي ﺑﻮدن ﻣﺘﻐﯿﺮ rotationStateﺑﺎ ﻣﻘﺪار
١اﺳﺖ .اﮔﺮ ﭼﻨﯿﻦ ﺑﺎﺷﺪ ،ﺷﺮط ﺑﺮﻗﺮار اﺳﺖ و دﺳﺘﻮرات داﺧﻞ آﻛﻮﻻد اﺟﺮا ﻣﻲﺷﻮﻧﺪ .ﻳﻌﻨﻲ ﻣﻘﺪار rotationStateﺑﺮاﺑﺮ ﺑﺎ ٠
ﻮﺧاھﺪ ﺷﺪ .دﻗﺖ ﻛﻨﯿﺪ ﻛﻪ اﮔﺮ ﻓﻘﻂ از ﻳﻚ ﻋﻼﻣﺖ ﻣﺴﺎوي اﺳﺘﻔﺎده ﻛﻨﯿﻢ ،ﻋﻤﻠﮕﺮ ﺗﺨﺼﯿﺺ را ﺑﻜﺎر ﺑﺮدهاﻳﻢ .ﺷﺮط ﺑﺮﻗﺮار ﻧﺒﺎﺷﺪ،
وارد ﻗﺴﻤﺖ else ifﻲﻣﺷﻮﻳﻢ .در اﻳﻨﺠﺎ ﻣﻘﺪار rotationStateﺑﺮاﺑﺮ ﺑﺎ ١ﻗﺮار داده ﻣﻲﺷﻮد .ﭘﺲ از اﻳﻨﻜﻪ وﺿﻌﯿﺖ ﺷﻨﺎﺳﺎﻳﻲ و
ﻪﺑروز ﺷﺪ ،روي ﻛﻨﺴﻮل ﻧﻤﺎﻳﺶ داده ﺧﻮاھﺪ ﺷﺪ.
ﺗﺮﺗﯿﺐ ارزﻳﺎﺑﻲ
در اﺳﻜﺮﻳﭙﺖ ﻧﻮﻳﺴﻲ ،ﺑﺮاي ارزﻳﺎﺑﻲ ﻗﻮاﻧﯿﻦ ﻣﻌﺎدﻻت رﻳﺎﺿﻲ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﯿﺮد .ﺿﺮب و ﺗﻘﺴﯿﻢ اول ﭘﺮدازش ﻣﻲﺷﻮﻧﺪ،
ﺳﭙﺲ ﺟﻤﻊ و ﺗﻔﺮﻳﻖ و ﻧﮫﺎﻳﺘﺎ ً ﻣﻘﺎﻳﺴﻪھﺎﻳﻲ ﻣﺎﻧﻨﺪ and / orو ....اﮔﺮ ﭼﯿﺰي درون ﭘﺮاﻧﺘﺰ ﺑﺎﺷﺪ ،ﻗﺒﻞ از ھﻤﻪ ﭘﺮدازش ﻣﻲﺷﻮد.
در ﻣﻮرد ﭘﺮاﻧﺘﺰھﺎي ﺗﻮدرﺗﻮ ﻧﯿﺰ داﺧﻠﻲﺗﺮﻳﻦ ﭘﺮاﻧﺘﺰ اول ﭘﺮدازش ﻣﻲﺷﻮد.
در اﻳﻦ ﻧﻮﺷﺘﻪ ،ﺳﻌﻲ ﺷﺪ ﻣﺒﺎﻧﻲ اوﻟﯿﻪي ﻛﺎر ﺑﺎ اﺳﻜﺮﻳﭙﺖھﺎ در ﻳﻮﻧﯿﺘﻲ ﺑﻪ ﺳﺎدهﺗﺮﻳﻦ روش آﻣﻮزش داده ﺷﻮد .در آﻣﻮزشھﺎي
ﺑﻌﺪي ،در ﻛﻨﺎر دﻳﮕﺮ آﻣﻮزشھﺎ ،اﺳﻜﺮﻳﭙﺖﻧﻮﻳﺴﻲ را ﻧﯿﺰ ﻛﺎﻣﻞﺗﺮ ﻳﺎد ﺧﻮاھﯿﻢ ﮔﺮﻓﺖ.
:.اﻧﺘﺸﺎر اﻳﻦ ﻣﻄﻠﺐ ﺑﻪ ھﺮ روش ﻛﺎﻣﻼ ً آزاد ﺑﻮده و ﺗﻨﮫﺎ ﻣﺤﺪودﻳﺖ ﻣﻮﺟﻮد ذﻛﺮ ﻣﻨﺒﻊ ﻣﻄﻠﺐ ﻳﻌﻨﻲ وﺑﻼگ دﻧﯿﺎي
زﻳﺒﺎي ﻛﺎﻣﭙﯿﻮﺗﺮ ﺑﻪ آدرس http://dialup.persianblog.irاﺳﺖ .ھﺮﮔﻮﻧﻪ ﻧﻈﺮ ،اﻧﺘﻘﺎد و ﭘﯿﺸﻨﮫﺎد ﺷﻤﺎ در ﻣﻮرد اﻳﻦ
ﻣﻄﻠﺐ ﻳﺎ ﻣﻄﺎﻟﺐ ﻣﻮرد ﻧﯿﺎز دﻳﮕﺮ ،راھﻨﻤﺎي ﻣﻦ در ارﺗﻘﺎء ﺳﻄﺢ ﻣﻄﺎﻟﺐ و اراﺋﻪي ﻣﻄﺎﻟﺐ ﻣﻔﯿﺪﺗﺮ اﺳﺖ .: