Дороботка. Движения камеры - Форум - Все для Unity3d

Все для Unity3d> Дороботка. Движения камеры - Форум>
Страница 1 из 11
Форум » Unity » Вопросы » Дороботка. Движения камеры (Движение камеры (Как в MMO RPG))
Дороботка. Движения камеры
GaTaXДата: Воскресенье, 31.01.2016, 16:24 | Сообщение # 1
Новый писатель
Группа: Пользователи
Статус: Offline
Здравствуйте, бродил я на просторах интернета и нашел вот такой скрипт - 
Код
using UnityEngine;
 using System.Collections;

 public class camMove : MonoBehaviour {

       public Transform target; //Объект за которым летаем(Наш персонаж)    
       public float distance = 3.0f; //Расстояние от камеры до объекта
       public float xSpeed = 125.0f; //Чувствительность по оси X    
       public float ySpeed = 50.0f; //Чувствительность по оси Y    
       public float targetHeight = 2.0f; //Высота относительно объекта    
          
    //Лимиты    
       public float yMinLimit = -40;
       public float yMaxLimit = 80;
       //Приближение, удаление и скорость вращения камеры
       public float maxDistance = 10.0f;
       public float minDistance = 0.5f;
       public float zoomRotate = 90.0f;

       private float x = 0.0f; //Угол поворота по X
       private float y = 0.0f; //Угол поворота по Y

       [AddComponentMenu("Scripts/Mouse Orbit")] //Добавляем в меню    

       public void Start()
       {
           //переворачиваем углы    
           Vector3 angles = transform.eulerAngles;
           x = angles.y;
           y = angles.x;

           if (rigidbody)
               rigidbody.freezeRotation = true; //Если камера столкнется с физическим объектом, она остановиться    
       }

       public void LateUpdate()
       {
           if (target)
           {//Если цель установлена(Персонаж)    
               //Меняем углы согласно положению мыши    
               x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
               y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;
               //Меняем дистанцию до персонажа.    
               distance -= (Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime) * zoomRote * Mathf.Abs(distance);
               distance = Mathf.Clamp(distance, minDistance, maxDistance);

               y = ClampAngle(y, yMinLimit, yMaxLimit); //Вызов функции для ограничения углов поворота    
               if(Input.GetMouseButton(1)) playerMove.x = x; //Если нажата ПКМ, Rotate у нашего персонажа.
               //Повернуть камеру согласно полученным данным    
               Quaternion rotation = Quaternion.Euler(y, x, 0);
               transform.rotation = rotation;

               //Двигаем камеру и следим за персонажем    
               Vector3 position = rotation * new Vector3(0.0f, targetHeight + 0.5f, -distance) + target.position;
               transform.position = position;

               //Во избежание провала под ландшафт
               RaycastHit hit;
               Vector3 trueTargetPosition = target.transform.position - new Vector3(0, -targetHeight, 0);
               if (Physics.Linecast(trueTargetPosition, transform.position, out hit))
               {
                   float tempDistance = Vector3.Distance(trueTargetPosition, hit.point) - 0.28f;
                   position = target.position - (rotation * Vector3.forward * tempDistance + new Vector3(0, -targetHeight, 0));
                   transform.position = position;
               }
           }

       }
       //Меняем значения углов    
       public static float ClampAngle(float angle, float min, float max)
       {
           if (angle < -360)
               angle += 360;
           if (angle > 360)
               angle -= 360;
           return Mathf.Clamp(angle, min, max);
       }
 }

  И всё в нём хорошо если бы не 1 проблемка. Этот скрипт поворачивает камеру относительно персонажа, без условий нажатия ЛКМ. Я уже пробывал делать условия нажатия ЛКМ для поворота камеры для этой строки
             //Меняем углы согласно положению мыши    
               x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;
               y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f; , и оно работает но тогда не меняется направление персонажа относительно камеры если нажать ПКМ. Если не доставит труда то подскажите нубу что нужно сделать что бы камера вертелась вокруг персонажа только при условии зажатой ЛКМ.
 
Форум » Unity » Вопросы » Дороботка. Движения камеры (Движение камеры (Как в MMO RPG))
Страница 1 из 11
Поиск:
Свернуть
Развернуть
Необходима авторизация
0
ТОП-5 САЙТА
НОВЫЕ ИГРЫ
ГОРЯЧИЕ ТЕМЫ
СЛУЧАЙНЫЕ ФАЙЛЫ