Unity 小社課 第3.5堂 講師:貝絲
Collider
碰撞器
介紹
RigidBody
鋼體
Physic Materials 2D
自訂材質
# CHAPTER 2
碰撞器
# Collider
一種Component
可以偵測兩個 Game Object 間的碰撞
在場景中以綠色線條顯示
當兩個有Collider的物體碰在一起時會有「碰撞」的效果(會被擋下無法前進)
最常被拿來用的地方:站立的平台
有2D、3D形狀
2D:
矩形、膠囊形、圓形、多邊形、邊、組合
3D:
矩形、膠囊形、球形、網格狀、地形、車輪
可以善用搜尋功能找到適合的 Collider
# Collider
一個包住 Game Object 邊界的Collider
最不吃效能
手動編輯 Collider 邊界
物理材質
是否為觸發器
是否為組合用
距離物件中心的偏移
長寬
圓角半徑
覆蓋層
# Collider
膠囊狀(?
手動編輯 Collider 邊界
物理材質
是否為觸發器
距離物件中心的偏移
長寬
覆蓋層
直向或橫向
# Collider
生成一個圓形包住物件
手動編輯 Collider 邊界
物理材質
是否為觸發器
距離物件中心的偏移
半徑
覆蓋層
# Collider
生成一個貼合物件邊緣的多邊形
蠻吃效能的
手動編輯 Collider 邊界
物理材質
是否為觸發器
距離物件中心的偏移
覆蓋層
是否為組合用
Draw Mode 為 Tiled 時所有複製的 sprite 都有碰撞器
# Collider
將兩個 Collider 組合成一個 Composite Collider
這兩個 Collider 需要有同一個 Rigidbody(之後會教)
+
物理材質
是否為觸發器
距離物件中心的偏移
兩個 Collider組合後的邊界
可以是 Outlines(沿邊)或是 Polygon(多邊形)
會讓 Collider 的頂點變多
圓角
# Collider
# Collider
鋼體
使物件被賦予物理特性
可以控制:
摩擦力、彈跳力
碰撞時產生的位移
縮放、旋轉
常用的地方:
自由落體
物體間的碰撞效果(兩個物體中需要有一個有 Rigidbody 才能有碰撞效果)
# Rigidbody
Rigidbody 類型:
類型
是否模擬
物理材質
質量
移動阻力
轉動阻力
重力倍數
碰撞偵測模式:
Discrete:兩物體相撞後會穿過或重疊
Continuous:不會互相穿過,會停在最後碰撞的地方
凍結 x/y 軸
凍結 z 軸
# Rigidbody
在 Inspector 中加入 Rigidbody
Rigidbody2D rb; // 宣告一個 Rigidbody -> 要寫在class裡面
rb = GetComponent<Rigidbody2D>(); //添加一個 Rigidbody 組建並儲存到 rb 中
rb.gravityScale = 1.0f; //設定重力影響程度
rb.mass = 1.0f; //設定質量
//MovePosition(Vector2 新的目標位置);
rb.MovePosition(new Vector2(5,10));
//處理碰撞、物理交互時非常有用。相比於 transform.position不會突然打斷物體的運動狀態。
//SetRotation(角度); -> 讓物體指向特定方向
rb.SetRotation(45);
//velocity = new Vector2(xSpeed, ySpeed); -> 調整速度
rb.velocity = new Vector2(5,0);
//AddForce(Vector2 force, ForceMode2D mode = ForceMode2D.Force);
rb.AddForce(Vector2.right * 5, ForceMode2D.Force); //逐步施加的力(持續的推力)
rb.AddForce(Vector2.right * 5, ForceMode2D.Impulse); //瞬間的力(跳躍或子彈發射)
//AddTorque(float 力矩大小, ForceMode2D 模式); -> ForceMode跟AddForce一樣
rb.AddTorque(10f, ForceMode2D.Force);
# Rigidbody
自訂材質
# Physic Materials
在Project 裡面按右鍵:Create -> 2D -> Physics Material 2D
# Physic Materials
把新建的材質拖到 Material 的框框
# Physic Materials