我無論如何都不是物理學專家,因此我無法確切地告訴我所尋找的效果如何。我只是把它稱爲「下旋」現在:)Unity3d:帶有剛體的球體後旋體
圖片這樣的場景:
有在一張乒乓球桌的你面前一個乒乓球。你用手指在它上面施加壓力(用很大的力量從球的頂部到底部)。乒乓球會從你的手指向前滑動但是向後旋轉。所以,儘管它已經向前移動時它最終會退回給你,因爲它向後旋轉:d
我希望是有道理的。我真的不知道這種效應是如何被調用的,所以我不能真正查找解決方案。
我確實有一個簡單的平面上有一個球體(剛體連接)。我想通過在屏幕上滑動來模擬這種確切的效果。但最重要的是,如何實現這一效果?效果也應該通過確切地將壓力放在球的位置(左側或右側)來實現。我只是希望它在向後旋轉時向前移動,並且由於其反向力而最終回滾(不完全相同,但更現實)。
我已經嘗試過使用Addforce和Addtorque,但沒有成功。
任何幫助,高度讚賞。
祝您有美好的一天!
編輯:我有什麼至今:
public float spin = 1000f;
public float force = 20f;
public float angularVelocity = 100f;
private Rigidbody rb;
private Vector3 oldPos;
private Quaternion oldRot;
public int pressed = 0;
void Start() {
oldPos = transform.position;
oldRot = transform.rotation;
rb = GetComponent<Rigidbody>();
rb.maxAngularVelocity = angularVelocity;
}
void FixedUpdate()
{
Debug.Log(rb.velocity.magnitude);
if (Input.GetKey(KeyCode.Space))
{
Debug.Log("pressed");
pressed = 1;
rb.AddForce(new Vector3(0,0,force),ForceMode.VelocityChange);
rb.AddTorque (new Vector3 (-spin, 0, 0), ForceMode.Force);
}
}
EDIT2:
public float spin = 1000f;
public float force = 20f;
public float angularVelocity = 100f;
private Rigidbody rb;
private Vector3 oldPos;
private Quaternion oldRot;
public int pressed = 0;
public float forceTime = 1f;
public float startBack = 0.25f;
void Start() {
oldPos = transform.position;
oldRot = transform.rotation;
rb = GetComponent<Rigidbody>();
rb.maxAngularVelocity = angularVelocity;
}
void FixedUpdate()
{
Debug.Log(rb.velocity.magnitude);
if (pressed == 2)
{
rb.AddForce(new Vector3(0,0,-force),ForceMode.Acceleration);
}
else if (pressed == 1 && rb.velocity.magnitude <= startBack && rb.velocity.magnitude >= 0f)
{
pressed = 2;
StartCoroutine("StopForce");
}
else if (Input.GetKeyDown(KeyCode.Space) && pressed == 0)
{
Debug.Log("pressed");
rb.AddForce(new Vector3(0,0,force),ForceMode.VelocityChange);
rb.AddTorque (new Vector3 (-spin, 0, 0), ForceMode.Force);
pressed = 1;
}
}
IEnumerator StopForce() {
yield return new WaitForSeconds(forceTime);
pressed = 3;
}
添加你能不能負旋轉量添加到遊戲對象,並使用添加力向前移動。你也可以添加一個物理材質,它會影響它與表面的反應方式。這可能會幫助你 http://answers.unity3d.com/questions/377944/how-to-make-a-ball-rotate-as-per-its-moving-direct.html] –