using UnityEngine;
public class RigidBodyTest : MonoBehaviour
{
Rigidbody m_Rigidbody;
void Start()
{
m_Rigidbody = transform.GetComponent<Rigidbody>();
}
private void FixedUpdate()
{
// 更平滑的移动
// m_Rigidbody.MovePosition比使用Transform.position更新位置要快,
// 因为后者将导致所有连接的Colliders重新计算它们相对于Rigidbody的位置。
m_Rigidbody.MovePosition(transform.position + Vector3.forward * Time.deltaTime);
//更平滑的旋转
// m_Rigidbody.MoveRotation比使用Transform.position更新旋转要快,
// 因为后者将导致所有连接的Colliders重新计算它们相对于Rigidbody的旋转
Quaternion deltaRotation = Quaternion.Euler(new Vector3(0, 100, 0) * Time.deltaTime);
m_Rigidbody.MoveRotation(m_Rigidbody.rotation * deltaRotation);
// 施加力
m_Rigidbody.AddForce(Vector3.forward, ForceMode.Impulse);
// 施加扭力
float turn = Input.GetAxis("Horizontal");
Vector3 vec = transform.up * 2 * turn;
m_Rigidbody.AddTorque(vec);
}
}