:::info <font color="#449df9">**第二次社課**</font> ::: ***歡迎大家走進遊戲背後的神秘世界,讓我們帶你一起探索吧!*** 上課前請先幫我登入學校的google帳號,並打開classroom,加入==egxnieml==,這個課程,方便大家存檔使用! >[TOC] ## 新建專案 登入學校帳號 建一個2D的專案  :::warning >[!Warning] >跟第一次社課一樣 ::: ## 介面介紹 <div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;"> <iframe src="https://www.youtube.com/embed/5xEKEpRSHkI" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> </iframe> </div> ### 建立物件 從影片中雖然畫質堪憂😅但可以看到Unity的介面,由於螢幕大小或是其他因素,可能會不一樣,但功能是相同的。 首先影片中第一步是在旁邊的==Hierarchy==按右鍵,然後按```2D Object``` -->```Sprites``` -->```Squre```於是你便擁有一個方塊。 :::info ```Sprite```裡也有其他形狀可以試試看! ::: ### 工具欄介紹 在視窗左邊的五個工具欄,功能如下: | :hand:View | ➡️Move | 🔄️Rotate | ↔️Scale | ↗️Rect | :woozy_face:Transform | | --------------- | ----------- | -------------- | ------------ | ----------- | --- | | 控制視窗(不移動物件) | 固定X或Y移動(按藍色方塊可以一起動) | 旋轉角度 | 調整物件大小 | 定點放大 | 綜合所有功能(集大成但我很少用) | :::info >[!Important]剩下的之後會再介紹 ::: ### 工具練習 試著利用剛剛所學到建立物件以及工具欄完成以下的樣子!  :::warning 可以直接選取一個物件,並按```Ctrl+c```-->```Ctrl+v```進行複製。 而要完成綠色頭髮可以用物件右方資訊裡的```Sprite Renderer```下面有一欄```Order in Layer```(就是圖層) ::: :::spoiler 進階挑戰  要瘋狂的新增物件,時間多的可以試試! ::: ## 程式實作 再來就是精彩的==程式實作==啦🎉🎉🎉 ### 新建文本 首先一樣要先創程式的文本啦! 在下面的==Assets==按右鍵,然後按```Create``` -->```Folder``` -->```命名成Script``` 接著打開這個資料夾,一樣按右鍵```Create``` -->```Scripting``` -->```Empty C# Script```-->```命名成player```,完成後便可以打開。 ### 程式操作 #### 起首式 ``` using UnityEngine; public class player : MonoBehaviour { void Start() { } void Update() { } } ``` :::info 可以直接**複製**,player那裡要用跟建的檔案名稱一樣 ::: #### 移動:melting_face: ``` void Update() ``` ``` transform.Translate(1*Time.deltaTime, 0, 0); //(x,y,z) //Time.deltaTime這個能使物件無論電腦計算的的好壞都能跑同樣的速度 ``` :::success 完成後按```Ctrl+S```儲存,回到Unity按上方的▶️,看看會有什麼效果吧! ::: 但這樣跟玩遊戲的感覺不一樣對吧,是不是感覺少了什麼,沒錯,就是按鍵控制,那因為是電腦遊戲,所以應該來個WASD,所以讓我們繼續看下去吧!! ``` void Update() ``` ``` if (Input.GetKey("d")) { transform.Translate(1*Time.deltaTime, 0, 0); } ``` :::danger "按鍵"一定要是小寫字母,不然會無法使用喔 ::: :::spoiler 小試身手 接著可以試著自己完成WASD,上下左右的移動 ::: #### 碰撞偵測(Box Collider2D) 我們一起認識遊戲常用的碰撞偵測吧! 先在選一個物件(剛剛的player方塊),然後右側的==Inspector==滑到底,然後按```Add Component``` -->輸入```Box Collider2D``` -->```點一下``` 新增這個功能後就開始介紹吧!首先是```Edit Collider``` ,按一下那個按鍵,你可以看到你所選的物件被綠色方框圍住,這是偵測的範圍,可以調整,如果跑掉可以按右上的三個點,然後按```Reset```,回到初始樣子,剩下的保持原本的設定就可以了! #### 標籤設定 那偵測有個重點,他需要知道他碰到的物件是什麼,所以這時候要用到==標籤(tag)==他在物件名稱的下方,有一欄tag.....,按下那個下拉式選單,選最下面的```Add Tag...```,接著按加號,取一個名字(例如:player、floor......),按```save```,回到物件資料,把tag改成剛剛命名的,這樣便可以了! #### 物理性質(Rigidbody 2D) 這個也是重點,跟碰撞偵測一樣,在物件的下方搜尋```Rigidbody 2D```並新增,功能的詳細介紹之後用到再說,那這個的物理性質是指會==賦予質量==,所以會自然地往下掉,會有重力加速度! #### 碰撞程式 先再生成一個方形,叫做floor,一樣要有```Box Collider2D``` 且標籤tag新增一個```floor```並套用,隨後便可以開啟原本的程式文本 ``` void OnCollisionEnter2D(Collision2D other) { if (other.gameObject.tag == "floor") { print("touch!"); } //偵測碰到物件的標籤是否是"floor" } ``` :::success 執行並看看下方會不會出現"touch!",且物體停在floor上! ::: :::spoiler 進階挑戰 試試融合剛剛前面所學的移動,看看會有什麼效果! ::: **恭喜大家完成今天的課程🎉🎉🎉** 各位可以對於今天所學到的功能多加練習,如果有任何不懂可以問我(教學長),講義有那裡不足也可以說,那我們下次便要進入遊戲的製作,盡請期待😊 **存檔** 接者我們要進行==存檔==,因為電腦教室關機會重置。首先是要退出遊戲(記得存檔),然後在```檔案總管```搜尋當初建檔案的名稱,會找到一個資料夾,點進去,全選裡面的所有檔案,按右鍵,```壓縮至...```選```壓縮檔案```,然後可能有等個10分鐘,壓縮完存到==classroom==即可! **簽退** 最後別忘記簽退喔! :::spoiler 要完成才能開喔(或是時間到了) :::spoiler 你確定? :::spoiler 不要先偷看喔! ciTrc ::: **電腦關機前請確認以下幾點:** - [ ] 檔案是否已存在classroom - [ ] 是否填完簽退表單 ##### 確認完成後,那我們這次社課就結束囉,期待下次與你的相見!:heart_eyes::heart_eyes::heart_eyes: ##### 掰掰~~ :kissing_heart:
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up