當物體運動速度遠小於光速可被視為理想剛體,可以忽略型變,也就是說被碰撞後形狀會保持一樣。
也就是說剛體在物理中被視為不形變的物體。
替物件上新增元件"剛體",使物件可以使用物理系統。
由於是製作2D遊戲,選擇Rigidbody 2D。
運動種類Body Type,可以選擇物理系統
1.Dynamic 動力,運動時受力影響。
2.Kinematic 運動,不受力影響但會運動。
3.static 固定,不受力影響也不會動。
物理屬性
1.Mass質量,F=ma,會影響碰撞速度,大質量去撞小質量,小質量會用較快的速度飛出去。
2.Drag阻力,分為線性阻力和角阻力。像摩擦力一樣,決定慢下來的速度。
3.Gravity Scale重力大小,物體受重力影響的程度。
※環境重力可以調整(Edit → Project Settings... → Physic 2D)
碰撞偵測Collision Dectection
1.Discrete 非連續性
2.Continuous 連續性
睡眠模式Sleeping Mode
睡眠模式決定rigidbody要不要工作(啟用),醒著就要,睡著就不用,可透過事件改變狀態。
1.Never Sleep 不睡,一直都醒著
2.Start Awake 開始時醒著
3.Start Asleep 開始時睡著
差值Interpolate
差值,系統推算與差值,負責改善不規則位移,如果運動起來有不明抖動可以打開這個修正。
1.None 無
2.Interpolate 差值,根據前一幀的位置進行平滑
3.Extrapolate 推算,推算下一幀的位置進行平滑
限制Constraints
1.Freeze Position X Y ,限制X軸或Y軸位移,可以做成平移或垂直移動。
2.Freeze Rotation Z ,限制Z軸轉動,這樣人物就不會翻轉,才不會頭下腳上。
void Awake() //或是void Start()
{
Rigidbody2D rb; //建立剛體2D,名叫rb(自己取)
rb=GetComponent<Rigidbody2D>(); //抓取物件的剛體
}
void Update()
{
movement();
}
private void movement()
{
if (Input.GetKey("d")) //其他方向以此類推
{
rb.velocity= Vector2.right;
}
}
另外可以使用Rigidbody2D.MovePosition這個方法(請參閱unity手冊)