Вы должны взглянуть на некоторые основные страницы API, такие как Update
, Transform
, Transform.position
и Transform.forawrd
.
Для самого вычисления также будет полезен оператор Vector3 * .
// This method is automatically called by Unity every frame
private void Update()
{
Ball.transform.position =
// This is the PlayerCamera's position
PlayerCamera.transform.position
// This is the PlayerCamera's forward vector with magnitude 1
// so this would move the ball 1 Unity Unit in front of the camera
+ PlayerCamera.transform.forward
// This finally moves the desired distance in front of the camera instead of 1 Unit
* DistanceBall;
}
transform.forward
- это Vector3
, которыйвсегда указывает на положительную локальную ось Z
.Это локальный прямой вектор, но он возвращается в координатах Мирового пространства.
В общем, я бы всегда рекомендовал использовать LateUpdate
вместо, если камера перемещается любым пользовательским вводом,Таким образом, вы можете обработать весь пользовательский ввод в Update
и сделать перемещение шара довольно последним шагом перед рендерингом.
В общем, я бы рекомендовал пройти некоторые базовые учебные пособия по Unity, например, Update и FixedUpdate и Vector Maths , прежде чем касаться кода;)