---
# System prepended metadata

title: Unity game 階段を下りるホットポット
tags: [暑假]

---

# Unity game 階段を下りるホットポット
###### tags : `暑假`
----
## 環境建置
Unity hub 3.1.2( 編輯器:2020.3.33f1 LTS )
VScode( C# )

----
## GameLoop
start -> ( update<->draw ) ->shut

----
## codeせつめい
```
void Start() : 啟動程式後只做一次

void Update() : 視為無限迴圈

Time.deltaTime : 做一次迴圈所需的時間，可避免每台電腦跑迴圈的時間不同

SerializeField : 把變數設為private但可出現在unity介面，或直接用public也可

void OnCollisionEnter2D(Collision2D other) : 給予碰撞反應， other為物體參數

void OnTriggerEnter2D(Collider2D other) : 判斷有無經過物體，
必須先將物體trigger，即無視碰撞

other.contacts.normal : 尋找物體法向量

other.contacts.point : 尋找物體座標

gameObject.SetActive : 使物件顯示或不顯示

GetComponent<>(). : 獲取Unity欄位功能

Time.timeScale : 在Unity裡時間的縮放的比例，預設為1

Text 型別 : 需using UnityEngine.UI

UnityEngine.SceneManagement : SceneManager.LoadScene("SampleScene") 可以再次載入場景，需using UnityEngine.SceneManagement
```
----
## Unityせつめい
- Rigibody : 賦予物理性
![](https://i.imgur.com/6E6hiEy.png)


- Collider : 加上碰撞範圍
![](https://i.imgur.com/OQn59fE.png)

- prefab : 素材規格群組化
![](https://i.imgur.com/9FVhrUl.png)


- UI(User Interface) : canvas獨立於整個遊戲其子物件可蓋過遊戲中所有畫面,Eventsystem處理遊戲中觸發的事件
![](https://i.imgur.com/mTeWTnF.png)


- animetion : 製作動畫,將圖片放入調整頻率
    - (動畫流程圖)
![](https://i.imgur.com/AUDj6kw.png)
    - 解決動畫切換延遲 : Has Exit Time, Fixed Duration取消, Transition Duratior = 0(有bug,所以改成自己調參數)
![](https://i.imgur.com/0nJfOEO.png)
    - (調整參數 : idle到run的動畫)
![](https://i.imgur.com/WFl7eD1.png)
    - (調整參數 : run到idle的動畫)
![](https://i.imgur.com/m4QNPtM.png)
    - (觸發run條件)
![](https://i.imgur.com/TN5ReZh.png)


    - Has Exit Time : 這格有勾選的話，當此狀態的動畫結束後，回進行下一動畫，否則就會在此狀態停留。而Setting的Exit Time則可以設定什麼時候此狀態結束，轉換至下一個狀態，也可以透過滑鼠直接調整下面的藍條，做快速設定

    - Fixed Duration : 打勾時Transition Duration單位為秒，打勾取消時則是以動畫總長度的百分比為單位

    - Transition Duratior : 可以設定兩個動畫間的過渡漸變秒數，讓動畫轉換不會那麼生硬。


    - Animator layers : 注意權重設置為0的話動畫不會顯現
![](https://i.imgur.com/K1XEPq4.png)


- AudioSource:增加音效
    - Play On Awake : 如果有勾選則遊戲開始就播放音效
    ![](https://i.imgur.com/So6XWhY.png)

----

### 遇到的困難
- 自己的VScode不會跑出完整要打的參數，要自己一個字一個字打，很常打錯大小寫

- 要從C#學起似乎會比較好(不過照著做是還好)

- Unity介面可能不熟悉吧，常常做好的部分突然不見，或是突然檔案亂跑

----
:::info
備註 :
code裡有比較好的說明?大概吧

資料參考 : https://www.youtube.com/watch?v=nPW6tKeapsM&t=7745s&ab_channel=GrandmaCan-%E6%88%91%E9%98%BF%E5%AC%A4%E9%83%BD%E6%9C%83

成品&code : https://drive.google.com/drive/folders/1z4fEZXnppzekMmIxT5r2rm4aFzQRihYL?usp=sharing
:::

----


