Я хочу добавить силу к твердому телу, перетаскивая мышь на экране.даже если я преобразовал координаты экрана в мировые координаты, а вращение твердого тела смотрит на координаты, где отпущена кнопка мыши, когда я добавляю относительную силу с помощью AddRelativeForce, шар направляется прямо вперед.
public GameObject ballPrefab;
GameObject ballInstance;
private float force=15;
Vector3 mouseStart;
Vector3 mouseStop;
float minDragDistance=15f;
float zDepth=20f;
void FixedUpdate()
{
if (Input.GetMouseButtonDown(0))
{
mouseStart = Input.mousePosition;
}
if (Input.GetMouseButtonUp(0))
{
mouseStop = Input.mousePosition;
if(Vector3.Distance(mouseStop, mouseStart) > minDragDistance)
{
//Here I am getting the position on screen coordinates to throw the rigidbody to
Vector3 hitPos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, zDepth);
//I transform screen coordinates to world coordinates
Vector3 hitPoss = Camera.main.ScreenToWorldPoint(hitPos);
//transforming rigidbody to look at hitpos direction
ballInstance.transform.LookAt(hitPoss);
//adding relative force
ballInstance.GetComponent<Rigidbody>().AddRelativeForce(Vector3.forward * force, ForceMode.Force);
}
}
}
Как япрокомментировал в коде, я изменяю свойства transform.rotation
моего игрового объекта с помощью функции LookAt()
, и когда я проверяю инспектор, он меняет вращение вправо.но на AddRelativeForce(Vector3.forward)
он напрямую идет вперед по глобальному направлению z вместо локально измененного направления z.