2017-10-14 6 views
0

Je déplace un objet dans un modèle de boulet de canon sans un corps rigide, sans addforce. Je dois déterminer à quelle vitesse le boulet de canon doit voyager pour atteindre sa destination au bon moment.Dans Unity3d, comment calculer la vitesse nécessaire pour parcourir la distance à un moment précis, boulet de canon avec Sin()

Mon code à ce jour:

moveTimer += Time.deltaTime * ballSpeed; 
Vector3 currentPos = Vector3.Lerp(startPos, endPos, moveTimer); 
currentPos.y += height * Mathf.Sin(Mathf.Clamp01(moveTimer) * Mathf.PI); 
this.transform.position = currentPos; 

Je sais qu'en augmentant « ballSpeed ​​», le boulet de canon suivra la même courbe mais plus rapide. En supposant que je veux arriver à endPos dans exactement 10 secondes, comment puis-je calculer le ballSpeed ​​requis?

Merci d'avance!

Répondre

2
ballSpeed = 1f/10f; // duration 10s 
... 
moveTimer += Time.deltaTime * ballSpeed; 
Vector3 currentPos = Vector3.Lerp(startPos, endPos, moveTimer); 
currentPos.y += height * Mathf.Sin(Mathf.Clamp01(moveTimer) * Mathf.PI); 
this.transform.position = currentPos; 
+0

Merci beaucoup! Je vous ai vu ajouter quelque chose à propos de la distance avant qu'elle ne soit éditée, mais celle-ci fonctionne très bien. Je vous remercie! – Quarty