Здравствуйте. У меня вот такая проблема. Мне нужно чтоб мой персонаж смотрел строго в ту сторону, куда смотрит камера(сам персонаж ходит только страйфом). ( камера у меня РПГ типа, т.е. её можно вращять, только при зажатой ПКМ). Я пробовал это реализовать в коде, но у меня получилось не совсем то что я хочу. ( персонаж вращяется по оси Х не достаточно быстро ). Помогите решить сею проблему. Вот код камеры, и Ротейтора персонажа. ( на название класса второго кода не обращяйте внимание, придумывал от "фонаря" ХD" Код камеры:
Код
using UnityEngine; using System.Collections;
[AddComponentMenu("Camera-Control/Mouse Orbit with zoom")] public class NewCameraScript : MonoBehaviour {
//Ссылка на отслеживаемый объект public Transform target; //коэффициенты скорости по осям X Y public float xSpeed = 12.0f; public float ySpeed = 12.0f; //Скорость скрола public float scrollSpeed = 10.0f; //Максимальное и минимальное расстояние до камеры public float zoomMin = 1.0f; public float zoomMax = 30.0f; //Текущее расстояние док камеры public float distance = 15; public float Ypos; // позиция камеры public Vector3 position; public static Vector3 positionCamera; //Для передачи в скрипт управления персом //Зажата ли правая кнопка public bool isActivated; //для отслеживания позиции курсора по осям float x = 0.0f; float y = 0.0f;
//инициализация
void Start () { Vector3 angles = transform.eulerAngles; x = angles.y; y = angles.x;
// Выполняется после полного обновления сцены void LateUpdate () { if (Input.GetMouseButtonDown(1)) { isActivated = true; } if (Input.GetMouseButtonUp(1)) { isActivated = false; }
if (target && isActivated){ x += Input.GetAxis("Mouse X") * xSpeed; y -= Input.GetAxis("Mouse Y") * ySpeed;
//Движение мыши горизонтально - поворачиваемся по - х transform.RotateAround(target.position, transform.up, x); //При движении мыши вертикально по ворачиваемся по оси - Y transform.RotateAround(target.position, transform.right, y);