本節(jié)要點
#1.AddForce()
1.作用
給剛體添加一個力,讓剛體按“世界坐標系”進行運動。
2.代碼
Rigidbody.AddForce(Vector3,ForceMode);
Vector3:力的方向和大??;
ForceMode:力的模式[enum 類型]。
3.ForceMode 參數
類型為枚舉類型,以什么樣的方式添加力給剛體。
枚舉值說明
Acceleration:[?k?sel??re??n](加速度);
Force:(力)這種模式通常用于設置真實的物理;
Impulse:(沖擊力)這種模式通常用于瞬間發(fā)生的力;
VelocityChange:(速度的變化);
#2.AddRelativeForce()
1.作用
給剛體添加一個力,讓剛體按“自身坐標系”進行運動。
2.代碼
Rigidbody.AddRelativeForce(Vector3,ForceMode);
Vector3:力的方向和大小;
ForceMode:力的模式[enum 類型]。
3.FixedUpdate()
固定更新方法。
所有和物理相關的操作,代碼都要寫在 FixedUpdate()方法體內。
固定更新的時間間隔是 0.02 秒,1 秒執(zhí)行 50 次。
Edit-->Project Settings-->Time 面板中的 Fixed Timestep 參數設置。
Update()方法是每幀執(zhí)行一次。
畫面每渲染完一次,就是一幀,每幀的時間是不固定的。
在 Update()方法中執(zhí)行物理操作,會出現卡頓的情況。
場景視圖

關鍵代碼
ForceTest
public class ForceTest : MonoBehaviour {
private Rigidbody m_Rigibody;
// Use this for initialization
void Start () {
m_Rigibody=gameObject.GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
//m_Rigibody.AddForce(Vector3.forward, ForceMode.Force);//世界坐標系向前力
// m_Rigibody.AddRelativeForce(Vector3.forward * 10, ForceMode.Force);//自身坐標系向前力
//給Z鍵添加一個自身向前的力
if (Input.GetKeyDown(KeyCode.Z))
{
m_Rigibody.AddRelativeForce(Vector3.forward * 10, ForceMode.Force);
}
}
//物理更新方法 執(zhí)行物理操作;
void FixUpDate() {
}
}
RigidbodyMove
public class RigidbodyMove: MonoBehaviour {
private Rigidbody m_Rigidbody;
private Transform m_Tranform;
// Use this for initialization
void Start () {
m_Rigidbody=gameObject.GetComponent<Rigidbody>();
m_Tranform=gameObject.GetComponent<Transform>();
//Test
// m_Rigidbody.MovePosition(m_Tranform.position+ Vector3.forward*10);
}
// Update is called once per frame
void Update () {
//向前
if (Input.GetKey(KeyCode.W))
{
m_Rigidbody.MovePosition(m_Tranform.position+Vector3.forward*0.1f);
}
if (Input.GetKey(KeyCode.S))
{
m_Rigidbody.MovePosition(m_Tranform.position + Vector3.back * 0.1f);
}
if (Input.GetKey(KeyCode.A))
{
m_Rigidbody.MovePosition(m_Tranform.position + Vector3.left * 0.1f);
}
if (Input.GetKey(KeyCode.D))
{
m_Rigidbody.MovePosition(m_Tranform.position + Vector3.right * 0.1f);
}
}
}
小結

瘋狂的小鳥.jpg

剛體添加力.png

Unity API.png