2015-12-06 1 views
1

Я пытаюсь сделать 3D-симуляцию просмотра в Unity 4, где пользователь может выбрать объект и передвинуть мышь, чтобы вращаться вокруг него (360 градусов) Я сделал много снимков, чтобы попытаться заставить его работать, но я терпеть неудачу каждый раз, любая помощь будет оценена и если она будет написана на C#, это было бы здорово! (Но это не обязательно) Заранее спасибо!C# с Unity 3D: Как заставить камеру перемещаться по объекту при перемещении пользователем мыши

+0

Я не могу понять, что вы говорите, // пользователь может выбрать объект и передвинуть мышь, чтобы повернуть вокруг него // part.can вы объясните это дальше? – AVI

ответ

0

Это другой и интересный способ :) (я использую его)

Screenshot

(Здесь, куб цель)

1) Создать сферу - Название: «Orbit Camera »- Добавить материал: Прозрачный (Alpha = 0) - Как масштаб по вашему желанию - Вращение: (0,0,0.1f)
2) Добавьте камеру в качестве« ребенка »на поверхность камеры Orbit. Позиция = (0, «y = шкала орбиты камеры», 0) Вращение = (90,0,0)
3) Создать пустой GameObject - Name: Input Control.

InputControl.cs:

public class InputControl : MonoBehaviour 
{ 
    public GameObject cameraOrbit; 

    public float rotateSpeed = 8f; 

    void Update() 
    { 
     if (Input.GetMouseButton(0)) 
     { 
      float h = rotateSpeed * Input.GetAxis("Mouse X"); 
      float v = rotateSpeed * Input.GetAxis("Mouse Y"); 

      if (cameraOrbit.transform.eulerAngles.z + v <= 0.1f || cameraOrbit.transform.eulerAngles.z + v >= 179.9f) 
       v = 0; 

      cameraOrbit.transform.eulerAngles = new Vector3(cameraOrbit.transform.eulerAngles.x, cameraOrbit.transform.eulerAngles.y + h, cameraOrbit.transform.eulerAngles.z + v); 
     } 

     float scrollFactor = Input.GetAxis("Mouse ScrollWheel"); 

     if (scrollFactor != 0) 
     { 
      cameraOrbit.transform.localScale = cameraOrbit.transform.localScale * (1f - scrollFactor); 
     } 

    } 
} 

CameraController.cs:

public class CameraController : MonoBehaviour 
{ 
    public Transform cameraOrbit; 
    public Transform target; 

    void Start() 
    { 
     cameraOrbit.position = target.position; 
    } 

    void Update() 
    { 
     transform.rotation = Quaternion.Euler(transform.rotation.x, transform.rotation.y, 0); 

     transform.LookAt(target.position); 
    } 
} 

4) Добавить CameraController.cs к камере.
5) Добавьте InputControl.cs в Управление вводом.
6) Установить общедоступные переменные в скриптах. («Орбита камеры» и «Цель»)

Вот и все. Щелчок мышью и перетаскивание: Повернуть - Мышь whell: Уменьшить масштаб.

пс. Если вы хотите, вы можете изменить цель как время выполнения.

Смежные вопросы