当前位置:  开发笔记 > 编程语言 > 正文

C#和Unity 3D:当用户移动鼠标时,如何使相机在对象周围移动

如何解决《C#和Unity3D:当用户移动鼠标时,如何使相机在对象周围移动》经验,为你挑选了1个好方法。

我正在尝试在Unity 4中进行3D观看模拟,用户可以选择一个对象并移动鼠标使其绕其旋转(360度)。帮助将不胜感激,如果它是用C#编写的,那就太好了!(但这不是必须的)在此先感谢!



1> sadrag..:

这是一种不同而有趣的方式:)(我使用它)

(这里,多维数据集是目标)

1)创建球体-名称:“摄影机轨道”-添加材质:透明(Alpha = 0)-根据需要缩放-旋转:(0,0,0.1f)
2)将摄影机作为“子级”添加到摄影机轨道表面。位置=(0,“ y =摄像机轨道比例 ”,0)旋转=(90,0,0)
3)创建空GameObject- 名称:输入控件。

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添加到Camera。
5)将InputControl.cs添加到Input Control。
6)在脚本中设置公共变量。(“摄像机轨道”和“目标”)

就这样。鼠标单击并拖动:旋转-鼠标拖动:放大。

ps。如果需要,可以将目标更改为运行时。

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有