Unity3D中控制摄像机的问题

来源:互联网 发布:怎么投诉淘宝客服有用 编辑:程序博客网 时间:2024/04/29 08:58
那Unity3D中摄像机能有多少种用法呢?就小弟目前掌握的大概列举下:
1.静态的照射某个区域
2.第一人称跟随
3.第三人称跟随
4.通过滚轮来实现摄像机的拉远拉近效果
5.通过鼠标的左右滑动来实现摄像机在显示器上左右移动
6.在同一场景中多个摄像机切换的问题


1.第一种静态照射某个区域不用细说,在Scene视图中放置好摄像机的位置即可。
2.第一人称跟随,第三人称跟随在u3d中自带有脚本,如下图所示,只要把资源导入添加即可。


下面着重说下4,5,6点


3.通过滚轮来实现摄像机的拉远拉近效果


上代码
using UnityEngine;
using System.Collections;
  
public class camera : MonoBehaviour {
  
public float minFov = 15f;
    public float maxFov = 90f;
    public float sensitivity = 10f;
  
    void Update()
    {
      float fov = Camera.main.fieldOfView;
      fov += -Input.GetAxis("Mouse ScrollWheel") * sensitivity;
      fov = Mathf.Clamp(fov, minFov, maxFov);
      Camera.main.fieldOfView = fov;
    }
}
Mathf.Clamp的作用是将fov的数值限定在minFov和maxFov之间。
Camera.main.fieldOfView是用来设置摄像机视野的大小


4.通过鼠标的左右滑动来实现摄像机在显示器上左右移动


using UnityEngine;
using System.Collections;
  
public class camera : MonoBehaviour
{
  
     public float roate_Speed=2f;//旋转速度
     void Update()
     {
          float mousX = Input.GetAxis("Mouse X") * roate_Speed;//得到鼠标移动距离
          transform.Rotate(new Vector3(0, mousX, 0));
     }
  
}
Input.GetAxis("Mouse X")得到鼠标移动的距离,只是这个数值比较小,所以增加一个roate_Speed


5.在同一场景中多个摄像机切换的问题


var camera1:GameObject;
var camera2:GameObject;
var camera3:GameObject;
  
function Update () 
{
        if(Input.GetKeyUp(KeyCode.Alpha1))
        {
                onActiveFalse();
                camera1.active=true;
        }else if(Input.GetKeyUp(KeyCode.Alpha2))
        {
                onActiveFalse();
                camera2.active=true;
          
        }else if(Input.GetKeyUp(KeyCode.Alpha3))
        {
                onActiveFalse();
                camera3.active=true;
        }
}
function onActiveFalse()
{
        camera1.active=false;
        camera2.active=false;
        camera3.active=false;
}
0 0