对球体施加力会使它朝不可预知的方向发送

Applying force to sphere sends it in unpredictable directions

我试图在鼠标点击的方向上移动(开火)一个球体。但是当我点击时,球体会朝着不可预知的方向移动。

我添加力来移动球体的代码:

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  );
    }
}

您为 Rigidbody.AddForce() 提供的参数不正确。您为第一个参数提供的矢量不应是您希望力指向的 位置 - 它应该是力的 方向 ,乘以幅度。

在这种情况下,您可以通过从目标位置减去对象的当前位置来计算力的方向:

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

希望对您有所帮助!如果您有任何问题,请告诉我。