Вам нужно добавить восходящий компонент к скорости брошенного объекта. Если вы знаете, сколько вам нужно вверх по шкале от 0
до 1
, вы можете использовать Vector3.Slerp
, чтобы определить нужное вам направление.
// give the dynamite a velocity so that it moves up + forward
Rigidbody dynamiteRB = Dyn.GetComponent<Rigidbody>();
float upness = 0.5f; // 0f = horizontal ~ 1f = vertical
Vector3 throwDirection = Vector3.Slerp(
transform.forward,
Vector3.up,
upness
);
dynamiteRB.velocity = throwDirection * throwSpeed;
Если вы хотите выполнить бросок в зависимости от камеры, но хотите отрегулировать угол наклона, который дает камера, вместо этого вы можете указать направление Camera.main.transform
:
// give the dynamite a velocity so that it moves up + forward
Rigidbody dynamiteRB = Dyn.GetComponent<Rigidbody>();
// 0f = aim exact direction the camera is pointing
// 0.2f = aim slightly higher than camera is pointing
// 1f = aim directly up
float additionalUpness = 0.0f;
Vector3 throwDirection = Vector3.Slerp(
Camera.main.transform.forward,
Vector3.up,
additionalUpness
);
dynamiteRB.velocity = throwDirection * throwSpeed;