我有一個球,有一個最初的爆發力,將其發射到空中。理想情況下,這個球將能夠轉向目標,同時不斷失去這種開始的勢頭。在朝向目標邁進時不應該獲得任何速度。如何在不增加力度或速度的情況下將剛體移向目標?
重要!它也可以反彈牆壁,這也減少了它的勢頭。
在物理系統中建立的統一模式非常適合將物體扔到牆壁上並以非常自然的方式看到它彈跳,我想保持這一點但輕輕地將它推向目標。
我發現的大多數解決方案(特別是尋的導彈)都會增加連續的力量,如果它們是自供電的,這很好。
在一個腳本這之前我會用
ballRigidbody.Addforce(targetDirection, ForceMode.Impulse);
那麼我想它使用「運動」類來操縱給球的說... 100力。
下面是球的一個例子不斷加入的力量,因此它更像是一個火箭推(不是我了!)
public class Movement : MonoBehaviour {
[Header("Get Components")]
[SerializeField]Transform targetTransform_gc;
[SerializeField]Transform ballTransform_gc;
[SerializeField]Rigidbody ballRigidbody_gc;
[Header("Settings")]
public float turnSpeed;
public float ballSpeed;
//Private
private Vector3 targetDirection;
private Quaternion targetRotation;
void Update() {
targetDirection = targetTransform_gc.position -ballRigidbody_gc.position;
targetDirection.Normalize();
targetRotation = Quaternion.LookRotation(ballRigidbody_gc.velocity);
ballTransform_gc.rotation = Quaternion.Slerp (ballTransform_gc.rotation, targetRotation , turnSpeed * Time.deltaTime);
}
void FixedUpdate(){
ballRigidbody_gc.AddForce(targetDirection * ballSpeed);
ballRigidbody_gc.velocity = new Vector3(ballRigidbody_gc.velocity.x, 0, ballRigidbody_gc.velocity.z);
}
}
我會,如果任何人有一些非常感激指針或建議。
非常感謝!
我想你正在尋找一種叫做「衝動」的物理事物。 – Almo
嗨Almo,感謝您的評論。在固定更新中將力量改變爲衝動(targetDirection * tankShellSpeed,ForceMode.Impulse);不是我正在尋找的東西。這仍然有完全相同的問題。我會清楚地說明,在我的文章中已經加入了一個力量。 – Jim