对球体施加力会使它朝不可预知的方向发送
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 );
希望对您有所帮助!如果您有任何问题,请告诉我。
我试图在鼠标点击的方向上移动(开火)一个球体。但是当我点击时,球体会朝着不可预知的方向移动。
我添加力来移动球体的代码:
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 );
希望对您有所帮助!如果您有任何问题,请告诉我。