Добрый день! Не могу никак понять как сделать просмотр камерой вверх без вращения персонажа, если камера по оси у вращается вместе с персонажем. Сам в unity не так давно, сложно пока разбираться и понимать какие-то вещи, где присутствует какая-то математика.
Это скрипт самого персонажа, я использую два джойстика - один для бега, второй для вращения камеры
public class Player : MonoBehaviour
{
public SimpleTouchController leftController;
private float movementSpeed = 7.0f;
private float gravity = 20.0f;
CharacterController character;
Transform cameraTransform;
Vector3 move = Vector3.zero;
private void Start()
{
character = GetComponent<CharacterController>();
cameraTransform = Camera.main.transform;
}
void Update()
{
float horizontal = leftController.GetTouchPosition.x;
float vertical = leftController.GetTouchPosition.y;
if(character.isGrounded)
{
move = new Vector3(horizontal, 0.0f, vertical);
move = cameraTransform.TransformDirection(move);
}
move.y -= gravity * Time.deltaTime;
character.Move(move * movementSpeed * Time.deltaTime);
}
}
Это скрипт камеры
public class Camera : MonoBehaviour
{
public GameObject target; // персонаж
public SimpleTouchController rightController;
private float rotateSpeed = 5;
private Vector3 offset;
void Start()
{
offset = target.transform.position - transform.position;
}
void LateUpdate()
{
float horizontal = rightController.GetTouchPosition.x;
float vertical = rightController.GetTouchPosition.y;
target.transform.Rotate(0, horizontal, 0);
float desiredAngle = target.transform.eulerAngles.y; //берем вращение игрока в мировом пространстве
Quaternion rotation = Quaternion.Euler(0, desiredAngle, 0); //поворачиваем на y градусов вокруг оси y
transform.position = target.transform.position - (rotation * offset);
transform.LookAt(target.transform);
}
}
Перечитал и пересмотрел весь интернет, но все никак не могу разобраться в кватернионах, углах и так далее..
Буду рад любой помощи! Спасибо.