Я надеюсь, что кто-то может прояснить это для меня, я буквально потратил на это дни.
Мне нужно сфокусировать камеру на передней части объекта, а затем позволить игроку вращаться вокруг объекта, удерживая кнопку мыши. Мне удалось заставить камеру сфокусироваться на передней части объекта, используя это:
if (!arrived)
{
//Centre on our object
var newPos = target.transform.position + currentRotation * (distance * target.transform.forward);
transform.position = Vector3.Lerp(transform.position, newPos, 0.25f);
transform.LookAt(target.position);
return;
}
Но затем я ищу удерживаемую кнопку мыши и пытаюсь вращаться вокруг целевого объекта, сохраняя постоянное расстояние от него.
Я пробовал так много разных способов, но у всех есть проблемы.
Я пробовал:
transform.RotateAround(target.position, Vector3.down, (movementForce * 100000) * Time.deltaTime);
Но который отлично работает по горизонтали но то же самое с использованием Vector.left не работает по вертикали.
Я пробовал:
transform.LookAt(target.position);
Vector3 rotation = new Vector3(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y"), 0);
transform.Translate(rotation * Time.deltaTime * 10);
Но это с течением времени отодвигает камеру от цели.
И, наконец, я не пытаюсь это сделать:
//Horizontal
Vector3 relativePos = target.position - transform.position; // Vector from camera to player
Vector3 relativePosRight = Vector3.Cross(relativePos, Vector3.left);
transform.RotateAround(target.position, relativePosRight, 100 * Time.deltaTime * Input.GetAxisRaw("Mouse X"));
//Vertical
Vector3 relativePos = target.position - transform.position; // Vector from camera to player
Vector3 relativePosRight = Vector3.Cross(relativePos,Vector3.up);
transform.RotateAround(target.position, relativePosRight, 100 * Time.deltaTime * Input.GetAxisRaw("Mouse Y"));
, который работает нормально по вертикали, но при перемещении мыши по горизонтали, кажется, также влияет на него по вертикали и вращается под странным углом.
Прошу прощения за любые очевидные ошибки в вышеприведенном, я буквально прибегаю к копированию и вставке каждого решения, которое я нахожу в Интернете, чтобы получить правильную вещь.
Заранее спасибо!