Arf, tu es en 2D, j'avais pas capté.
Sinon, houlà. Pourquoi ces coroutines ?
autre chose, quand tu fais
Code : Tout sélectionner
rb.constraints = RigidbodyConstraints2D.FreezePositionY;
rb.constraints = RigidbodyConstraints2D.FreezePositionX;
en final, seul l'axe X est concerné. Si tu veux bloquer les deux axes, Il te faut écrire
En suite, à ma connaissance, il n'existe pas de callback
OnMouseLeave ( tu as trouvé ça dans la doc ?), donc c'est une fonction qui ne sera jamais appelée (donc jamais de Jump).
Tout en gardant ton code comme base, essais ceci (force plutôt vers les 1000.0f):
Code : Tout sélectionner
public Rigidbody2D rb;
public float force = 1000.0f;
bool btnClicked;
void Start()
{
rb = GetComponent<Rigidbody2D>();
rb.constraints = RigidbodyConstraints2D.FreezePosition;
}
public void OnMouseDrag()
{
Rotate(30f);
}
public void OnMouseUp()
{
if (btnClicked)
{
Jump();
}
}
void Rotate(float duration)
{
transform.Rotate(Vector3.back, 400 * Time.deltaTime);
btnClicked = true;
}
void Jump()
{
rb.constraints = RigidbodyConstraints2D.None;
Vector3 dir = transform.up;
rb.AddForce(dir * force);
btnClicked = false;
}