2016-11-17 2 views
0

J'essaie de déplacer une sphère dans le sens d'un clic de souris. Mais quand je clique, la sphère se déplace dans des directions imprévisibles.Appliquer une force à une sphère l'envoie dans des directions imprévisibles

Mon code pour ajouter la force pour déplacer la sphère:

if (Input.GetMouseButtonDown(0)){ 

    RaycastHit hit; 

    /** 
    * We r using raycasting to detect mouse click on plane 
    * */ 
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 

    if (Physics.Raycast(ray, out hit)){ 
     newPosition = hit.point; 
     this.GetComponent<Rigidbody>().AddForce((newPosition).normalized * 25, ForceMode.Impulse ); 
    } 
} 

Répondre

2

Vous avez fourni un argument incorrect pour Rigidbody.AddForce(). Le vecteur que vous fournissez pour le premier argument ne doit pas être le position vous voulez que la force pointe vers - ce devrait être le direction de la force, multiplié par la magnitude.

Dans ce cas, vous pouvez calculer la direction de la force en soustrayant la position actuelle de l'objet de la position cible:

Vector3 forceDir = newPosition - transform.position; 
this.GetComponent<Rigidbody>().AddForce(forceDir.normalized * 25, ForceMode.Impulse ); 

Hope this helps! Faites moi savoir si vous avez des questions.